Почему node.js в proxmox / lxc блокируется после стресса с более чем 32000 одновременных соединений? - PullRequest
0 голосов
/ 01 февраля 2019

Я тестировал сервер узла, который, как ожидается, получит большое количество одновременных соединений.Он может стоять wrk -c 32000 -d 1m -T 1m http://localhost:1234 без каких-либо ошибок - при первом запуске.

Однако при повторном запуске тест завершается множеством ошибок чтения, и узел больше не будет отвечать ни на один запрос.В качестве альтернативы, один запуск на недавно загруженном хосте с -c 33000 может заблокировать его за один запуск.

Тест выполняется в контейнере lxc, но после этого возникают проблемы с подключением сокетов к Интернету, оба в контейнереи хост.

Сервер прост:

http.createServer(function (req, resp) {
  resp.writeHead(200, {'Content-Type': 'text/plain'});
  setTimeout(function(){
    resp.end('bye');
  }, 1000);
}).listen(1234);

Обратите внимание, что существует несколько рабочих, обработанных cluster с использованием кода книги.

Системаво время теста в основном простаивает и имеет много свободной оперативной памяти.Средой тестирования является контейнер lxc на хосте Proxmox VE 5.2.Он работает под управлением Linux 4.15 и Debian 9 и Node 10.15.В контейнере ulimit -n и увеличен диапазон эфемерных портов, установлено tcp_tw_reuse.

Настройка сети: мостовая, конфигурация хоста:

iface vmbr0 inet static
        address  192.168.123.1
        netmask  255.255.255.0
        bridge-ports none
        bridge-stp off
        bridge-fd 0
        post-up echo 1 > /proc/sys/net/ipv4/ip_forward
        post-up iptables -t nat -A POSTROUTING -s '192.168.123.0/24' -o enp2s0 -j SNAT --to-source 136.xxx.xxx.xxx
        post-up iptables -t nat -A PREROUTING -i enp2s0 -p tcp --dport 1234 -j DNAT --to 192.168.123.2

Я не нашел 32655-предел лимита на узел.Мне нужна помощь, где искать дальше .. мой код?Узел?Узел / кластер?Proxmox?Debian?Настройки TCP?Ядро Linux?

Редактировать:
Перезапустить тест на другом сервере с чистым Debian 9. Без сбоев.
Восстановить среду LXC и настроить мостовую сеть в Debian.Нет сбоев.
Также повторите тест на хосте Proxmox.Нет глюка.

Так как сбой происходит только под lxc при Proxmox, и мне не нужен Proxmox, мое решение - отказаться от Proxmox.Я потеряю глюки и не смогу протестировать дальнейшие идеи.

...