Назад | Перейти на главную страницу

Таймауты Apache и повторная передача TCP

В документация для директивы тайм-аута в 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