线上服务出错Error: connect ECONNREFUSED,但内部功能正常进行?
发布于 9 年前 作者 jiangliqin 18550 次浏览 最后一次编辑是 8 年前 来自 问答

线上服务出现Error: connect ECONNREFUSED错误,客户端几个小时都请求失败,但是服务内部的统计和其他内部功能正常运行,如果服务挂掉的话既然客户端无法请求失败,内部机制应该也停止啊。 用的是pm2,如果服务挂了,话说不是守护进程自己重启吗?手动重启后又恢复正常了,在日志中找不到任何错误根源,就是客户端无法请求服务Error: connect ECONNREFUSED。 有经验的朋友们,遇到过类似问题么?查找了好长时间没有任何头绪。。。

7 回复

可能是 DNS 模块的错误。

@yjhjstz 你指nginx?

可能是端口挂了,在服务器上执行下面几个命令看看

netstat -anopt
service iptables status
wget 127.0.0.1:8080

要同时检查nginx使用的端口和服务进程使用的端口

@ayiis 恩,有可能,不过端口挂了是个啥情况?

@jiangliqin 啥情况都有可能啊,我就是指网络的问题。被防火墙阻止了、被别的程序占用了、端口没有监听成功、监听错了端口等等 Error: connect ECONNREFUSED 是代表连接被拒绝了,一般来说并没有走到程序那里,常见的解决步骤就是 iptables 看防火墙有没有打开这个端口 netstat 看哪个程序占用这个端口 wget 本地测试这个端口能否连通

使用了nginx 转发的话首先要看 nginx有没有跑起来,nginx的端口通不通等等

@ayiis 可是在线上跑了快一个月,突然出现的,也没有新增服务。你上面列举的种种可能一般指刚启动的时候吧?现在没法模拟当时的场景,重启pm2后我再排查的

@jiangliqin 不好说一般,线上环境也有挺奇怪的情况。不能重现那没办法,现在只能去翻日志了,nginx的日志pm2的日志和服务本身的日志

回到顶部