Понимание max-concurrent-соединений клиент-сервер и состояния TIME_WAIT
Я знаю, что есть много вопросов, а также ответов по всему TIME_WAIT
состояние соединения через сокет, но каким-то образом ни один из них (или, возможно, с точки зрения экспертов всех) помогает мне понять мою проблему (или найти возможные решения).
Мой сценарий заключается в том, что у меня есть сервер, подключенный к Интернету, который должен обрабатывать тысячи соединений в секунду (он предоставляет некоторый тип API). Я наблюдаю, что подключения к серверу вообще возможны, но time_connect
и time_total
(с помощью curl
) достигают от 0.009
в 0.526
для бывших и 0.134
в 0.926
для последнего. Я также наблюдаю огромное количество соединений в TIME_WAIT
состояние - вокруг 32,000+
,
Итак, мой первый вопрос: сколько одновременных соединений (с настроенным по умолчанию дистрибутивом Debian) сервер может обработать в течение секунды, минуты или часа. Существует ли какая-то "простая" формула для расчета логического предела возможных одновременных соединений.
Кроме того, в будущем я могу не просто обрабатывать входящее соединение непосредственно на самом сервере, но мне, возможно, придется перенаправить его на прокси-сервер, получить результат и вернуть его. Я даже думаю об использовании механизма балансировки нагрузки nginx (при необходимости). Поэтому второй вопрос заключается в том, чтобы при наличии такого прокси / балансировки / переадресации нагрузки формула была бы изменена?
Мой последний вопрос: какие есть альтернативы для увеличения числа одновременных соединений, например,
- добавить еще один сервер для домена (что будет вдвое больше правильных одновременных подключений?),
- уменьшить время, проведенное в
TIME_WAIT
(это поможет и как), - ...
Большое спасибо за любую помощь или любую ссылку!