I probably cannot help, but I'm curious about your mongrel2.conf Also, did you try benchmarking the service as a Handler?
att, -- Paul Eipper On Mon, Jul 21, 2014 at 7:18 PM, John Jelinek IV <[email protected]> wrote: > Hi all, > > I am evaluating mongrel2 and wanted to get some simple perf benchmarks, so I > am using httperf to establish my baseline to proxy a service. > > Here I am hitting the service directly: > > ``` > $ httperf --hog --server localhost --port 3000 --uri /100 --num-conn 200 > --num-call 50 > httperf --hog --client=0/1 --server=localhost --port=3000 --uri=/100 > --send-buffer=4096 --recv-buffer=16384 --num-conns=200 --num-calls=50 > httperf: warning: open file limit > FD_SETSIZE; limiting max. # of open > files to FD_SETSIZE > Maximum connect burst length: 1 > > Total: connections 200 requests 10000 replies 10000 test-duration 2.011 s > > Connection rate: 99.5 conn/s (10.1 ms/conn, <=1 concurrent connections) > Connection time [ms]: min 8.4 avg 10.1 max 28.8 median 9.5 stddev 2.2 > Connection time [ms]: connect 0.1 > Connection length [replies/conn]: 50.000 > > Request rate: 4973.8 req/s (0.2 ms/req) > Request size [B]: 65.0 > > Reply rate [replies/s]: min 0.0 avg 0.0 max 0.0 stddev 0.0 (0 samples) > Reply time [ms]: response 0.2 transfer 0.0 > Reply size [B]: header 163.0 content 21.0 footer 0.0 (total 184.0) > Reply status: 1xx=0 2xx=10000 3xx=0 4xx=0 5xx=0 > > CPU time [s]: user 0.32 system 1.69 (user 15.9% system 84.1% total 100.0%) > Net I/O: 1209.4 KB/s (9.9*10^6 bps) > > Errors: total 0 client-timo 0 socket-timo 0 connrefused 0 connreset 0 > Errors: fd-unavail 0 addrunavail 0 ftab-full 0 other 0 > ``` > > Here I am hitting the service through mongrel2's proxy feature: > > ``` > $ httperf --hog --server localhost --port 8080 --uri /100 --num-conn 200 > --num-call 50 > httperf --hog --client=0/1 --server=localhost --port=8080 --uri=/100 > --send-buffer=4096 --recv-buffer=16384 --num-conns=200 --num-calls=50 > httperf: warning: open file limit > FD_SETSIZE; limiting max. # of open > files to FD_SETSIZE > Maximum connect burst length: 1 > > Total: connections 200 requests 10000 replies 10000 test-duration 637.910 s > > Connection rate: 0.3 conn/s (3189.5 ms/conn, <=1 concurrent connections) > Connection time [ms]: min 2829.2 avg 3189.5 max 3307.2 median 3216.5 stddev > 88.2 > Connection time [ms]: connect 0.1 > Connection length [replies/conn]: 50.000 > > Request rate: 15.7 req/s (63.8 ms/req) > Request size [B]: 65.0 > > Reply rate [replies/s]: min 15.2 avg 15.7 max 17.4 stddev 0.5 (127 samples) > Reply time [ms]: response 63.8 transfer 0.0 > Reply size [B]: header 163.0 content 21.0 footer 0.0 (total 184.0) > Reply status: 1xx=0 2xx=10000 3xx=0 4xx=0 5xx=0 > > CPU time [s]: user 103.46 system 534.38 (user 16.2% system 83.8% total > 100.0%) > Net I/O: 3.8 KB/s (0.0*10^6 bps) > > Errors: total 0 client-timo 0 socket-timo 0 connrefused 0 connreset 0 > Errors: fd-unavail 0 addrunavail 0 ftab-full 0 other 0 > ``` > > I am wondering why Mongrel2 is handling these requests so much slower. Is > that normal? Maybe some DDOS prevention mechanism? For a low-latency, > high-traffic API, this kind of traffic might not be considered a DDOS. I'd > love your feedback. > > Note - this is the service I'm testing in this scenario: > https://github.com/glenjamin/node-fib/blob/master/app.js > > Thanks, > --John Jelinek IV
