Всем доброго времени суток.
Итак вводная - нужно раздавать статику. centos 6.9 final, 4 ядра, какой-то объём свободной памяти. сборка nginx-а.
nginx version: nginx/1.13.8
built by gcc 4.4.7 20120313 (Red Hat 4.4.7-18) (GCC)
built with OpenSSL 1.0.1e-fips 11 Feb 2013
TLS SNI support enabled
configure arguments: --prefix=/etc/nginx --sbin-path=/usr/sbin/nginx --modules-path=/usr/lib64/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='-O2 -g -pipe -Wall -Wp,-D_FORTIFY_SOURCE=2 -fexceptions -fstack-protector --param=ssp-buffer-size=4 -m64 -mtune=generic -fPIC' --with-ld-opt='-Wl,-z,relro -Wl,-z,now -pie'
proxy_cache_path /dev/shm/nginx levels=1:2 keys_zone=static_cache:320m inactive=320m max_size=500M;
proxy_cache_min_uses 1;
server {
listen 80;
server_name static.host.com;;
location / {
proxy_cache static_cache;
proxy_cache_valid 200 1y;
proxy_set_header Host nocache.static.host.com;
proxy_pass http://127.0.0.1;
access_log off;
}
}
server {
listen 80;
server_name nocache.static.host.com;
location / {
allow 127.0.0.1;
deny all;
root /home/user/sites/static.host.com/htdocs;
access_log off;
error_log /dev/null crit;
}
}
worker_processes 4;
events {
use epoll;
worker_connections 4096;
multi_accept on;
}
http {
...
sendfile on;
sendfile_max_chunk 512k;
tcp_nopush on;
tcp_nodelay on;
keepalive_timeout 65;
types_hash_max_size 2048;
open_file_cache max=200000 inactive=20s;
open_file_cache_valid 30s;
keepalive_requests 100;
reset_timedout_connection on;
client_body_timeout 10;
send_timeout 2;
...
}
/dev/shm - это диск в памяти. Я рассуждаю так - фронт при получении запроса обращается либо в свой кеш, либо к бэкэнду; Канал на выдачу гарантированные 300Мбит/с; канал откуда ведётся тест - порядка 100Мбит/с, свободен при тесте ( 50 параллельных запросов ); но почему-то при тестовом заборе файлика размером 250Кб - я получаю максимальную скорость его отдачи около 1с, хотя ожидаю что-то не более чем 0.1с. Статику будут забирать в 20-30 параллельных коннектов, клиентов может прийти больше одного, сейчас меня это немного пугает ( клиент это unity-приложение ). Проблемой занялся, т.к. у разработчиков unity-приложения прогрузилась лишь половина изображений при тестовом пуске, кивают на меня.