Я создаю TCP Proxy: client
<-> proxy
<-> Vertica
У меня есть net.TCPListener
, который принимает входящие запросы на AcceptTCP()
и создает подключения, затем , установив соединение с целевым сокетом net.DialTCP("tcp", nil, raddr)
. Похоже на мост. Модель прокси по умолчанию.
Во-первых, в первой версии у меня проблема: если у меня 59 параллельных входящих запросов, все в порядке. Но если у меня есть еще один (60), у меня проблема: 1-59 соединений в порядке, но 60 и более новые неисправны. Я не могу поймать ошибку правильно. Похоже, какой-то сокет неожиданно закрывается
Во-вторых, я попытался установить очередь для слушателя. Это мне очень помогает: но если у меня более 258 запросов, я снова получаю сообщение об ошибке.
Мой вопрос: есть ли ограничения на количество соединений в пакете net
? Может быть, это системное ограничение?
Для внешней информации: Vertica работает в docker контейнере, hw / system: macbook, предельный пул соединений vertica: 5, но логический пул c реализован в прокси. Я также попытался установить «сырой» прокси без лога пула c (поэтому я установил очередь для слушателя: я не должен превышать порог пула пользователя Vertica), результат - 258 запросов ..
ОБНОВЛЕНО: (05.04.2020)
Похоже, что это ошибка системных ограничений. Я упоминал где-нибудь, что я пытаюсь запустить всю систему на одном P C?
Итак, что у меня было:
- 300 параллельных процессов в качестве запросов (выполнение с помощью многопроцессорной обработки. Бассейн Python) (300 сокетов)
- Слушатель, который создает 300 соединения (еще 300 сокетов)
- И серия быстро создаваемых / закрывающихся сокетов в глубине прокси (согласно очереди и пулу Vertica)
Что у меня сейчас:
- 300 python запросов от другого P C в моей локальной сети (на Windows)
- Прокси работает нормально
- Но у меня есть несколько ошибки на Windows P C, которые создают запросы к моему прокси. Ошибки, такие как нехватка памяти в «файле подкачки».
Мне все еще нужно провести стресс-тест для прокси. Добавление меньше памяти для файла подкачки не решило мою проблему на Windows P C. Буду благодарен за любые предложения и идеи. Спасибо!