Welcome! Log In Create A New Profile

Advanced

Почему статические файлы (20Кб) в локальной сети(1Gbit/s) отдаются 1,5 секунды?

July 05, 2018 10:45AM
Добрый день!

Имеем очень медленную отдачу закэшированной статики. Посоветуйте пожалуйста как можно ускорить работу.

Статика, скажем, размером 20kb отдаётся порядка 1-1.5 секунды. При чём TTFB относительно быстрый - 200-300 ms, а доставка от nginx до браузера уже 1-1.5 секунды. По логам видно, что эта статика берётся из кэша всё-таки ($upstream_response_time = 0).
Условия проверки: обращение к титульной странице нашего сайта - это 80 запросов, 2.7Mb трафика суммарно, по https, http2.
Конфиг вроде бы стандартный, без особого тюнинга (приложен)
Если скачивать один только статический файл (1 запрос) - то он скачивается без этих задержек - 27 ms.

Топология:
nginx-сервер в нашей конфигурации является проскирующим и кэширующим сервером:
кэширует статику с сервера приложений, к-ый расположен в этой же локальной сети.

Ошибок на сетевых интерфейсах клиента и сервера нет. Каналы не перегружены. (Пропускная способность 1Гбит/с), И в момент обращения к nginx - загрузка максимум 5Mbit/s). В лимиты ЦПУ/память/ дисковый I/O /сеть не упираемся судя по vmstat, top, atop, zabbix. Хотя очевидно есть какое-то ограничение, про к-ое мне пока неизвестно.
8 ядер, 8Gb RAM, Load average 0.00, 0.00, 0.00

В error логах пусто, строки о nginx: [warn] the "ssl" directive is deprecated, use the "listen ... ssl" directive instead in /etc/nginx/conf.d/ не считаю важными.

Также я пробовал размещать proxy_cache_path на tmpfs (в ОЗУ) - не дало никакого прироста.

nginx последний stable, из оффициального репозитория nginx.org

Я проверял в разных сетях (с разным коммутационным оборудованием), на разных физических серверах, на разных дистрибутивах Linux.


_____________________________________________________________

Версии ПО и конфиги :
root@proxy4:~# uname -a
Linux proxy4 4.15.0-20-generic #21-Ubuntu SMP Tue Apr 24 06:16:15 UTC 2018 x86_64 x86_64 x86_64 GNU/Linux
nginx 1.14.0-0ubuntu1
дефолтовые настройки sysctl
root@proxy4:~# lsb_release -a
Description: Ubuntu 18.04 LTS
root@proxy4:~# nginx -V
nginx version: nginx/1.14.0
built by gcc 7.3.0 (Ubuntu 7.3.0-16ubuntu3)
built with OpenSSL 1.1.0g 2 Nov 2017
TLS SNI support enabled
configure arguments: --prefix=/etc/nginx --sbin-path=/usr/sbin/nginx --modules-path=/usr/lib/nginx/modules --conf-path=/etc/nginx/nginx.conf --error-log-path=/var/log/nginx/error.log --http-log-path=/var/log/nginx/access.log --pid-path=/var/run/nginx.pid --lock-path=/var/run/nginx.lock --http-client-body-temp-path=/var/cache/nginx/client_temp --http-proxy-temp-path=/var/cache/nginx/proxy_temp --http-fastcgi-temp-path=/var/cache/nginx/fastcgi_temp --http-uwsgi-temp-path=/var/cache/nginx/uwsgi_temp --http-scgi-temp-path=/var/cache/nginx/scgi_temp --user=nginx --group=nginx --with-compat --with-file-aio --with-threads --with-http_addition_module --with-http_auth_request_module --with-http_dav_module --with-http_flv_module --with-http_gunzip_module --with-http_gzip_static_module --with-http_mp4_module --with-http_random_index_module --with-http_realip_module --with-http_secure_link_module --with-http_slice_module --with-http_ssl_module --with-http_stub_status_module --with-http_sub_module --with-http_v2_module --with-mail --with-mail_ssl_module --with-stream --with-stream_realip_module --with-stream_ssl_module --with-stream_ssl_preread_module --with-cc-opt='-g -O2 -fdebug-prefix-map=/data/builder/debuild/nginx-1.14.0/debian/debuild-base/nginx-1.14.0=. -specs=/usr/share/dpkg/no-pie-compile.specs -fstack-protector-strong -Wformat -Werror=format-security -Wp,-D_FORTIFY_SOURCE=2 -fPIC' --with-ld-opt='-Wl,-Bsymbolic-functions -specs=/usr/share/dpkg/no-pie-link.specs -Wl,-z,relro -Wl,-z,now -Wl,--as-needed -pie'


/etc/nginx/nginx.conf

