Я использую Nginx в качестве обратного прокси с Nodejs за обратным прокси, но в настоящее время у меня возникла проблема. В какой-то момент использование оперативной памяти процесса Nodejs резко увеличивается, а также общее количество используемых файлов дескрипторов. Когда я отображаю использованные, у меня много CLOSE_WAIT.
Возвращение lsof | grep 'node'
:
node 9945 9946 root 104u IPv6 3419932363 0t0 TCP localhost:3000->localhost:44834 (CLOSE_WAIT)
node 9945 9946 root 105u IPv6 3419932370 0t0 TCP localhost:3000->localhost:44836 (CLOSE_WAIT)
node 9945 9946 root 106u IPv6 3419932374 0t0 TCP localhost:3000->localhost:44838 (CLOSE_WAIT)
node 9945 9946 root 107u IPv6 3419932379 0t0 TCP localhost:3000->localhost:44840 (CLOSE_WAIT)
node 9945 9946 root 108u IPv6 3419932396 0t0 TCP localhost:3000->localhost:44852 (CLOSE_WAIT)
node 9945 9946 root 109u IPv6 3419932401 0t0 TCP localhost:3000->localhost:44854 (CLOSE_WAIT)
node 9945 9946 root 110u IPv6 3419932405 0t0 TCP localhost:3000->localhost:44856 (CLOSE_WAIT)
node 9945 9946 root 111u IPv6 3419932410 0t0 TCP localhost:3000->localhost:44858 (CLOSE_WAIT)
Другой журнал, показывающий распределение файловых дескрипторов по процессам:
18/03/2020 04:37:09 fd=138059 fdNode=73442 fd3000=10016 cbPid=24374 cbFd=19 cbFd2=33 cbCpu=3.4 cbRam=37.5 cbRss=1518032
Monitor Error Detected => 18/03/2020 04:37:09 ram=37.5 fd_limit=0
pid= 9945 with18863 fds: PM2 v3.5.1: God => fullCmd=PM2 v3.5.1: God Daemon (/root/.pm2)
pid=23496 with 243 fds: nginx => fullCmd=nginx: worker process
pid= 1 with 73 fds: systemd => fullCmd=/lib/systemd/systemd--system--deserialize35
pid= 6241 with 72 fds: nginx => fullCmd=nginx: worker process
pid= 6262 with 32 fds: systemd-journal => fullCmd=/lib/systemd/systemd-journald
pid= 1924 with 25 fds: systemd => fullCmd=/lib/systemd/systemd--user
pid= 900 with 19 fds: lxcfs => fullCmd=/usr/bin/lxcfs/var/lib/lxcfs/
pid=24374 with 18 fds: node /opt/zebri => fullCmd=node **/server.js
pid= 906 with 17 fds: systemd-logind => fullCmd=/lib/systemd/systemd-logind
pid= 6169 with 14 fds: systemd-udevd => fullCmd=/lib/systemd/systemd-udevd
где
- fd =>
lsof | wc -l
- fdNode =>
lsof | grep "node" | wc -l
- fd3000 =>
lsof -i:3000 | wc -l
- cbFd =>
ls /proc/$PID_OF_THE_NODE_PROCESS/fd | wc -l
- cbFd2 =>
lsof -a -p $PID_OF_THE_NODE_PROCESS | wc -l
Для HTTP-запросов, поступающих в процесс, существует только один GET, который вызывается каждые 15 секунд всеми устройства на нем, которые позволяют только проверить, что процесс активен.
В конце запускается механизм OOM killer.
Out of memory: Kill process 6572 (node /**/server.js) score 190 or sacrifice child
Я не понимаю проблему, так как Это происходит случайно, поэтому я прошу вашей помощи, если вы уже сталкивались с этой проблемой.
Заранее спасибо