Dear All,
Помогите разобраться новичку, пожалуйста.
Связка из двух серверов, frontend+backend, два соляриса sparc 9.
На бэкенде Апач 1.3.37, на фронтенде всегда был Sun Proxy Server.
Под влиянием отзывов про nginx захотелось его поставить да проверить,
поставил со всеми настройками по умолчанию, как на
http://blog.kovyrin.net/2006/05/18/nginx-as-reverse-proxy/, только весь
контент на Апаче, nginx ничего с локального диска не отдает.
На фронтенде stub_status показывает нагрузку ~500 реквестов в секунду. Так
оно примерно и есть.
Так вот, если worker_processes делать много и worker_connections много (до
32*1024), мы получаем тормоза при работе, и сообщения в лог сыпятся
upstream timed out (145: Connection timed out) while connecting to upstream
...
а потом вообще серии
accept() failed (24: Too many open files) while accepting new connection on
0.0.0.0:80
Если же workers и connections ставить немного (от 2*128), получаем в лог
128 worker_connections is not enough while connecting to upstream
и опять же сайт отдается медленно.
Что самое интересное, независимо от количества worker_processes и connections
количество открытых соединений между Апачем и nginx-ом дорастает до 2000. В
то время как Sun Proxy всегда держит не более 300 и не тормозит.
Если Sun Proxy Server кэширует, то дело в этом.
nginx не поддерживает кэширования.
Настаривать нужно примерно так:
worker_processes 2;
events {
worker_connections 10240;
}
Ну и увеличить число дескрипторов на процесс.
А статику отдавать локально с диска, а не проксировать её на бэкенд.
Эту ситуацию надо специально отлаживать, или я просто что-то неправильно
накрутил?
Последний рабочий конфиг вот, я там пробовал всякие параметры менять, не
помогает.