On Fri, Aug 17, 2007 at 01:16:07AM +0400, Аркадий Кулев wrote:
> Создал отдельную конфигурацию для nginx только для использования встроенного
> перла.
> Создал несколько .pm модулей и запрашиваю их по мере необходимости.
>
> Каждый модуль использует "use strict;".
>
> Модули довольно нагруженные, у каждого примерно такой набор заголовков -
> use strict;
> use nginx;
> use File::stat;
> use WWW::Curl::Easy;
> use DBI;
> use Image::Size;
> use GD::Image;
> use Image::Epeg;
> use HTTP::Request::Common;
> use LWP::UserAgent;
>
> как видите - используется для редактирования изображений и файловых операций
> типа принять отправить по HTTP.
DBI, Curl, Request - это будет блокировать рабочие процессы на время ожидания
ответа.
> Стал замечать, что процессы nginx постепенно поглощают всю свободную память и
> через 30-60 минут уходят в свап.
>
> $r->variable не использую, все переменные задекларированы через my.
>
> приходится каждые полчаса отправлять в nginx сигнал SIGHUP дабы
> перезапускался.
> наверное было бы здорово добавить в настройки воркеров такую функцию как
> максимальное количество соединений, после которого наступает перезагрузка
> воркера, на случай утечки.
Вообще правильнее завершать обработку после выхода на определённый размер
виртуальной памяти, а getrusage() такого параметра не даёт. Использовать
RSS не всегда даст нужный результат, так как процесс может постепенно
уходить в своп и иметь небольшой RSS, постоянно дёргая диск.
> а так - конечно хотелось бы чтобы ее вообще не было.
Это к авторам перла. Можно попробовать пересобрать перл с -Dusemymalloc=no
--
Игорь Сысоев
http://sysoev.ru