【发布时间】:2011-04-26 07:48:24
【问题描述】:
我有一个red5 server (JAVA) 在我的 Linux 服务器上运行。
有时,服务器会关闭。当我尝试重新启动它时出现错误:
“绑定错误,此端口已被占用”。
所以我尝试用 killall -9 java 杀死服务器 并尝试重新启动服务器:同样的错误。
我必须等待一段时间(大约 2-3 分钟)然后重新启动它:这行得通。
我只需要知道为什么当我终止进程时,我仍然需要等待 2-3 分钟,然后端口 1935 才空闲,我可以再次运行服务器。
有没有办法立即终止这个进程并释放端口?
【问题讨论】:
-
我不相信将 SIGKILL 归咎于端口清理失败的答案。操作系统完全知道进程已经消失,并以标准方式放弃其资源。刚刚关闭的 TCP 侦听端口的标准方法是在一段时间内不可用,以防止连接到错误的服务器。正如贾斯汀的回答中提到的那样,使用 SO_REUSEADDR 可以最容易地避免这种情况。
标签: java linux port red5 kill-process