令人愤怒的heisenbug在Java / WAS 8.5自由配置文件中的套接字绑定

时间:2012-12-18 14:21:17

标签: java websphere strace heisenbug websphere-liberty

我在Java 6 / Websphere 8.5上获得套接字绑定错误(Liberty配置文件,Websphere的缩减版,可用版本)。当我再次立即杀死并启动应用服务器时,我得到:

  

[ERROR] CWWKO0221E:TCP通道defaultHttpEndpoint初始化   没有成功。套接字绑定未成功用于主机*和端口   9988.该端口可能已在使用中。

这是因为Java或WAS没有正确发布IPv6套接字。

但是,这里有一个障碍:当我通过strace运行WLP时(使用-f选项跟踪子进程),绑定错误不会发生。

WT。正在进行?为什么我不能通过strace来抓住这个?

我可以通过指定soReuseAddress来解决这个问题,但是我在这里担心的是为什么/如何通过strace捕获这个问题(不依赖于愚蠢的运气,那就是)以及为什么它不起作用?

1 个答案:

答案 0 :(得分:3)

您可能会发现将soReuseAddr选项添加到httpEndpoint配置帮助中,尤其是在Linux平台上。例如,

<httpEndpoint id="defaultHttpEndpoint"
             host="*"
             httpPort="9080">
      <tcpOptions soReuseAddr="true" />
 </httpEndpoint>

尽管服务器尝试次数最多,但操作系统可能需要一段时间才能释放端口,这对于Liberty尤其明显,因为它往往会快速反弹。