Apache: HTTP 1.1 Силы или Персистентные соединения / соединения KeepAlive для запросов HTTP 1.0

Как существуют книги по теме, и даже толпа IBM/AIX вошла в игру, я сказал бы, что существует много людей, делающих ее. Я лично не развернул много рубиновых сценариев, но мы записали нескольким сервисным демонам с ним, и это - очень хороший язык с большой частью питания Perl, но меньшего количества тенденций "Только для записи".

5
задан 5 April 2014 в 19:12
2 ответа

You can just set KeepAliveTimeout to be a high number.

Here is the manual entry for this directive: http://httpd.apache.org/docs/2.4/mod/core.html#keepalivetimeout

Note that "Setting KeepAliveTimeout to a high value may cause performance problems in heavily loaded servers. The higher the timeout, the more server processes will be kept occupied waiting on connections with idle clients."

0
ответ дан 3 December 2019 в 02:03

HTTP 1.0 не поддерживает keep-alive (постоянные соединения AKA), и нет системы, которая просила бы их использовать HTTP 1.1, вы могли бы вернуть им 400x, но они все равно уже создали бы подключения, и нет стандартного способа сказать им попробовать вместо этого HTTP 1.1. Даже если все ваши клиенты действительно работают, им нужен HTTP1.1, вы ничего не можете сделать со службой, чтобы они не отправляли сообщение «close» в заголовке keep-alive или разрывали соединение и при этом выполняли одно соединение для каждого запроса.

Есть некоторые параметры ядра Linux (в частности DEFER_ACCEPT и TIME_WAIT ), которые могут помочь с сокращением таблицы TCP-соединений, но я бы не рекомендовал идти по этому пути, если вы не знаете, что вы делать так, как это действительно легко сделать хуже, чем лучше.

Но если мыслить шире, я думаю, что вы пытаетесь решить проблему неверным способом. Интернет темен и полон ужасов. Если случайные боты вызывают проблемы с ограничением TCP-соединения, тогда вы безнадежно уязвимы для SYN-флуда или других событий типа DDOS, а боты - это просто сигнал о том, что ваш веб-сервер либо занижен, атакован или неправильно настроен. В любом случае что-то не так.

Если вы действительно хотите контролировать, какие запросы поступают в apache, вам понадобится WAF (брандмауэр веб-приложений) или балансировщик нагрузки перед apache, чтобы отфильтровать плохие запросы до того, как они потребуют дорогостоящие соединения apache. Во многих случаях вы также можете разгрузить процессор, интенсивно выполняя шифрование SSL / TLS.

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

1
ответ дан 3 December 2019 в 02:03

Теги

Похожие вопросы