On Sun, 11 Dec 2005, Alexander Burnos wrote:
> За последние пару дней несколько раз наблюдал следующую ситуацию:
>
> nginx переставал отвечать на запросы, при этом уходя в top с 99.9% cpu
> load.
>
> OS Debian Sarge, kernel 2.6.11.9, nginx 0.3.12.
>
> В access-логе не вижу ничего подозрительного, в error-логе обычно видно
> следующее:
>
> 2005/12/11 03:01:02 [alert] 10578#0: *58941 the http output chain is
> empty while sending to client, client: x.x.x.x
> 2005/12/11 03:04:07 [alert] 10577#0: worker process 10578 exited on
> signal 9
>
> Вторая строчка - это, скорее всего, после моего kill'a, но я не уверен.
>
> Нагрузка маленькая, около 60 active connections. nginx слушает только
> https, несколько http-проксирований с proxy_buffering off и несколько
> https проксирований. Использую 1 worker, метод обработки соединения не
> указываю, т.е. юзается самый оптимальный по мнению nginx, насколько я
> понимаю.
>
> Подскажите, пожалуйста, на что еще можно посмотреть во время
> возникновения проблемы? Из-за чего это может быть?
Если в nginx.conf поставить
debug_points abort;
working_directory /spool/core;
то после сообщения "[alert] the http output chain is empty" nginx вызовет
abort() и будет корка в каталоге /spool/core. Чтобы от корки была польза,
nginx должен быть собран с ключём -g (обычно он так и собирается).
Обычный пользователь, под которым работают рабочие процессы, должен
имет права записи в каталог /spool/core. Кроме того, limits -c должен
быть достаточным.
Игорь Сысоев
http://sysoev.ru