今天在使用supervisord的时候,本来是想看看服务运行状态,supervisorctl -uxxx -pxxx status all的不小心执行成了supervisorctl -uxxx -pxxx stop all ,真是手贱,然后发现有个服务一直起不来暂时把此服务叫A服务
然后我寻思是不是supervisord启动了两个服务(大概率不可能),然后用命令netstat -ntlpu | grep8380,并没有这个端口。于是我就用
lsof -i :8380
如果以上命令找不到任何正在运行的进程,则很可能是因为这个端口号处于TIME_WAIT
状态。你可以使用以下命令来查看这个端口号的状态:
netstat -anp | grep 8380
如果发现了这个端口处于TIME_WAIT
状态,可以尝试通过修改/proc/sys/net/ipv4/tcp_tw_recycle
和/proc/sys/net/ipv4/tcp_tw_reuse
这两个文件来解决这个问题
echo 1 > /proc/sys/net/ipv4/tcp_tw_recycle
echo 1 > /proc/sys/net/ipv4/tcp_tw_reuse
如果等待了很久端口还是没有恢复,那么回到netstat -anp | grep 8380的命令,将占用端口的程序重启一下,然后再重启之前被占用的端口服务就能启动成功了