Заметил, что в последнее время Nginx ведет себя странно. Меряю время загрузки страницы с помощью Pingdom tools. Получается, что wait time, время ожидания до получения первого байта от веб-сервера после отправки запроса составляет до 200мс для статики и около 300-400 для динамического контента. Это слишком много, так как допустим, если на странице загружается много файлов, изображений, то загрузка может затянуться больше 10 секунд. Но временами, это же самое wait time для статики уменьшается до 10-30мс, тогда сайт начинает летать. Причем, это не зависит от нагрузки на сервер, тестировал на другом сервере, который используется для тестов и не нагружен. Никакие настройки не изменялись. В чем может быть причина такого падения скорости и как сделать, чтобы скорость постоянно была 20-30мс для статики? Для размещения сайта использую VPS.
Вот конфигурационный файл nginx:
user apache;
worker_processes auto;
events {
worker_connections 768;
multi_accept on;
use epol;
}
http {
##
# Basic Settings
##
sendfile on;
tcp_nopush on;
tcp_nodelay on;
keepalive_timeout 65;
types_hash_max_size 2048;
fastcgi_buffers 8 16k;
fastcgi_buffer_size 32k;
fastcgi_connect_timeout 300;
fastcgi_send_timeout 300;
fastcgi_read_timeout 300;
proxy_connect_timeout 900;
proxy_send_timeout 900;
proxy_read_timeout 900;
send_timeout 900;
include /etc/nginx/mime.types;
default_type application/octet-stream;
##
# SSL Settings
##
ssl_protocols TLSv1 TLSv1.1 TLSv1.2; # Dropping SSLv3, ref: POODLE
ssl_prefer_server_ciphers on;
##
# Logging Settings
##
access_log /var/log/nginx/access.log;
# Logging Settings
##
access_log /var/log/nginx/access.log;
error_log /var/log/nginx/error.log;
##
# Gzip Settings
##
gzip on;
gzip_disable "msie6";
gzip_vary on;
gzip_proxied any;
gzip_comp_level 6;
gzip_buffers 16 8k;
gzip_http_version 1.1;
gzip_types text/plain text/css application/json application/javascript text/xml application/xml application/xml+rss text/javascript;
include /etc/nginx/sites-enabled/*;
Вот результат тестирования VPS с помощью UnixBench:
BYTE UNIX Benchmarks (Version 5.1.3)
System: losst-2: GNU/Linux
OS: GNU/Linux -- 3.10.0-514.26.2.el7.x86_64 -- #1 SMP Tue Jul 4 15:04:05 UTC 2017
Machine: x86_64 (x86_64)
Language: en_US.utf8 (charmap="UTF-8", collate="UTF-8")
CPU 0: QEMU Virtual CPU version (cpu64-rhel6) (5333.5 bogomips)
x86-64, MMX, Physical Address Ext, SYSENTER/SYSEXIT, SYSCALL/SYSRET
CPU 1: QEMU Virtual CPU version (cpu64-rhel6) (5333.5 bogomips)
x86-64, MMX, Physical Address Ext, SYSENTER/SYSEXIT, SYSCALL/SYSRET
12:55:56 up 1 day, 18:05, 2 users, load average: 0.03, 0.12, 0.09; runlevel 3
------------------------------------------------------------------------
Benchmark Run: Чтв Авг 10 2017 12:55:56 - 13:24:06
2 CPUs in system; running 1 parallel copy of tests
Dhrystone 2 using register variables 28284808.1 lps (10.0 s, 7 samples)
Double-Precision Whetstone 3417.1 MWIPS (9.9 s, 7 samples)
Execl Throughput 2078.3 lps (29.9 s, 2 samples)
File Copy 1024 bufsize 2000 maxblocks 637104.1 KBps (30.0 s, 2 samples)
File Copy 256 bufsize 500 maxblocks 183080.3 KBps (30.0 s, 2 samples)
File Copy 4096 bufsize 8000 maxblocks 1412563.7 KBps (30.0 s, 2 samples)
Pipe Throughput 1210675.2 lps (10.0 s, 7 samples)
Pipe-based Context Switching 211182.8 lps (10.0 s, 7 samples)
Process Creation 4979.9 lps (30.0 s, 2 samples)
Shell Scripts (1 concurrent) 5245.5 lpm (60.0 s, 2 samples)
Shell Scripts (8 concurrent) 1115.6 lpm (60.0 s, 2 samples)
System Call Overhead 1790964.8 lps (10.0 s, 7 samples)
System Benchmarks Index Values BASELINE RESULT INDEX
Dhrystone 2 using register variables 116700.0 28284808.1 2423.7
Double-Precision Whetstone 55.0 3417.1 621.3
Execl Throughput 43.0 2078.3 483.3
File Copy 1024 bufsize 2000 maxblocks 3960.0 637104.1 1608.8
File Copy 256 bufsize 500 maxblocks 1655.0 183080.3 1106.2
File Copy 4096 bufsize 8000 maxblocks 5800.0 1412563.7 2435.5
Pipe Throughput 12440.0 1210675.2 973.2
Pipe-based Context Switching 4000.0 211182.8 528.0
Process Creation 126.0 4979.9 395.2
Shell Scripts (1 concurrent) 42.4 5245.5 1237.1
Shell Scripts (8 concurrent) 6.0 1115.6 1859.4
System Call Overhead 15000.0 1790964.8 1194.0
========
System Benchmarks Index Score 1048.2
------------------------------------------------------------------------
Benchmark Run: Чтв Авг 10 2017 13:24:06 - 13:52:17
2 CPUs in system; running 2 parallel copies of tests
Dhrystone 2 using register variables 55151033.7 lps (10.0 s, 7 samples)
Double-Precision Whetstone 6812.5 MWIPS (9.8 s, 7 samples)
Execl Throughput 5184.0 lps (30.0 s, 2 samples)
File Copy 1024 bufsize 2000 maxblocks 1055425.2 KBps (30.0 s, 2 samples)
File Copy 256 bufsize 500 maxblocks 301170.4 KBps (30.0 s, 2 samples)
File Copy 4096 bufsize 8000 maxblocks 2456330.7 KBps (30.0 s, 2 samples)
Pipe Throughput 2401592.7 lps (10.0 s, 7 samples)
Pipe-based Context Switching 386639.7 lps (10.0 s, 7 samples)
Process Creation 16219.0 lps (30.0 s, 2 samples)
Shell Scripts (1 concurrent) 8416.6 lpm (60.0 s, 2 samples)
Shell Scripts (8 concurrent) 1146.0 lpm (60.1 s, 2 samples)
System Call Overhead 3095366.9 lps (10.0 s, 7 samples)
System Benchmarks Index Values BASELINE RESULT INDEX
Dhrystone 2 using register variables 116700.0 55151033.7 4725.9
Double-Precision Whetstone 55.0 6812.5 1238.6
Execl Throughput 43.0 5184.0 1205.6
File Copy 1024 bufsize 2000 maxblocks 3960.0 1055425.2 2665.2
File Copy 256 bufsize 500 maxblocks 1655.0 301170.4 1819.8
File Copy 4096 bufsize 8000 maxblocks 5800.0 2456330.7 4235.1
Pipe Throughput 12440.0 2401592.7 1930.5
Pipe-based Context Switching 4000.0 386639.7 966.6
Process Creation 126.0 16219.0 1287.2
Shell Scripts (1 concurrent) 42.4 8416.6 1985.0
Shell Scripts (8 concurrent) 6.0 1146.0 1910.0
System Call Overhead 15000.0 3095366.9 2063.6
========
System Benchmarks Index Score 1933.2