В документация для директивы тайм-аута в apache говорится, что:
При записи данных клиенту - время ожидания подтверждения пакета, если буфер отправки заполнен.
Но если стек TCP не получает и не ACK, он повторно отправит пакет. Итак, как эти две вещи взаимодействуют? Устанавливает ли тайм-аут apache общий предел повторных попыток перед разрывом соединения?
Контекст - это ситуация, когда curl pull периодически завершается с ошибкой:
curl: (18) передача закрыта, осталось прочитать XXXXXX байтов
и пытаюсь определить точную причину.
Проведя трассировку Wireshark как на клиенте, так и на сервере, кажется, что сервер (apache) по какой-то причине преждевременно завершает сеанс (не брандмауэр или другое принудительное закрытие). Это происходит с 2 типами файлов, которые часто загружаются: большие двоичные файлы (100 МБ, mp4) и небольшие текстовые файлы (~ 10 КБ). Для больших файлов есть сообщение журнала apache:
Указанный тайм-аут истек: [client:] AH01581: Тайм-аут при записи данных для URI / xxxx / xxxx / xxxx / клиенту
На данный момент я предполагаю, что это просто перегрузка сети, так как сбои имеют тенденцию сгущаться в определенное время, но я хотел бы, если возможно, зафиксировать это подробнее.
Конфигурация:
CentOS 6.6
Apache 2.4.16
Сгибание 7.19.7