Я столкнулся со странной проблемой с нашей службой узлов.
Многие дескрипторы файлов сокетов остались открытыми для процесса узла и достигнуто ограничение на количество открытых файлов (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), как есть наша основная служба обработки, и мы не можем предсказать, сколько времени может потребоваться для обработки запроса.