user www-data;
worker_processes 8;
error_log /var/log/nginx/error.log;
pid /var/run/nginx.pid;
events {
worker_connections 4000;
}
worker_rlimit_nofile 200000;
http {
client_max_body_size 10m;
charset utf-8;
proxy_cache_path /var/cache/nginx levels=1:2 keys_zone=all:512m;
include /etc/nginx/mime.types;
default_type application/octet-stream;
log_format main '$remote_addr - $remote_user [$time_local] "$request" '
'$status $body_bytes_sent "$http_referer" '
'"$http_user_agent" "$http_x_forwarded_for" $upstream_response_time';
access_log /var/log/nginx/access.log main buffer=16k;
server_tokens off;
client_body_buffer_size 128k;
keepalive_requests 1000;
sendfile on;
sendfile_max_chunk 512k;
proxy_buffering on;
open_file_cache max=200000 inactive=20s;
open_file_cache_valid 30s;
open_file_cache_min_uses 2;
open_file_cache_errors on;
keepalive_timeout 65;
include /etc/nginx/conf.d/*.conf;
}


/etc/nginx/conf.d/beta.domain.ru.conf

proxy_cache_path /tmp/nginx_CACHE_ZONE keys_zone=CACHE:2048M;
proxy_temp_path /tmp/nginx_temp;
upstream backend {
server 195.209.xx:80;
}
upstream backend_old {
server 195.209.xx:8098;
}
server {
listen 443 ssl http2;
server_name www.domain.ru;
access_log /var/log/nginx/www.domain.ru.access.log main buffer=16k;
error_log /var/log/nginx/www.domain.ru.error.log;
client_max_body_size 20m;
keepalive_timeout 60;
gzip on;
gzip_proxied any;
gzip_types *;
gzip_vary on;
ssl on;
ssl_certificate /etc/dehydrated/certs/domain.ru/fullchain.pem;
ssl_certificate_key /etc/dehydrated/certs/domain.ru/privkey.pem;
ssl_session_timeout 5m;
ssl_protocols TLSv1 TLSv1.1 TLSv1.2;
ssl_ciphers 'EECDH+AESGCM:EDH+AESGCM:AES256+EECDH:AES256+EDH';
ssl_prefer_server_ciphers on;
ssl_dhparam /etc/nginx/ssl/crt/dhparam.pem;
charset utf-8;
proxy_send_timeout 300;
proxy_read_timeout 300;
location = / {
proxy_cache_valid 200 301 302 304 5m;
proxy_cache_key "$request_method|$http_if_modified_since|$http_if_none_match|$host|$request_uri";
proxy_hide_header "Set-Cookie";
proxy_ignore_headers "Cache-Control" "Expires";
proxy_cache_use_stale error timeout invalid_header http_500 http_502 http_503 http_504;
proxy_cache CACHE;
proxy_redirect off;
proxy_set_header Host $host;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_pass http://backend;
}
location ~* ^(/static/|/buildpack/|/assets/|/devadm/|/desktop/|/bitrix/|/jsframework/|/templates/|/upload/|/tmp/).+\.(jpg|jpeg|gif|png|ico|css|css.*|js|js.*|swf|txt|ico|svg|woff2)$ {
expires 1h;
add_header Cache-Control public;
proxy_hide_header "Set-Cookie";
proxy_pass http://backend;
proxy_cache CACHE;
proxy_cache_valid 1h;
}
location / {
proxy_set_header Accept-Encoding "";
sub_filter 'http://' 'https://';
sub_filter_once off;

proxy_redirect off;
proxy_set_header Host $http_host;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_pass http://backend_old;
}
}

root@proxy4:~# vmstat 1
procs -----------memory---------- ---swap-- -----io---- -system-- ------cpu-----
r b swpd free buff cache si so bi bo in cs us sy id wa st
1 0 0 7716604 25012 264788 0 0 4 2 54 36 0 0 100 0 0
0 0 0 7716632 25012 264788 0 0 0 0 418 286 0 0 100 0 0
0 0 0 7716664 25020 264784 0 0 0 28 408 285 0 0 100 0 0
0 0 0 7716728 25020 264788 0 0 0 0 434 300 0 0 100 0 0
0 0 0 7716600 25020 264788 0 0 0 0 411 290 0 0 100 0 0
0 0 0 7716604 25020 264804 0 0 0 28 615 305 1 0 99 0 0
0 0 0 7716604 25020 264804 0 0 0 0 582 283 0 0 99 0 0
0 0 0 7716508 25020 264804 0 0 0 0 396 256 0 0 100 0 0
Subject Author Posted

Почему статические файлы (20Кб) в локальной сети(1Gbit/s) отдаются 1,5 секунды?

YuriN July 05, 2018 10:45AM

Re: Почему статические файлы (20Кб) в локальной сети(1Gbit/s) отдаются 1,5 секунды?

vp7 July 05, 2018 10:58AM

Re: Почему статические файлы (20Кб) в локальной сети(1Gbit/s) отдаются 1,5 секунды?

YuriN July 05, 2018 11:07AM

Re: Почему статические файлы (20Кб) в локальной сети(1Gbit/s) отдаются 1,5 секунды?

Evgeniy Berdnikov July 05, 2018 02:38PM

Re: Почему статические файлы (20Кб) в локальной сети(1Gbit/s) отдаются 1,5 секунды?

YuriN July 06, 2018 08:41AM

Re: Почему статические файлы (20Кб) в локальной сети(1Gbit/s) отдаются 1,5 секунды?

Slawa Olhovchenkov July 06, 2018 08:58AM

Re: Почему статические файлы (20Кб) в локальной сети(1Gbit/s) отдаются 1,5 секунды?

YuriN July 06, 2018 11:19AM

Re: Почему статические файлы (20Кб) в локальной сети(1Gbit/s) отдаются 1,5 секунды?

Evgeniy Berdnikov July 06, 2018 12:38PM



Sorry, only registered users may post in this forum.

Click here to login

Online Users

Guests: 224
Record Number of Users: 8 on April 13, 2023
Record Number of Guests: 421 on December 02, 2018
Powered by nginx      Powered by FreeBSD      PHP Powered      Powered by MariaDB      ipv6 ready