On Wed, Sep 17, 2008 at 12:45:58PM +0400, Михаил Монашёв wrote:
> ММ> В какти по графику видно, что accepts requests и handled requests
> ММ> разошлись в разные стороны: accepts requests выросло, а handled
> ММ> requests упало до нуля.
>
> Причём worker_connections 50; было выставлено в 19-00, а графики
> начали расходиться только 23-00. Т.е. в начале, на больой нагрузке всё
> отлично работало. А как она начала спадать, так постепенно, где-то за
> два часа, отдача статики перестала работать.
Поскольку nginx не планировался для работы в режиме Апача,
то там есть такое ограничение - если свободных соединений меньше
NGX_ACCEPT_THRESHOLD (100), то accept'ы штрафуются - они пропускаются.
В случае "worker_connections 50" штраф наступает после первого же accept'а.
На большой нагрузке штраф имеет большие шансы быстро кончиться, а на малой -
не кончиться вообще.
Текущий workaround:
event {
accept_mutex off;
}
Надо бы пересмотреть логику: по крайней мере, сделать NGX_ACCEPT_THRESHOLD
автонастраиваемым в зависимости от worker_connections, например,