Подтвердить что ты не робот

Понимание "408 Тайм-аут запроса" на Apache с PHP

Описание проблемы - журналы Apache

Я нашел элементы, подобные этому в файле журнала Apache:

166.147.68.243 [24/Feb/2013:06:06:25 -0500] 19 web-site.com "-" 408 - "-"

Ive получил пользовательский формат журнала, а 408 здесь означает статус. Формат журнала:

LogFormat "%h %t %D %V \"%r\" %>s %b \"%{User-agent}i\"" detailed

И обычно строка в файле журнала выглядит как

184.73.232.108 [26/Feb/2013:08:38:16 -0500] 30677 www.site.com "GET /api/search... HTTP/1.1" 200 205 "Zend_Http_Client"

Вот почему 408 строк ошибок выглядят странно. Запрос не регистрируется, и я не знаю, что должно быть оптимизировано.

Вопросы

Как решить эту проблему? Какую дополнительную информацию или журналы я должен собрать? Что может вызвать проблему? Это что-то не так на сервере? Или это проблема с сетевым подключением?

Я обратился к этому, потому что наш клиент жаловался, что у него 408 ошибок на его мобильном телефоне. Я нашел много записей в файле журнала, но я должен признать, что я не знаю, что с этим делать.


Мои собственные исследования

На эту тему уже есть несколько вопросов. Но люди гораздо более конкретны. Как и проблемы с диском с конкретным клиентским программным обеспечением и скриптами. Здесь я просто получил сообщение об ошибке при открытии какой-либо страницы на iPhone.

Например, в HTTP, 408 Тайм-аут запроса, предлагается выполнить запрос GET перед POST. Если у меня есть пользовательский клиент, я могу это сделать. Но я не могу контролировать поведение браузера пользователей.

Угадай # 1

При поиске в Интернете и размышлении о проблеме я нашел https://serverfault.com/info/383290/too-many-408-error-codes-in-access-log

Предполагается обновить параметр конфигурации Timeout до значения по умолчанию.

#
# Timeout: The number of seconds before receives and sends time out.
#
Timeout 300

Сначала я попробовал значение 30, потому что думал, что 30 секунд должно быть достаточно. Но даже с 300-секундным значением по умолчанию я продолжаю получать ошибки в журнале. Я делал tail -f, когда писал этот текст и получал более 10 строк за несколько минут.

Для меня это не выглядит полным решением.

4b9b3361

Ответ 1

После некоторых исследований по этому вопросу я пришел к следующему ответу. Это обеспечивается нашим ведущим разработчиком, и я думаю, что это дает хорошее объяснение этому вопросу.

Эти ошибки абсолютно нормальны. Они не являются признаком более крупной проблемы, но обычные соединения, которые держат Apache открытым дольше, чем разрешено.

Например, клиентские запросы, запускающие их снова и снова, открывали Apache. Apache ответил, закрыв его соответствующим образом.

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

Чаще всего эти ошибки исходят от систем, ищущих эксплойты, и вы можете воссоздать их, открыв сеанс telnet и оставив его открытым.

В то же время, хвост - в журнале доступа и в течение X времени (KeepAliveTimeout) вы увидите всплывающее окно вашего IP-адреса с одинаковыми кодами ошибок.

В дни Apache 1.3 эта ошибка была обычной, но затем вышел 2.2, и они удалили ее, пока мы не попросим, ​​чтобы она была возвращена, поскольку она дает нам представление о том, сколько людей открыто порт, а не запрашивать фактический ресурс и т.д.

Я думаю, что здесь ничего не следует делать, кроме как установить Timeout на некоторую разумную ценность, как я описал в оригинальном вопросе.

Ответ 2

На самом деле много 408 сообщений в журналах apache являются механизмом предварительной выборки результатов в современных браузерах. Из поиска в журналах apache за последние 3 года количество 408 ошибок более чем удвоилось для одного и того же трафика.