@andreyvlru
менеджер-программист

Раздача маленькой статики. 1500 rps. Как ускорить?

Есть потребность раздавать много миниатюр картинок. Сейчас сервера задыхаются, в час пик возникают большие задержки в отдаче статики.
Размер картинок 5-10кб.
Проводил тестирования с помощью ab
результат 1473 rps. По факту хуже так как ab запрашивал одну и ту же картинку, а в реальности их несколько миллионов.

Как думаете есть ли возможность значительно увеличить производительность серверов? Что можно подстроить в nginx и tcp/ip для быстрой отдачи картиное?

Конфиг nginx

worker_processes 8;
events
{
  worker_connections 4096;
  multi_accept on;
} 

access_log off;
log_not_found off;
error_log /var/log/nginx-error.log warn; 

open_file_cache max=2000 inactive=20s;
open_file_cache_valid 60s;
open_file_cache_min_uses 5;
open_file_cache_errors off; 

client_max_body_size 50M;
client_body_buffer_size 1m;
client_body_timeout 15;
client_header_timeout 15;
keepalive_timeout 2 2;
send_timeout 15;
sendfile on;
tcp_nopush on;
tcp_nodelay on;


Сервер
Xeon E3-1230
RAM 16Gb
Диски SATA через Software RAID 1

254f9b887b7246c59cebc6842921f148.png48aaa15ade764b9bb91f3832d8867124.pngbed4211b0f3043738bcb85af24951bd6.pngb6338faec84d4149b6318388a53bf237.png9ee4994c9a224e18b47cc06f7bd51ec1.pngee7257b23de54f458630707b5d2481db.png
  • Вопрос задан
  • 2751 просмотр
Решения вопроса 1
@neolink
если вы 1500рпс на пустом сервере запрашивали, тогда это мало для одного файла для ab должно быть минимум 5000рпс(или вы по 100мбит/c сети гоняли тесты?)
задыхаются - это в чем выражается? cpu, io?
пока действительно больше похоже на то что у вас все упирается в Io
а как у вас эти 1кк картинок лежат на диске (пример полного пути к 1 из них) ?
ну и конфиг в студию
Ответ написан
Пригласить эксперта
Ответы на вопрос 3
nazarpc
@nazarpc
Open Source enthusiast
Что если подключить CloudFlare, настроить заголовки при отдаче статики с сервера, и радоваться бесплатному CDN?
Ответ написан
MpaK999
@MpaK999
Буду!
Если есть память или еще сервер, то 2 варианта:
- балансировщик из nginx
- поставить varnish перед nginx
Ответ написан
ptchol
@ptchol
Linux system administrator
Врубите кеширование записи логов, в которые пишутся данные по запросам картинок. Как то так:
access_log /var/log/nginx/access.log main buffer=32k;
Проверьте количество соединений активных на машинке.
Нет ли в dmesg каких нибудь сообщений о переполненности nf_conntrack table ?
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы