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

WS 2012 R2 + Apache v2.4.33 - один из портов блокируется с течением времени (TIME_WAIT)

Мы запускаем Apache v2.4.33 на Windows Server 2012 R2 на 2 портах: 80 и 81. Порт 80 используется для доступа к нашему веб-серверу через браузеры, а порт 81 используется нашими удаленными устройствами для загрузки контента (мультимедийных файлов). Таких устройств более 1000, работает дополнительный сервер NodeJS, который поддерживает их «в актуальном состоянии» (сообщает им, когда им следует загружать новый контент). Когда мы начали добавлять все больше и больше устройств, возникала проблема, что иногда порт: 81 блокировался, и к нему нельзя было получить доступ ни через веб-браузер, ни с устройств. Это означает, что они не могут ничего скачать в это время. Устройства, которые уже были подключены в тот момент, все еще могут подключиться к серверу. Ошибка # 111, в соединении отказано. Выполнение netstat | findstr ":81" показывает много соединений в состоянии TIME_WAIT, фактически большинство из них.

Странно то, что к серверу все еще можно получить доступ через порт 80, но не через порт 81 (тот, который используется только нашими удаленными устройствами). Остановка службы apache на минуту и ​​повторный запуск помогает в течение некоторого времени, но проблема возвращается.

Я уменьшил значение TcpTimedWaitDelay до 40 секунд (думаю, по умолчанию 240). Диапазон портов: 49152-65535 (~ 16k)

Статус сервера Apache показывает 40 запросов / сек, 16 МБ / сек, 282 запроса и 268 незанятых рабочих.

Конфигурация apache httpd.conf как эти настройки KeepAlive:

KeepAlive On
MaxKeepAliveRequests 500
KeepAliveTimeout 1

Что мы можем сделать, чтобы решить эту проблему на стороне сервера, не изменяя программное обеспечение удаленных устройств (поскольку это больше невозможно сделать физически)? Я подумал о некоторых ограничениях со стороны nodejs (не отправлять информацию о новом контенте сразу на все устройства, а, например, 100 устройств за 10 минут). Проблема в том, что все эти устройства работают через GSM-соединение, и иногда им требуется более 30 минут для загрузки нескольких файлов.