Оптимизация 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 максимум.
Что я еще могу сделать для увеличения производительности чтения файлов картинок с этого сервера?