Nginx proxy being slow

We are trying to act as a proxy for a site within the same DMZ. Things
seem
to work fine, except when there is quite a heavy load. There are many
CSS
assets that just hang upon retrieval. Sometimes the full page comes
through;
sometimes just spins forever.

Server: nginx 1.6.1 running on Linux.
Memory: 18Gb

proxy_buffering on;
proxy_buffers 256 8k;
proxy_busy_buffers_size 64;
proxy_temp_file_write_size 64;

Under heavy loads, about 1500 requests a second, a page is not
completely
sent back to the browser as some of the CSS resources taking anywhere
from 2

  • 10 seconds to return. It will just spin until eventually it gets sent
    back. CPU and memory usage is not dramatically high. Smaller sites
    return
    without any issue at all.

Do I have the buffering wrong or is there something else at play?

Thank you

Imran

Posted at Nginx Forum:

Hello!

On Mon, Oct 06, 2014 at 09:06:19PM -0400, imran_k wrote:

proxy_busy_buffers_size 64;
Just a side note: using 64 bytes for proxy_busy_buffers_size looks
like a bad idea. Additionally, it will be rejected by nginx as
long as you use 8k proxy buffers.

proxy_temp_file_write_size 64;

Same here. 64 bytes is way too low.

Under heavy loads, about 1500 requests a second, a page is not completely
sent back to the browser as some of the CSS resources taking anywhere from 2

  • 10 seconds to return. It will just spin until eventually it gets sent
    back. CPU and memory usage is not dramatically high. Smaller sites return
    without any issue at all.

Do I have the buffering wrong or is there something else at play?

First of all, you may want to find out what causes problems you
observe. From your description I suspect you are actually
debugging listen queue overflows. When using Linux with
net.ipv4.tcp_abort_on_overflow set to 0 (which is the default) it
is not trivial to debug unless you are looking closesly into
tcpdump and/or network stats (try looking into queue sizes in “ss
-nlt”).


Maxim D.
http://nginx.org/

Thank you very much for your pointing this out. What are some good
starting
points for these figures? Some posts I read even say to disable
buffering…

The value for tcp_abort_on_overflow is set to 0 (in /proc/).

Thank you

Posted at Nginx Forum: