Plug POST performance

I’ve tried benching SimplePlug on my MBP. I built an OTP release and ran the 3min test. Here’s what I got:

Running 3m test @ http://localhost:4000/
  2 threads and 40 connections
  Thread Stats   Avg      Stdev     Max   +/- Stdev
    Latency    27.05ms   72.63ms 804.03ms   88.79%
    Req/Sec    25.74k     8.24k   35.75k    86.90%
  Latency Distribution
     50%  705.00us
     75%    1.09ms
     90%  121.27ms
     99%  312.24ms
  8003062 requests in 3.00m, 1.41GB read
Requests/sec:  44441.19
Transfer/sec:      8.02MB

The latency leaves a lot to be desired, but the throughput is nice. I’ve also seen varying results on repeatable runs. For example, this one had better (but still not good) latency, but a lower throughput:

Running 3m test @ http://localhost:4000/
  2 threads and 40 connections
  Thread Stats   Avg      Stdev     Max   +/- Stdev
    Latency    10.71ms   44.46ms 558.37ms   94.47%
    Req/Sec    27.17k     6.56k   49.11k    90.48%
  Latency Distribution
     50%  644.00us
     75%    0.90ms
     90%    1.44ms
     99%  242.17ms
  7420593 requests in 3.00m, 1.31GB read
  Socket errors: connect 0, read 1, write 0, timeout 0
Requests/sec:  41206.18
Transfer/sec:      7.43MB

For some shorter tests, I was able to get more stellar results:

Running 30s test @ http://localhost:4000/
  2 threads and 40 connections
  Thread Stats   Avg      Stdev     Max   +/- Stdev
    Latency     1.52ms    8.52ms 169.09ms   98.74%
    Req/Sec    28.17k     3.94k   33.88k    81.51%
  Latency Distribution
     50%  651.00us
     75%    0.87ms
     90%    1.18ms
     99%   17.46ms
  1638500 requests in 30.04s, 295.63MB read
Requests/sec:  54550.41
Transfer/sec:      9.84MB

I didn’t investigate this deeper. One possible reason is that this is my devbox, and there’s a bunch of stuff running on the system. It probably didn’t help that the load test was running on the same box as well. Also, since it’s OS X, I couldn’t play with +sbt flags which might make a difference.

Given the numbers I get locally on a devbox where a lot of other apps are running in the background, I’m fairly confident that better results can be observed on the dedicated server.