update_notifier 造成nodejs进程数量增长的问题
2019-04-18 14:11
1191 查看
最近运维老大j哥找到我说了一个事儿:某私有化部署的线上环境nodejs进程数量多达1000+,对比公版线上环境的66个进程数显得十分诡异。并且单个nodejs进程所占用swap空间也较大,也不释放空间,日积月累下来是一个隐患。
我的debug过程比较顺畅,记录下来以备有同样烦恼者借鉴。
先用top命令发现,系统Task数量高达1300+,然后使用命令:
ps -ef | grep node | wc -l
统计出有1306个进程
用ps -ef | grep node 查看进程列表
发现全是:
问题原因:
这是npm的一个更新包机制的服务。这些进程一直未释放,所以就导致了Task数过高,由于nodejs进程数超过了最大系统线程池数量,由此可能造成之前request包请求的时候报escokettimeout.
check.js中对如果不能更新成功则子进程一直存活的逻辑,是造成这些进程一直不exit的原因。华西项目是私有化部署在内网中,无法连到外网拉取到更新,所以会一直生成进程而不停止。
解决办法:
先杀死相关 node check.js的进程
pgrep -a node|awk '{print $1}'|xargs kill -9
然后处理更新。
只要让这个更新操作不执行即可,有如下方法:
1.移除check.js文件即可。
2.在npm相关设置中设置不自动更新参数。(NO_UPDATE_NOTIFIER)
相关文章推荐
- Oracle 11.2.0.3数据库CJQ进程造成row cache lock等待事件影响job无法停止问题分析
- Google Update安装程序进程占用问题
- nginx使用zookeeper造成进程死锁和崩溃问题和解决方案
- linux下C++进程内存增长问题的分析
- SqlAdapter.Update() 某些情况下数量翻倍的问题。
- python多进程,进程迭代创建,造成电脑死机的问题解决
- 探讨由于死锁或进程阻塞造成的ASP突然不能访问的问题
- linux xshell远程登录nodejs启动 断开链接会关闭进程问题
- 由于CRS磁盘dismount造成的CRS进程无法启动问题
- 亲身经历:软件线程数量超过硬件线程数量造成的性能问题
- 关于tuxedo进程服务自增长后报错问题分析
- 操作系统课程设计创建新进程造成消耗系统资源死机问题的原因
- 由于权限问题造成网站客户端连接进程创建失败解决方法!
- UpdatePanel Repeater内LinkButton造成页面刷新问题
- 客户需求不断变化造成的项目周期的增长的问题
- 多进程解决datasnap支持的tcp长连接数量少的问题
- MySql进程使用的文件描述符数量的问题
- linux中有关僵尸进程的问题
- 文件格式造成的环境变量问题
- 线程+异步委托解决因耗时长造成界面假死问题