The OpenNET Project / Index page

[ новости /+++ | форум | теги | ]

форумы  помощь  поиск  регистрация  майллист  вход/выход  слежка  RSS
"Lighttpd, мистический обрыв соединений"
Вариант для распечатки  
Пред. тема | След. тема 
Форум WEB технологии (Apache, http-серверы)
Изначальное сообщение [ Отслеживать ]

"Lighttpd, мистический обрыв соединений"  +/
Сообщение от Андрей (??) on 20-Июн-13, 22:17 
Имеется сервер lighttpd-1.4.32, который был установлен вместо apache.

Стоит на системе freebsd 9.1, обслуживает в среднем 70 запросов в секунду, используется для отдачи статики, запуска cgi-скриптов через mod_cgi, запуска php-скриптов через mod_fastcgi + php_fpm.

Иногда при запросе к серверу (который обрабатывает mod_cgi или mod_fastcgi) происходит обрыв соединения — браузер firefox пишет «Соединение было сброшено», firebug пишет «Статус: aborted», chrome пишет «Ошибка 101 (net::ERR_CONNECTION_RESET): Соединение сброшено».
Это происходит на разных клиентских компьютерах.

Ошибку не получается воспроизвести специально: проще всего её увидеть в самообновляющихся страницах внутри фреймов, которые есть на сайте: если загрузить страницу, и смотреть на самообновляюшиеся фреймы (которые обновляются раз в 20-30 секунд), то в течение примерно 10 минут обязательно соединение сбросится в какой-то момент времени. Специально запросить страницу каким-либо образом, чтобы 100% сгенерировать ошибку - не получилось.

Если рядом включить сервер apache например на 81-м порту, настроенный для отдачи того же контента, что и lighttpd, соединения с браузера к apache ни разу не сбрасываются, то есть при работе apache ошибок нет.
На тестовом сервере lighttpd, без нагрузки, тоже не получилось воспроизвести ошибку.

В логах lighttpd  нет ничего — в error.log пустота, в access.log — только успешно отданные страницы с «200 OK», то есть, сброшенный запрос скорее всего не доходит до логов сервера.

Вывод: наверняка при отправке запроса на сервер lighttpd соединение где-то и кем-то иногда почему-то сбрасывается, но в какой момент и кем — мистика, не понятно. Не придумал, как это вообще возможно отследить.
На apache все работает.
Lighttpd настроен вроде бы стандартно, пытался немного играться с параметрами — например, выключить Keep-alive соединения, не помогло.

Может быть кто сталкивался с такой проблемой, или может подсказать, куда рыть, буду благодарен.
Если нужны конфиги — сообщайте какие, сброшу.

Ответить | Правка | Cообщить модератору

Оглавление

Сообщения по теме [Сортировка по времени | RSS]


1. "Lighttpd, мистический обрыв соединений"  +/
Сообщение от Андрей (??) on 20-Июн-13, 22:40 
Добавлю еще уточнение

На сервере нагрузки нет, load average все время меньше 1, процессор почти весь свободен (>90%), памяти оперативной хватает, в своп не залазит. При выключенном keep-alive lighttpd обрабатывает максимум 10-30 одновременных запросов, в статусе именно обработки вообще редко больше одного одновременно. Остальные читает запрос или отдаёт ответ. При том что настроен на обработку одновременно более 1000 соединений (про запас).

Ответить | Правка | ^ к родителю #0 | Наверх | Cообщить модератору

2. "Lighttpd, мистический обрыв соединений"  +/
Сообщение от name (??) on 21-Июн-13, 13:45 
> Добавлю еще уточнение
> На сервере нагрузки нет, load average все время меньше 1, процессор почти
> весь свободен (>90%), памяти оперативной хватает, в своп не залазит. При
> выключенном keep-alive lighttpd обрабатывает максимум 10-30 одновременных запросов,
> в статусе именно обработки вообще редко больше одного одновременно. Остальные читает
> запрос или отдаёт ответ. При том что настроен на обработку одновременно
> более 1000 соединений (про запас).

сравните tcpdump на сервере и клиенте
промежуточные узлы?

Ответить | Правка | ^ к родителю #1 | Наверх | Cообщить модератору

3. "Lighttpd, мистический обрыв соединений"  +/
Сообщение от Андрей (??) on 21-Июн-13, 23:36 
Запустил tcpdump на сервере. Если я правильно в нём разобрался, у сбршенных коннектов на сервере в tcpdump-е наблюдаю http-запрос, а http-ответа уже нет.
Так же в error.log у lighttpd появилось много строчек типа
2013-06-21 19:00:04: (connections.c.137) (warning) close: 27 Connection reset by peer

Но похоже вариант решения проблемы нашелся.
Все глюки проявлялись, когда KeepAlive соединения в lighttpd были выключены, либо были сконфигурированы по умолчанию:
server.max-keep-alive-requests = 16
server.max-keep-alive-idle = 5

Я изменил значения на:
server.max-keep-alive-requests = 100
server.max-keep-alive-idle = 20

после этого глюки вроде бы пропали
Но послежу ещё побольше времени, чтобы быть точно уверенным

Ответить | Правка | ^ к родителю #2 | Наверх | Cообщить модератору

Архив | Удалить

Рекомендовать для помещения в FAQ | Индекс форумов | Темы | Пред. тема | След. тема




Партнёры:
PostgresPro
Inferno Solutions
Hosting by Hoster.ru
Хостинг:

Закладки на сайте
Проследить за страницей
Created 1996-2025 by Maxim Chirkov
Добавить, Поддержать, Вебмастеру