У меня настроена простая служба REST, которая изначально (автономный исполняемый файл) обрабатывает 135 тыс./об/с.
Служба работает на локальном хосте: 8181.
Тест autocannon, запущенный на отдельной машине, дает:
— ... ... â â â ¬ â â â ¬ â â ... â
– Стат – 1% – 2,5% – 50% – 97,5% – Ср – Stdev – Мин –
â················································ - ... ... ...
– Запрос/сек – 58335 – 58335 – 109247 – 135039 – 106779,2 – 18509,53 – 58312 –
â················································ - ... ... ...
– байт/с – 9,74 МБ – 9,74 МБ – 18,3 МБ – 22,5 МБ – 17,8 МБ – 3,09 МБ – 9,74 МБ –
âÂâââââââââââ´ââââ ... ... â â ´ ´ ... â
При проксировании с базовой настройкой восходящего потока через nginx производительность резко падает:
— ... ... â â â ¬ â â â ¬ â â ... ¤
– Стат – 1% – 2,5% – 50% – 97,5% – Ср – Stdev – Мин –
â················································ - ... ... ...
– Запрос/сек – 13359 – 13359 – 14991 – 19103 – 15767,12 – 1878,98 – 13352 –
â················································ - ... ... ...
– байт/с – 2,53 МБ – 2,53 МБ – 2,83 МБ – 3,61 МБ – 2,98 МБ – 355 кБ – 2,52 МБ –
âÂâââââââââââ´ââââ ... ... â â ´ ´ ... ¤
Вот мои конфигурации nginx (я немного поэкспериментировал, что привело к очень небольшим улучшениям):
nginx.conf
www-данные пользователя;
рабочие_процессы авто;
pid /run/nginx.pid;
включить /etc/nginx/modules-enabled/*.conf;
События {
worker_connections 768;
мульти_принять;
}
http {
open_file_cache макс=200000 неактив=20с;
open_file_cache_valid 30 с;
open_file_cache_min_uses 2;
open_file_cache_errors включен;
доступ_лог выключен;
ошибка_журнала выключена;
отправить файл включен;
tcp_nopush включен;
tcp_nodelay выключен;
keepalive_timeout 35;
типы_хэш_макс_размер 2048;
client_max_body_size 100M;
включить /etc/nginx/mime.types;
default_type application/octet-stream;
ssl_protocols TLSv1 TLSv1.1 TLSv1.2;
ssl_prefer_server_ciphers включен;
gzip выключен;
gzip_min_length 10240;
gzip_comp_level 1;
gzip_vary включен;
gzip_disable msie6;
gzip_proxied просрочил приватную авторизацию без кэша и без хранилища;
server_tokens отключены;
включить /etc/nginx/conf.d/*.conf;
включить /etc/nginx/sites-enabled/*;
}
site-enabled/reverse-proxy.conf
вышестоящий pindap_api {
наименьшее_соединение;
локальный хост сервера: 8181;
}
сервер {
слушать 80;
имя_сервера api.pindap;
доступ_лог выключен;
ошибка_журнала выключена;
место расположения / {
прокси_буферизация выключена;
прокси_пасс http://pindap_api;
}
}
сервер {
слушать 80;
имя_сервера пиндап;
доступ_лог выключен;
ошибка_журнала выключена;
место расположения / {
прокси_буферизация выключена;
proxy_pass http://localhost:8181;
}
}
Что может быть причиной этого? Что еще я могу попробовать?