Re: Master процесс nginx 0.6.38 съедает всю доступную память
Gena Makhomed
gmm at csdoc.com
Sat Sep 12 22:59:38 MSD 2009
On Monday, September 7, 2009 at 23:18:21, Одинцов Павел wrote:
ОП> Имеется очень противная проблема, nginx 0.6.38 (epel репозиторий)
ОП> стоит проксей перед хостинговой Апачей и попутно раздает статику;
ОП> изредка на паре машин из полутора десятков nginx (master процесс)
ОП> начинает жутко поедать память и в итоге через пару минут сваливает
ОП> машину. Подозрения о причинах такого поведения есть в сторону буферов
ОП> и проксирования больших файлов от Апача, но тут ничего толком не
ОП> получилось понять. Помогайте :(
насколько часто ему посылается SIGHUP, SIGUSR1 и другие сигналы?
ОП> Конфиг:
ОП> worker_processes 1;
на 4-ядерном Xeon`е наверное более эффективно
было бы использовать как минимум 4 worker`а:
worker_processes 4;
worker_priority -10;
worker_cpu_affinity 0001 0010 0100 1000;
ОП> events {
ОП> worker_connections 10024;
ОП> http {
ОП> keepalive_timeout 65;
это разве не мало для 4-ядерного сервера с 10 GB памяти,
который находится при этом "под очень большой нагрузкой" ?
===============================================================
http://wiki.nginx.org/NginxHttpEventsModule#worker_connections
The worker_connections and worker_proceses from the main section allows you to calculate maxclients value:
max_clients = worker_processes * worker_connections
In a reverse proxy situation, max_clients becomes
max_clients = worker_processes * worker_connections/4
Since a browser opens 2 connections by default to a server and nginx uses the fds (file descriptors) from the same pool to connect to the upstream backend
===============================================================
в современных браузерах не 2 connections by default,
вот например, как это выглядит для нового Firefox`а:
network.http.max-connections-per-server
(Minimo default: 2. All others default: 8. Firefox 3: 15)
network.http.max-persistent-connections-per-server
(Default: 2. Firefox 3: 6)
PS возможно лучше было бы оценивать не число max_clients,
а более точное число max_client_connections (keepalive+active):
max_client_connections = worker_processes * worker_connections / 2
для запросов требующих обращения к {proxy,fastcgi,memcached}_pass
max_client_connections = worker_processes * worker_connections
для запросов, которые nginx обслуживает без обращения к backend`ам.
--
Best regards,
Gena
More information about the nginx-ru
mailing list