Kernel stall while testing high-speed HTTPS traffic.

Maxim Dounin mdounin at mdounin.ru
Mon Jun 1 16:04:46 UTC 2015


Hello!

On Thu, May 28, 2015 at 12:26:55PM -0700, Ben Greear wrote:

> We are seeing problems with Nginx (mostly)locking up the server when
> running high loads of HTTPS traffic.
> 
> This scenario we had nginx configured to
> bind to eth3 but our ssh sessions on eth0 were frozen during this condition as well.
> The system restores itself after a few minutes, (the load generation would
> have stopped after a minute or two of lockup, that may be what lets things
> recover).

[...]

> === Scenario ===
> Load testing box has a direct connection to eth3->eth3 over 10Gbps port.
> 
> Curl clients using https, keepalive, requesting a 1MB file:
> 1000 clients @ 0.25 req/sec = 243 req/sec, 2.2Gbps tx, load 8.3
>  400 clients @ 0.65 req/sec = 260 req/sec, 2.2Gbps tx, load 9.2

[...]

>    directio            1m;

As you are testing with 1m file, and have "directio 1m" in your 
configuration, you are probably reading your files straigh off the 
disk, bypassing filesystem caches.  Given the fact that you are 
using default output_buffers, this is likely to cause lots of disk 
IO requests with such a workload, and likely cause the problem you 
see.  Adding something like "output_buffers 1 1m;" and/or removing 
"directio" should help.

(Note that you won't see the problem with plain HTTP, as you have 
sendfile enabled in your config, likely resulting in more 
effecient disk usage.  The problem appears with HTTPS because 
sendfile() can't be used with encrypted connections.)

(Either way, this topic looks unrelated to nginx-devel at .)

-- 
Maxim Dounin
http://nginx.org/



More information about the nginx-devel mailing list