Re: оптимизация модуля: переполнения и блокировки
Valery Kholodkov
valery+nginxru на grid.net.ru
Вт Ноя 15 14:25:13 UTC 2011
----- minya <nginx-forum at nginx.us> wrote:
> Valery Kholodkov Wrote:
> -------------------------------------------------------
> > Память из-под ngx_chain_t и ngx_buf_t
> > освободиться по завершению
> > запроса.
> > Память под чтение данных
> > освободиться по завершению
> > отправки,
> Какое из событий когда наступает?
Ну так скажем, любая память выделенная из пула запроса будет освобождена по окончанию запроса (после записи в лог и т.д.).
Если из пула выделена память под чтение, то она обычно не освобождается, а повторно используется (будем считать, что она таким образом освобождается). Это делается в частности, чтобы не пережрать память.
> Ответ
> может быть достаточно большим. Если он
> целиком живет в памяти и запросов
> много, то можно пережрать память и
> загнать процесс в своп. С другой
> стороны, то запрос может выполняться
> достаточно долго. Количество запросов,
> обрабатываемых одновременно - не такое
> большое. Это количество ядер. Если
> количество подключений достаточно
> велико, и мы используем блокирующее
> чтение, то с хорошей вероятностью все
> ядра будут заняты ожиданием
> ввода-вывода, и большинство запросов
> будут ждать, пока они освободятся.
> Таким образом, мы сильно деградируем по
> времени ответа.
Было бы неплохо, если бы Вы объясняли более конкретно. Я опять ничего не понял.
> > а если
> > используется sendfile, то она
> > даже и не выделиться.
> не совсем понял, как это реализовать
Для этого достаточно засубмитить в nginx буферы с флагом is_file и инициализированным начальным и конечным смещением а файле. nginx сам разберется какой метод отправки использовать.
--
Regards,
Valery Kholodkov
Подробная информация о списке рассылки nginx-ru