Высокая интенсивность использования виртуальной памяти чероки даже после отключения кэша ввода-вывода
У меня Ubuntu 10.04LTS 64-bit работает на контейнере openvz и Cherokee 1.0.8 скомпилирован из исходного кода. Использование виртуальной памяти cherokee-worker составляет около 430 МБ даже после отключения кэша ввода-вывода в разделе "Дополнительно" -> "Кэш ввода-вывода -> НЕ включен".
Эта проблема специфична для openvz? Потому что многие люди сообщали об успешном снижении использования памяти virt путем отключения кеша io.
Вывод htop: https://imgur.com/z5JEL.jpg (новичкам запрещено публиковать изображения.)
заранее спасибо.
nidheeshdas
2 ответа
По крайней мере, частью этого будет выделение стека (RLIMIT_STACK), которое выделяется для каждого потока чероки... и чероки делает много потоков. Эта память на самом деле не используется и все еще доступна, поэтому обычно это не имеет значения, но с OpenVZ она засчитывается в вашу квоту, и вам действительно нужно ограничивать ее на VPS OpenVZ. Я не могу даже запустить Cherokee в конфигурации по умолчанию на моем 256-мегабайтном VPS, потому что OpenVZ думает, что он использует больше, чем доступные 210 МБ, только запускается.
Вы можете либо сократить количество потоков, которые использует Cherokee, в разделе "Advanced->Resources" в веб-конфигурации (параметр "server! Thread_number = XX", если вы редактируете cherokee.conf напрямую), либо просто изменить стек Размер до запуска Cherokee с 'ulimit -s SIZE_IN_KB' (вы можете увидеть значение по умолчанию, прежде чем изменить его с помощью 'ulimit -s' - мой VPS по умолчанию составляет 10240, 10 МБ на поток). Имейте в виду, что вам нужно установить ulimit перед запуском cherokee, и он не распространяется на всю систему. Так что либо сделайте это в оболочке перед запуском cherokee из той же оболочки, либо отредактируйте скрипт запуска, чтобы запустить ulimit -s XX перед запуском cherokee.
LowEndBox - это отличный ресурс для работы с (особенно бюджетными) VPS. У них есть сообщение в блоге о том, как " уменьшить ограничение стека для многопоточных приложений".
Память используется процессами php5-fpm, а не чероки. Вы работаете с толстым php-приложением?