Тайм-ауты Apache и ретрансляция TCP

Документация для директивы timeout в apache гласит:

При записи данных клиенту продолжительность времени ожидания подтверждения пакета, если буфер отправки заполнен.

Но если стек TCP не получает и ACK, он будет повторно отправлять пакет. Так как же эти две вещи взаимодействуют? Устанавливает ли таймаут apache общий лимит повторных попыток перед прерыванием соединения?

Контекст - это ситуация, когда тяги curl периодически завершаются ошибкой:

curl: (18) передача закрыта с байтами XXXXXX, остающимися для чтения

и я пытаюсь определить точную причину.

Получив трассировку Wireshark как на клиенте, так и на сервере, кажется, что сервер (apache) по какой-то причине преждевременно завершает сеанс (поэтому не брандмауэр или иное принудительное закрытие). Это происходит для 2 типов файлов, которые часто загружаются: большие двоичные (100-мегабайтные mp4-файлы) и небольшие текстовые файлы (~10 КБ). Для больших файлов есть сообщение журнала Apache:

Указанный тайм-аут истек: [client:] AH01581: Тайм-аут при записи данных для URI /xxxx/xxxx/xxxx/ на клиент

Мое настоящее лучшее предположение состоит в том, что это просто перегрузка сети, так как сбои имеют тенденцию объединяться в определенное время, но я хотел бы зафиксировать это дальше, если это возможно.

Конфигурация:

CentOS 6.6

Apache 2.4.16

Curl 7.19.7

0 ответов

Другие вопросы по тегам