2012-07-04 2 views
0

Мой nginx имеет 8 процессов, каждый из них занимает около 150M памяти.Nginx убит за «вне памяти»?

Время от времени, мой Nginx убить для этого (dmesg)

21228 общий кэш страниц страниц 50 страниц в своп кэш СВОП Статистика кэша: добавить 85, удалить 35, найти 63/64 Свободный обмен = 2031300kB Общего своп = 2031608kB 3407856 страниц RAM 3180034 страниц Highmem 290515 страниц защищены 36448 страниц совместно 491788 страниц неразделяемой

из памяти: убить процесс 16373 (Nginx) оценку 5013 или ребенок

Я гугл это, оказывается, Low Memory запускается, так что ОАЯ-убийца начать делать свою работу ...

Вот мои вопросы:

  1. Я получаю 16GB память, но низкая память - это только 800M (free -lm), как я могу использовать остальные? Google скажите мне, что я могу использовать патч ядра-hugemem, но это только для centos4, Шахта centos5.2, так что ...

  2. Это слишком много для использования 150MB памяти процесса Nginx? Вы, ребята, никогда не сталкивались с такой проблемой?

  3. Низкая память путала меня, 32-разрядная система может использовать более 3 ГБ памяти без PAE, так почему для памяти Low/Hign? Не ошибка ядра?

+0

Какая операционная система вы используете? Управление памятью очень отличается между, скажем, FreeBSD и Linux. Даже различные варианты BSD (FreeBSD/NetBSD/OpenBSD) имеют некоторые важные отличия, которые могут вызвать странность, если вы не знаете, что происходит. – ghoti

+0

Шахта - это Centos 5.2, 32-бит – ZIFF

+0

Прикрепите конфигурацию nginx и освободите -m, пожалуйста, –

ответ

0

Я замечаю, что у вас много свободного обмена, что должно предотвратить активацию OOM-убийцы, но по какой-то причине это не так. This question from serverfault указывает, что OOM с неиспользуемым свопом означает, что неудавшееся распределение было в режиме ядра, вызванное драйвером, который хотел много памяти. Это также может объяснить, почему бесплатный HighMem недостаточно хорош для удовлетворения запроса (в режиме ядра вещи могут запрашивать память из определенных регионов). Вы должны взглянуть немного дальше в dmesg, чтобы увидеть, есть ли какие-либо подсказки, как обратная линия.

Что касается третьей части вашего вопроса, то при использовании PAE существует разница между HighMen и LowMem, поскольку она расширяет физическое адресное пространство до 36 бит, тогда как виртуальное адресное пространство по-прежнему составляет 32 бита. Доступ к полному потенциалу 64G физических адресов не может быть выполнен так же быстро, как доступ к фиксированному подмножеству 4G, поэтому ядро ​​делит память вверх и пытается сохранить самые критически важные для производительности вещи в «низкой» области.

+0

Thx, я согласен с вами в отношении того, что ** хранят самые критичные для производительности вещи в области «low» area **, но мой бесплатный -m-вывод, например это: – ZIFF

+0

всего использованного бесплатного Мем: 12177 1737 10439 Низкий: 780 263 516 Низкий район не должен быть около 4 * 1024 МБ здесь? – ZIFF

Смежные вопросы