<div dir="ltr">Добрый вечер, коллеги<br><br>Помогите, пожалуйста, разобраться с тормозами при отдаче статики (файлы порядка 2-4 МБайт, около 700-1000 rps, keep-alive не используется со стороны клиента (!), 99% клиентских сессий - с localhost, отдача начинает тормозить где-то на 2.7-3 Gbps)<br>
<br>проблема выглядит как периодическое "залипание" загрузки файла на некоторый интервал (от долей секунды до нескольких секунд).<br><br>Конфигурация:<div><br><font face="courier new, monospace">worker_processes 16;<br>
worker_rlimit_nofile 21000;</font></div><div><font face="courier new, monospace">worker_priority -5;<br>error_log /var/log/nginx/error.log;<br>pid /var/run/nginx.pid;<br>timer_resolution 100ms;<br>
events {<br> worker_connections 10240;<br> use epoll;<br>}</font></div><div><font face="courier new, monospace">http {<br> sendfile on;<br># sendfile_max_chunk 1m;<br> open_file_cache max=10240 inactive=300s;<br>
open_file_cache_valid 2000s;<br> open_file_cache_min_uses 1;<br> open_file_cache_errors on;<br># aio on;<br># directio 4k;<br># directio_alignment 4k;<br>
# output_buffers 128 512k;<br> keepalive_timeout 60;<br> underscores_in_headers on;<br> server_tokens off;<br> tcp_nodelay on;</font></div><div>
<font face="courier new, monospace"><br></font></div><div><font face="courier new, monospace"> ...</font></div><div><font face="courier new, monospace">}<br></font><br>Всё что закомментировано - проверялось без результата.<br>
<br>Для теста сделал tmpfs (чтобы исключить тормоза HDD), поставил рядом apache2 (чтобы минимизировать вероятность тормозов сетевого стека), с соседнего сервера делаю запрос на файл в tmpfs, apache выдаёт его стабильно с 24-25MBps, nginx тот же файл - в лучшем случае 12MBps,<br>
<br>Затыки также замечаются и на локалхосте. Скорость - от тех же 12MBps до 720MBps. Апач стабильно держит >1GBps. Вот пример времени выполнения запросов с локалхоста:</div><div><br></div><div><div><font face="courier new, monospace">real<span class="" style="white-space:pre"> </span>0m4.167s</font></div>
<div><font face="courier new, monospace">user<span class="" style="white-space:pre"> </span>0m0.008s</font></div><div><font face="courier new, monospace">sys<span class="" style="white-space:pre"> </span>0m0.042s</font></div>
<div><font face="courier new, monospace"><br></font></div><div><font face="courier new, monospace">real<span class="" style="white-space:pre"> </span>0m2.085s</font></div><div><font face="courier new, monospace">user<span class="" style="white-space:pre"> </span>0m0.006s</font></div>
<div><font face="courier new, monospace">sys<span class="" style="white-space:pre"> </span>0m0.049s</font></div><div><font face="courier new, monospace"><br></font></div><div><font face="courier new, monospace">real<span class="" style="white-space:pre"> </span>0m2.079s</font></div>
<div><font face="courier new, monospace">user<span class="" style="white-space:pre"> </span>0m0.007s</font></div><div><font face="courier new, monospace">sys<span class="" style="white-space:pre"> </span>0m0.055s</font></div>
<div><font face="courier new, monospace"><br></font></div><div><font face="courier new, monospace">real<span class="" style="white-space:pre"> </span>0m0.623s</font></div><div><font face="courier new, monospace">user<span class="" style="white-space:pre"> </span>0m0.007s</font></div>
<div><font face="courier new, monospace">sys<span class="" style="white-space:pre"> </span>0m0.064s</font></div><div><font face="courier new, monospace"><br></font></div><div><font face="courier new, monospace">real<span class="" style="white-space:pre"> </span>0m1.225s</font></div>
<div><font face="courier new, monospace">user<span class="" style="white-space:pre"> </span>0m0.004s</font></div><div><font face="courier new, monospace">sys<span class="" style="white-space:pre"> </span>0m0.052s</font></div>
<div><font face="courier new, monospace"><br></font></div><div><font face="courier new, monospace">real<span class="" style="white-space:pre"> </span>0m0.333s</font></div><div><font face="courier new, monospace">user<span class="" style="white-space:pre"> </span>0m0.005s</font></div>
<div><font face="courier new, monospace">sys<span class="" style="white-space:pre"> </span>0m0.057s</font></div><div><font face="courier new, monospace"><br></font></div><div><font face="courier new, monospace">real<span class="" style="white-space:pre"> </span>0m2.097s</font></div>
<div><font face="courier new, monospace">user<span class="" style="white-space:pre"> </span>0m0.004s</font></div><div><font face="courier new, monospace">sys<span class="" style="white-space:pre"> </span>0m0.058s</font></div>
<br><b><font face="arial, helvetica, sans-serif">ОС:</font></b><font face="courier new, monospace"> 2.6.32-358.6.2.el6.x86_64 #1 SMP Thu May 16 20:59:36 UTC 2013 x86_64 x86_64 x86_64 GNU/Linux</font><br><br><font face="courier new, monospace">net.core.netdev_max_backlog=20480<br>
net.core.rmem_default=131072<br>net.core.rmem_max=1310720<br>net.core.somaxconn=2048<br>net.core.wmem_default=131072<br>net.core.wmem_max=1310720<br>net.ipv4.conf.all.accept_redirects=0<br>net.ipv4.conf.all.accept_source_route=0<br>
net.ipv4.conf.all.log_martians=1<br>net.ipv4.conf.all.rp_filter=0<br>net.ipv4.conf.all.secure_redirects=0<br>net.ipv4.conf.all.send_redirects=0<br>net.ipv4.conf.default.accept_redirects=0<br>net.ipv4.conf.default.accept_source_route=0<br>
net.ipv4.conf.default.rp_filter=0<br>net.ipv4.conf.default.secure_redirects=0<br>net.ipv4.conf.default.send_redirects=0<br>net.ipv4.icmp_echo_ignore_broadcasts=1<br>net.ipv4.icmp_ignore_bogus_error_responses=1<br>net.ipv4.ip_forward=0<br>
net.ipv4.tcp_dsack=1<br>net.ipv4.tcp_mem=24576 32768 131072<br>net.ipv4.tcp_rmem=4096 65536 524288<br>net.ipv4.tcp_sack=1<br>net.ipv4.tcp_syncookies=1<br>net.ipv4.tcp_window_scaling=1<br>net.ipv4.tcp_wmem=4096 65536 524288<br>
net.ipv4.udp_mem=8388608 12582912 33554432<br>net.ipv4.udp_rmem_min=16384<br>net.ipv4.udp_wmem_min=16384</font><br><br>проверялось также с:<br><span style="font-family:'courier new',monospace">net.ipv4.tcp_sack=0</span></div>
<div><font face="arial, helvetica, sans-serif">, бОльшими числами в</font><font face="courier new, monospace"> </font><span style="font-family:'courier new',monospace">tcp_mem, </span><span style="font-family:'courier new',monospace">tcp_wmem</span><br>
</div><div>, бОльшим числом worker'ов (до 32)</div><div><br></div><div>результат одинаков.<br></div><div><br></div><div>LA на сервере высокий (в основном, из-за чтения с HDD), на 16 ядрах держится около 16.<br><br>Что я не так готовлю?<br>
<br></div></div>