Jrun ColdFusion服务间歇性地无法启动

时间:2009-10-03 18:59:48

标签: coldfusion windows-server-2008 jrun

我们偶尔会遇到一个问题,即我们尝试启动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位平台。

谢谢!

2 个答案:

答案 0 :(得分:3)

我们在某些服务器上遇到过类似的问题。不幸的是,netstat从未向我们表明任何形式的实际端口冲突。我怀疑它与我们最近在服务器上部署ColdFusion“累积修补程序”有关。我们使用CF 8.0.1企业的多服务器版本,每台机器上有大量实例 - 每台机器都有自己的JVM和自己独特的端口集。每个CF实例都附加到自己的IIS网站,并作为自己的Windows服务运行。

在过去几周内,我们在启动时,在我们的32位计算机以及64位计算机上开始获得类似的“端口使用”异常,所有这些计算机都运行Windows Server 2003.我发现有几种可能罪魁祸首并尝试以下方法:

  1. 在每个CF实例的jrun-jms.xml中,有一个读取<port>0</port>的RMI传输层的条目 - 根据JRun文档,这意味着“选择一个随机端口”。我做了非随机且不同的每个实例(在2600-2650范围内)并重新启动每个实例。事情暂时改善,也许是巧合。
  2. 在同一个文件中,稍后在TCPIP传输的条目下,每个实例都默认为<port>2522</port> - 所以我将这些更改为2500-2550范围内每个实例的不同端口,然后重新启动每个实例。这似乎没有任何帮助。
  3. 我试着研究2500-3000范围内的端口是否可以用于任何其他目的,我找不到任何明显的东西,而且netstat并没有告诉我我的任何选择都在使用中。 / LI>
  4. 我在网上发现了一些关于Windows指定1024到5000端口作为“动态端口”范围的内容,所以我在jrun-jms.xml中设置的端口号上加了10000,然后重新启动每个实例。仍然没有帮助。
  5. 我尝试更改jndi.properties中的端口,也是通过向端口号添加10000。不幸的是,这意味着擦除我与IIS的所有wsconfig连接并从头开始再次创建它们。我还必须编辑wsconfig_jvm.config,将-DWSConfig.PortScanStartPort=12900添加到java.args,以便它可以检测我的CF实例。 (默认情况下,它只扫描端口2900-3000。有关详细信息,请参阅bpurcell.org。这是一个旧帖子,但仍然相关。)到目前为止一直很好!
  6. 我最好的猜测是Adobe(或MS Windows)改变了一些代码抓取“随机”端口的方式。但到目前为止我所知道的是,上面列出的步骤似乎解决了这个问题。

答案 1 :(得分:1)

您是否确认服务实际上已停止?任务管理器应该不显示jrun.exe的实例。您还可以通过打开命令窗口并运行

来检查绑定到该端口的内容

netstat -a -b

这将列出所有打开的端口,以及正在使用它们的程序。您也可以使用

netstat -a -o

与上述内容相同,但会列出进程ID而不是程序名。然后,您可以与任务管理器交叉引用它们。您需要通过转到View-&gt; Select Columns并确保选中PID来启用在任务管理器中显示PID。我的猜测是jrun进程没有及时关闭。