Файлы сокетов не закрываются процессом Node - PullRequest
0 голосов
/ 06 марта 2020

Я столкнулся со странной проблемой с нашей службой узлов.

Многие дескрипторы файлов сокетов остались открытыми для процесса узла и достигнуто ограничение на количество открытых файлов (10240 файлов) для процесса. Итак, я получаю сообщение об ошибке EMFILE.

Служба остановлена ​​и перестала принимать новые запросы, а также отправлять исходящие запросы другим службам.

Нигде в коде я ЯВНО не имею дело с сокетными соединениями.

Процесс узла все еще прослушивает порт. Мы используем PM2.

Аналогичный вопрос для Java: https://serverfault.com/questions/153983/sockets-found-by-lsof-but-not-by-netstat

Ниже приведено описание версий:

  • Версия узла : 8.16.0
  • Хапи: 14.2.0
  • запрос: 2.88.2 (используется для отправки исходящих запросов)

Вывод команд в консоли:

[CONSOLE ~]$ lsof -p [PID] | wc -l
10253
[CONSOLE ~]$ ulimit -a
.
.
file size               (blocks, -f) unlimited
.
.
max memory size         (kbytes, -m) unlimited
open files                      (-n) 10240
.
.
.
[CONSOLE ~]$ netstat -np | grep [PORT]
(Not all processes could be identified, non-owned process info
 will not be shown, you would have to be root to see it all.)
[CONSOLE ~]$ netstat -a -n | grep  [PORT]
tcp        0      0 0.0.0.0:[PORT]           0.0.0.0:*               LISTEN     
[CONSOLE ~]$ lsof -i :[PORT]
COMMAND   PID USER   FD   TYPE     DEVICE SIZE/OFF NODE NAME
node    [PID] glpd   15u  IPv4 2270823542      0t0  TCP *:[PORT] (LISTEN)
[CONSOLE ~]$ lsof -p [PID]
COMMAND   PID USER   FD      TYPE             DEVICE SIZE/OFF       NODE NAME
.
.
.
node    [PID] glpd   15u     IPv4         2270823542      0t0        TCP *:[PORT] (LISTEN)
node    [PID] glpd   16u     sock                0,7      0t0 2271652082 protocol: TCP
node    [PID] glpd   17u     sock                0,7      0t0 2271551621 protocol: TCP
node    [PID] glpd   18u     sock                0,7      0t0 2271663118 protocol: TCP
node    [PID] glpd   19u     sock                0,7      0t0 2271662963 protocol: TCP
node    [PID] glpd   20u     sock                0,7      0t0 2271660595 protocol: TCP
node    [PID] glpd   21u     sock                0,7      0t0 2271652144 protocol: TCP
node    [PID] glpd   22u     sock                0,7      0t0 2271660631 protocol: TCP
node    [PID] glpd   23u     sock                0,7      0t0 2271662997 protocol: TCP
node    [PID] glpd   24u     sock                0,7      0t0 2271660660 protocol: TCP
node    [PID] glpd   25u     sock                0,7      0t0 2271663083 protocol: TCP
.
.
.

Кто-нибудь сталкивался с этим в Узле?

РЕДАКТИРОВАТЬ:
Тайм-аут сокета для всех входящих запросов к этой службе отключен (установлен в false), как есть наша основная служба обработки, и мы не можем предсказать, сколько времени может потребоваться для обработки запроса.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...