我们偶尔会遇到一个问题,即我们尝试启动Jrun服务并且它因以下两个错误而失败:
错误JRun命名服务无法在端口2902上启动 java.net.BindException:其他服务或进程正在使用的端口:2902
info没有为此服务器配置JDBC数据源(请参阅jrun-resources.xml) error java.net.BindException:其他服务或进程正在使用的端口:8300
然后我们必须重新启动机器并且Jrun没有问题。这是非常间歇性的 - 可能每10次重启Jrun服务中就有一次。
我在StackOverflow上看到另一个参考,如果Windows服务需要超过30秒才能重新启动Windows,则会关闭启动过程。也许这就是问题所在?日志确实表明在发出重新启动命令后大约37秒内抛出这些错误。
我们在WinServer 2008上使用64位平台。
谢谢!
答案 0 :(得分:3)
我们在某些服务器上遇到过类似的问题。不幸的是,netstat从未向我们表明任何形式的实际端口冲突。我怀疑它与我们最近在服务器上部署ColdFusion“累积修补程序”有关。我们使用CF 8.0.1企业的多服务器版本,每台机器上有大量实例 - 每台机器都有自己的JVM和自己独特的端口集。每个CF实例都附加到自己的IIS网站,并作为自己的Windows服务运行。
在过去几周内,我们在启动时,在我们的32位计算机以及64位计算机上开始获得类似的“端口使用”异常,所有这些计算机都运行Windows Server 2003.我发现有几种可能罪魁祸首并尝试以下方法:
<port>0</port>
的RMI传输层的条目 - 根据JRun文档,这意味着“选择一个随机端口”。我做了非随机且不同的每个实例(在2600-2650范围内)并重新启动每个实例。事情暂时改善,也许是巧合。<port>2522</port>
- 所以我将这些更改为2500-2550范围内每个实例的不同端口,然后重新启动每个实例。这似乎没有任何帮助。-DWSConfig.PortScanStartPort=12900
添加到java.args,以便它可以检测我的CF实例。 (默认情况下,它只扫描端口2900-3000。有关详细信息,请参阅bpurcell.org。这是一个旧帖子,但仍然相关。)到目前为止一直很好!我最好的猜测是Adobe(或MS Windows)改变了一些代码抓取“随机”端口的方式。但到目前为止我所知道的是,上面列出的步骤似乎解决了这个问题。
答案 1 :(得分:1)
您是否确认服务实际上已停止?任务管理器应该不显示jrun.exe的实例。您还可以通过打开命令窗口并运行
来检查绑定到该端口的内容 netstat -a -b
这将列出所有打开的端口,以及正在使用它们的程序。您也可以使用
netstat -a -o
与上述内容相同,但会列出进程ID而不是程序名。然后,您可以与任务管理器交叉引用它们。您需要通过转到View-&gt; Select Columns并确保选中PID来启用在任务管理器中显示PID。我的猜测是jrun进程没有及时关闭。