Неисправность «408 Тайм-аут запроса» на Apache с PHP

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

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

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

У меня есть формат пользовательского журнала, а 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/questions/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 строк за несколько минут.

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

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

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

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

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

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

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

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

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