Я совершенно новичок в Docker со вчерашнего дня. У меня есть запущенный сервер node.js, который просто создает TCP-сервер, а затем обрабатывает сообщения, поступающие от клиента. Существует тестовая программа, написанная кем-то другим, которую я запускал и которая позволяет использовать столько одновременных подключений, сколько вы хотите.
Когда я запускаю его локально, я могу иметь более 100 одновременных подключений без проблем. Однако иногда я вижу локальную проблему, когда начинаю выполнять более 200 одновременных подключений, и это фактически попадает в случай socket.on(error)
и выдает мне ошибку. Однако, если я запущу сервер сразу и попробую 200 одновременных подключений, он обычно успешно завершится, но последующие попытки завершатся ошибкой.
Однако, когда я запускаю жгут с сервером, работающим в Docker, как только я пытаюсь запустить его с 33 одновременными подключениями, он не работает. Я получаю сообщение об ошибке «сброс соединения по узлу» из тестовой системы. Если я пробую 32 соединения, все работает нормально. Когда пробую 33+, тоже не вижу никакой ошибки на сервере, как при локальном запуске. Если я попытаюсь снова выполнить 32 одновременных соединения после того, как он потерпит неудачу с 33+, все будет хорошо.
Кто-нибудь знает, почему это может происходить? Есть ли какая-то настройка в Docker, которую я должен изменить, чтобы разрешить более 32 одновременных подключений? Мне кажется интересным, что это жесткое ограничение 32, и оно всегда работает с 32 и никогда не работает с 33.
FWIW, на моем сервере node.js он прослушивает port 8080
и host 0.0.0.0
. Первоначально он был у меня на 127.0.0.1
, но хотя он работал локально, он не работал в Docker. Чтобы запустить его, я использую команду docker run -p 8080:8080 app
.
Я запускаю Docker на своем MacBook Pro с последней версией OSX.
Любые идеи?