<HTML><BODY>Добрый день.<br><br>> Статика, скажем, размером 20kb отдаётся порядка 1-1.5 секунды.<br>Самый первый вопрос - определить, кто тупит. <br>Либо тупит сервер и тогда вопрос к nginx, либо клиент и тогда вопрос не сюда.<br><br>Соберите tcp трейс на стороне сервера и посмотрите сколько времени реально уходит у nginx'а и нет ли tcp retry в сторону клиента.<br><br><br><blockquote style="border-left:1px solid #0857A6; margin:10px; padding:0 0 0 10px;">
Четверг, 5 июля 2018, 17:45 +03:00 от YuriN <nginx-forum@forum.nginx.org>:<br>
<br>
<div id="">
<div class="js-helper js-readmsg-msg">
<style type="text/css"></style>
<div>
<base target="_self" href="https://e.mail.ru/">
<div id="style_15308019540000000948_BODY">Добрый день!<br>
<br>
Имеем очень медленную отдачу закэшированной статики. Посоветуйте пожалуйста<br>
как можно ускорить работу.<br>
<br>
Статика, скажем, размером 20kb отдаётся порядка 1-1.5 секунды. При чём TTFB<br>
относительно быстрый - 200-300 ms, а доставка от nginx до браузера уже 1-1.5<br>
секунды. По логам видно, что эта статика берётся из кэша всё-таки<br>
($upstream_response_time = 0).<br>
Условия проверки: обращение к титульной странице нашего сайта - это 80<br>
запросов, 2.7Mb трафика суммарно, по https, http2.<br>
Конфиг вроде бы стандартный, без особого тюнинга (приложен)<br>
Если скачивать один только статический файл (1 запрос) - то он скачивается<br>
без этих задержек - 27 ms. <br>
<br>
Топология:<br>
nginx-сервер в нашей конфигурации является проскирующим и кэширующим<br>
сервером:<br>
кэширует статику с сервера приложений, к-ый расположен в этой же локальной<br>
сети.<br>
<br>
Ошибок на сетевых интерфейсах клиента и сервера нет. Каналы не перегружены.<br>
(Пропускная способность 1Гбит/с), И в момент обращения к nginx - загрузка<br>
максимум 5Mbit/s). В лимиты ЦПУ/память/ дисковый I/O /сеть не упираемся<br>
судя по vmstat, top, atop, zabbix. Хотя очевидно есть какое-то ограничение,<br>
про к-ое мне пока неизвестно. <br>
8 ядер, 8Gb RAM, Load average 0.00, 0.00, 0.00<br>
<br>
В error логах пусто, строки о nginx: [warn] the "ssl" directive is<br>
deprecated, use the "listen ... ssl" directive instead in /etc/nginx/conf.d/<br>
не считаю важными.<br>
<br>
Также я пробовал размещать proxy_cache_path на tmpfs (в ОЗУ) - не дало<br>
никакого прироста.<br>
<br>
nginx последний stable, из оффициального репозитория nginx.org<br>
<br>
Я проверял в разных сетях (с разным коммутационным оборудованием), на разных<br>
физических серверах, на разных дистрибутивах Linux.<br>
<br>
<br>
_____________________________________________________________<br>
<br>
Версии ПО и конфиги :<br>
root@proxy4:~# uname -a<br>
Linux proxy4 4.15.0-20-generic #21-Ubuntu SMP Tue Apr 24 06:16:15 UTC 2018<br>
x86_64 x86_64 x86_64 GNU/Linux<br>
nginx 1.14.0-0ubuntu1<br>
дефолтовые настройки sysctl<br>
root@proxy4:~# lsb_release -a<br>
Description: Ubuntu 18.04 LTS<br>
root@proxy4:~# nginx -V<br>
nginx version: nginx/1.14.0<br>
built by gcc 7.3.0 (Ubuntu 7.3.0-16ubuntu3)<br>
built with OpenSSL 1.1.0g 2 Nov 2017<br>
TLS SNI support enabled<br>
configure arguments: --prefix=/etc/nginx --sbin-path=/usr/sbin/nginx<br>
--modules-path=/usr/lib/nginx/modules --conf-path=/etc/nginx/nginx.conf<br>
--error-log-path=/var/log/nginx/error.log<br>
--http-log-path=/var/log/nginx/access.log --pid-path=/var/run/nginx.pid<br>
--lock-path=/var/run/nginx.lock<br>
--http-client-body-temp-path=/var/cache/nginx/client_temp<br>
--http-proxy-temp-path=/var/cache/nginx/proxy_temp<br>
--http-fastcgi-temp-path=/var/cache/nginx/fastcgi_temp<br>
--http-uwsgi-temp-path=/var/cache/nginx/uwsgi_temp<br>
--http-scgi-temp-path=/var/cache/nginx/scgi_temp --user=nginx --group=nginx<br>
--with-compat --with-file-aio --with-threads --with-http_addition_module<br>
--with-http_auth_request_module --with-http_dav_module<br>
--with-http_flv_module --with-http_gunzip_module<br>
--with-http_gzip_static_module --with-http_mp4_module<br>
--with-http_random_index_module --with-http_realip_module<br>
--with-http_secure_link_module --with-http_slice_module<br>
--with-http_ssl_module --with-http_stub_status_module --with-http_sub_module<br>
--with-http_v2_module --with-mail --with-mail_ssl_module --with-stream<br>
--with-stream_realip_module --with-stream_ssl_module<br>
--with-stream_ssl_preread_module --with-cc-opt='-g -O2<br>
-fdebug-prefix-map=/data/builder/debuild/nginx-1.14.0/debian/debuild-base/nginx-1.14.0=.<br>
-specs=/usr/share/dpkg/no-pie-compile.specs -fstack-protector-strong<br>
-Wformat -Werror=format-security -Wp,-D_FORTIFY_SOURCE=2 -fPIC'<br>
--with-ld-opt='-Wl,-Bsymbolic-functions<br>
-specs=/usr/share/dpkg/no-pie-link.specs -Wl,-z,relro -Wl,-z,now<br>
-Wl,--as-needed -pie'<br>
<br>
<br>
/etc/nginx/nginx.conf <br>
<br>
user www-data;<br>
worker_processes 8;<br>
error_log /var/log/nginx/error.log;<br>
pid /var/run/nginx.pid;<br>
events {<br>
worker_connections 4000;<br>
}<br>
worker_rlimit_nofile 200000;<br>
http {<br>
client_max_body_size 10m;<br>
charset utf-8;<br>
proxy_cache_path /var/cache/nginx levels=1:2 keys_zone=all:512m;<br>
include /etc/nginx/mime.types;<br>
default_type application/octet-stream;<br>
log_format main '$remote_addr - $remote_user [$time_local] "$request"<br>
'<br>
'$status $body_bytes_sent "$http_referer" '<br>
'"$http_user_agent" "$http_x_forwarded_for"<br>
$upstream_response_time';<br>
access_log /var/log/nginx/access.log main buffer=16k;<br>
server_tokens off;<br>
client_body_buffer_size 128k;<br>
keepalive_requests 1000;<br>
sendfile on;<br>
sendfile_max_chunk 512k;<br>
proxy_buffering on;<br>
open_file_cache max=200000 inactive=20s;<br>
open_file_cache_valid 30s;<br>
open_file_cache_min_uses 2;<br>
open_file_cache_errors on;<br>
keepalive_timeout 65;<br>
include /etc/nginx/conf.d/*.conf;<br>
}<br>
<br>
<br>
/etc/nginx/conf.d/beta.domain.ru.conf<br>
<br>
proxy_cache_path /tmp/nginx_CACHE_ZONE keys_zone=CACHE:2048M;<br>
proxy_temp_path /tmp/nginx_temp;<br>
upstream backend {<br>
server 195.209.xx:80;<br>
}<br>
upstream backend_old {<br>
server 195.209.xx:8098;<br>
}<br>
server {<br>
listen 443 ssl http2;<br>
server_name <a href="https://e.mail.ru/cgi-bin/link?check=1&refresh=1&cnf=fcc9ac&url=&msgid=15308019540000000948&x-email=vp7%40mail.ru" target="_blank">www.domain.ru;</a><br>
access_log /var/log/nginx/www.domain.ru.access.log main buffer=16k;<br>
error_log /var/log/nginx/www.domain.ru.error.log;<br>
client_max_body_size 20m;<br>
keepalive_timeout 60;<br>
gzip on;<br>
gzip_proxied any;<br>
gzip_types *; <br>
gzip_vary on; <br>
ssl on;<br>
ssl_certificate /etc/dehydrated/certs/domain.ru/fullchain.pem;<br>
ssl_certificate_key /etc/dehydrated/certs/domain.ru/privkey.pem;<br>
ssl_session_timeout 5m;<br>
ssl_protocols TLSv1 TLSv1.1 TLSv1.2;<br>
ssl_ciphers 'EECDH+AESGCM:EDH+AESGCM:AES256+EECDH:AES256+EDH';<br>
ssl_prefer_server_ciphers on;<br>
ssl_dhparam /etc/nginx/ssl/crt/dhparam.pem;<br>
charset utf-8;<br>
proxy_send_timeout 300;<br>
proxy_read_timeout 300;<br>
location = / {<br>
proxy_cache_valid 200 301 302 304 5m;<br>
proxy_cache_key<br>
"$request_method|$http_if_modified_since|$http_if_none_match|$host|$request_uri";<br>
proxy_hide_header "Set-Cookie";<br>
proxy_ignore_headers "Cache-Control" "Expires";<br>
proxy_cache_use_stale error timeout invalid_header http_500 http_502<br>
http_503 http_504;<br>
proxy_cache CACHE;<br>
proxy_redirect off;<br>
proxy_set_header Host $host;<br>
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;<br>
proxy_pass http://backend;<br>
}<br>
location ~*<br>
^(/static/|/buildpack/|/assets/|/devadm/|/desktop/|/bitrix/|/jsframework/|/templates/|/upload/|/tmp/).+\.(jpg|jpeg|gif|png|ico|css|css.*|js|js.*|swf|txt|ico|svg|woff2)$<br>
{<br>
expires 1h;<br>
add_header Cache-Control public;<br>
proxy_hide_header "Set-Cookie";<br>
proxy_pass http://backend;<br>
proxy_cache CACHE;<br>
proxy_cache_valid 1h;<br>
}<br>
location / {<br>
proxy_set_header Accept-Encoding "";<br>
sub_filter 'http://' 'https://';<br>
sub_filter_once off;<br>
<br>
proxy_redirect off;<br>
proxy_set_header Host $http_host;<br>
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;<br>
proxy_pass http://backend_old;<br>
}<br>
}<br>
<br>
root@proxy4:~# vmstat 1<br>
procs -----------memory---------- ---swap-- -----io---- -system--<br>
------cpu-----<br>
r b swpd free buff cache si so bi bo in cs us sy id<br>
wa st<br>
1 0 0 7716604 25012 264788 0 0 4 2 54 36 0 0 100<br>
0 0<br>
0 0 0 7716632 25012 264788 0 0 0 0 418 286 0 0 100<br>
0 0<br>
0 0 0 7716664 25020 264784 0 0 0 28 408 285 0 0 100<br>
0 0<br>
0 0 0 7716728 25020 264788 0 0 0 0 434 300 0 0 100<br>
0 0<br>
0 0 0 7716600 25020 264788 0 0 0 0 411 290 0 0 100<br>
0 0<br>
0 0 0 7716604 25020 264804 0 0 0 28 615 305 1 0 99 <br>
0 0<br>
0 0 0 7716604 25020 264804 0 0 0 0 582 283 0 0 99 <br>
0 0<br>
0 0 0 7716508 25020 264804 0 0 0 0 396 256 0 0 100<br>
0 0<br>
<br>
Posted at Nginx Forum: <a href="https://forum.nginx.org/read.php?21,280414,280414#msg-280414" target="_blank">https://forum.nginx.org/read.php?21,280414,280414#msg-280414</a><br>
<br>
_______________________________________________<br>
nginx-ru mailing list<br>
<a href="mailto:nginx-ru@nginx.org">nginx-ru@nginx.org</a><br>
<a href="http://mailman.nginx.org/mailman/listinfo/nginx-ru" target="_blank">http://mailman.nginx.org/mailman/listinfo/nginx-ru</a><br data-mce-bogus="1"></div>
<base target="_self" href="https://e.mail.ru/">
</div>
</div>
</div>
</blockquote>
<br>
<br>---<br>С уважением,<br> Виталий<br></BODY></HTML>