我们偶尔会遇到一个问题,我们试图启动Jrun服务,但它失败了,并出现以下两个错误:
错误JRun命名服务无法在端口2902上启动java.net.BindException:另一个服务或进程正在使用的端口: 2902
信息没有为此服务器配置JDBC数据源(请参阅jrun-resources.xml)错误java.net.BindException:另一个服务或进程正在使用的端口: 8300
然后我们必须重新启动机器,而Jrun没有出现任何问题。这是非常间歇性的-大约每10次重启Jrun服务就会发生一次。
我在StackOverflow上看到了另一个引用,如果Windows Services重启时间超过30秒,Windows就会关闭启动进程。也许这就是这里的问题所在?日志确实表明,这些错误是在发出重新启动命令后大约37+秒抛出的。
我们使用的是WinServer 2008上的64位平台。
谢谢!
发布于 2009-10-09 05:27:29
我们在一些服务器上遇到了类似的问题。不幸的是,netstat从来没有为我们指出任何类型的实际端口冲突。我怀疑这与我们最近在服务器上部署了ColdFusion“累积热修复”有关。我们使用CF 8.0.1企业版的多服务器版本,每台机器上都有大量实例--每台机器都有自己的JVM和一组不同的端口。每个CF实例都附加到其自己的IIS网站,并作为其自己的Windows服务运行。
在过去的几周内,在我们的32位机器和64位机器上,我们开始在启动时获得类似的“正在使用的端口”异常,所有这些机器都运行Windows Server 2003。我找到了几个可能的罪魁祸首,并尝试了以下方法:
RMI
<port>0</port> --根据JRun文档,这意味着“选择一个随机端口”。我将每个实例设置为非随机和不同的(在2600-2650范围内),并重新启动每个实例。情况暂时得到了改善,可能是coincidentally.<port>2522</port> --所以我将这些端口更改为2500-2550范围内的每个实例的不同端口,并重新启动每个实例。这似乎一点帮助都没有。-DWSConfig.PortScanStartPort=12900添加到java.args中,以便它可以检测我的CF实例。(默认情况下,它仅扫描端口2900-3000。详情请参见bpurcell.org。这是一个老帖子,但仍然有意义。)到目前为止还不错!我最好的猜测是Adobe (或MS Windows)改变了它的一些代码获取“随机”端口的方式。但到目前为止,我所确定的是,上面概述的步骤似乎已经解决了这个问题。
发布于 2009-10-07 22:06:26
您是否验证了服务实际上正在停止?任务管理器不应显示任何jrun.exe实例。您还可以通过打开命令窗口并运行以下命令来查看绑定到该端口的内容
netstat -a -b
这将列出所有打开的端口,以及正在使用它们的程序。您还可以使用
netstat -a -o它执行与上面相同的操作,但将列出进程id而不是程序名。然后,您可以与任务管理器交叉引用这些内容。您需要启用在任务管理器中显示PID,方法是转到View->Select Columns并确保选中PID。我的猜测是jrun进程没有及时关闭。
https://stackoverflow.com/questions/1514547
复制相似问题