Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/visual-studio-2010/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java Tomcat进程阻止从重新绑定到porton重启的其他进程_Java_Servlets_Network Programming - Fatal编程技术网

Java Tomcat进程阻止从重新绑定到porton重启的其他进程

Java Tomcat进程阻止从重新绑定到porton重启的其他进程,java,servlets,network-programming,Java,Servlets,Network Programming,这有点复杂,可能属于其他StackExchange站点 我们有一个Tomcat web应用程序和一个“审计”应用程序。审计应用程序在自己的进程中运行,并侦听端口60000的HTTP请求。在正常情况下,Tomcat通过HTTP向审计进程发送审计数据。两个进程都在同一台主机上运行 系统为CentOS 5.7,Tomcat版本为6.0.33。审核应用程序是Flume代理 有时,我们的审计应用程序需要重新启动。如果成功了,它通常会成功 但为了让我们感到舒服,当审计应用程序重新启动时,它会失败,端口600

这有点复杂,可能属于其他StackExchange站点

我们有一个Tomcat web应用程序和一个“审计”应用程序。审计应用程序在自己的进程中运行,并侦听端口60000的HTTP请求。在正常情况下,Tomcat通过HTTP向审计进程发送审计数据。两个进程都在同一台主机上运行

系统为CentOS 5.7,Tomcat版本为6.0.33。审核应用程序是Flume代理

有时,我们的审计应用程序需要重新启动。如果成功了,它通常会成功

但为了让我们感到舒服,当审计应用程序重新启动时,它会失败,端口60000上出现BindException。我们可以停止审计应用程序,确保它真的死了,然后重新启动它,但它总是失败。解决此问题的唯一方法是重新启动Tomcat服务器——不知何故,它阻止了审计应用程序侦听端口60000

当我们在audit应用程序关闭时执行“lsof”并在端口60000上查找数据时,我们得到:

java      13178    tomcat   47u     IPv6     34165085         TCP <hostname>:60000-><hostname>:60000 (ESTABLISHED)
java 13178 tomcat 47u IPv6 34165085 TCP:60000->:60000(已建立)
我们无法真正理解这个只写入localhost:60000的Tomcat进程是如何偶尔阻止其他应用程序侦听端口60000的


web应用程序正在使用内置于Java中的默认HTTP连接缓存(如果可能相关)。

我猜这与端口60000处于“临时端口”范围有关。也许您的Tomcat Web应用程序有时会以某种方式获取端口60000,从而阻止另一个应用程序绑定到该端口。可能尝试使用不在审计服务器临时范围内的端口?

这可能与fin_wait_2没有超时有关。尝试将其设置为一个小值。什么是netstat-an秀?@jontro哇,不,我需要等到它再次进入那种状态。忽略上一条评论(已删除)@ThomasAndrews Tomcat上的应用程序如何发送数据?它打开一个端口60000的套接字?它打开一个HttpURLConnection。Java运行时可以自由地重用连接并以这种方式应用连接池,但这意味着我对代码的细节有点迷茫。是的,我考虑过这种可能性,但没有尝试过,因为我看不到发生这种情况的机制。它现在在我要尝试的事情列表中的位置更高。是的,能够在60000端口监听时重现这个问题,但不能在短暂范围之外的端口监听。