Оптимизация Nginx и файловой системы для раздачи миллионов картинок

Имеется сервер с нагрузкой примерно в 20 000 посетителей в сутки и двумя миллионами записей. Каждая запись содержит около 20 картинок. Все картинки размещаются на отдельном сервере общим объемом почти 5 ТБ. Запрос к картинке идет через RewriteRule на нужный сервер и обрабатывается уже на нем с помощью Nginx.

Нагрузки на первый сервер почти нет, а вот второй (который содержит картинки) с каждым разом начинает отвечать все медленнее, по top средняя LA достигает 6-7 (сервер имеет 8 ядер). При этом nginx процессы часто в D state.

Попытки оптимизировать конфиг ничего не дали:

nginx.conf:

sendfile            on;
tcp_nopush          on;
tcp_nodelay         on;
keepalive_timeout   65;
types_hash_max_size 2048;
aio on;

access_log          off;
log_not_found       off;
server_tokens       off;
autoindex           off;
sendfile            on;
sendfile_max_chunk  1m;
tcp_nopush          on;
tcp_nodelay         on;
keepalive_timeout   65;
add_header          Cache-Control public;
gzip_static         on;
gzip_min_length     1000;
gzip_comp_level     2;
expires             max;
fastcgi_hide_header Set-Cookie;

Я использовал blockdev --setra 65536 для оптимизации чтения с диска, это тоже не повлияло на производительность

При этом сервер картинок имеет в районе 31 GM RAM из которых используется почему то только 300 MB максимум.

Что я еще могу сделать для увеличения производительности чтения файлов картинок с этого сервера?


Ответы (0 шт):