Oracle Weblogic Server:java.net.SocketException“打开的文件太多”

Posted

技术标签:

【中文标题】Oracle Weblogic Server:java.net.SocketException“打开的文件太多”【英文标题】:Oracle Weblogic Server: java.net.SocketException "Too many open files" 【发布时间】:2014-01-28 07:33:22 【问题描述】:

在使用 web 服务调用加载服务器时出现以下异常:

<2013-nov-19 kl 0:23 CET> <Critical> <Server> <BEA-002616> <Failed to listen on 
channel "Default" on 10.39.21.109:28404, failure count: 1, failing for 0 seconds,
java.net.SocketException: Too many open files (errno:24)>

使用的机器是 HP-UX。

如果我查看应用程序已打开的这些文件(使用 lsof),我可以看到有一个尚未关闭的 Web 服务连接。

java    19290 xxxx 2102u  IPv4 0xe00000038b2df680    0t2534      
TCP u30427.xx.yy:63565->u30436.xx.yy:36693 (CLOSE_WAIT)

这些连接会随着时间的推移而增加并达到允许的最大文件数,因此会抛出“打开的文件过多”。

奇怪的是,如果我使用 HTTP(没有 SSL)它工作正常,但是当使用 HTTPS/SSL 时,我得到了这个错误。

这里有人知道我可以做些什么来解决这个问题吗?

谢谢!

【问题讨论】:

对这个案例进行了更多的分析,终于明白了,问题是weblogic集群配置的问题。 “打开文件”正在等待关闭两个节点之间的集群通信。请参阅 请参阅:modj.org/home/aktueles/… 【参考方案1】:

BEA-002616

严重:无法在 listenAddress:port 上侦听通道“通道”,失败计数:失败 1,失败 secs2 秒,e3

说明

服务器侦听器将在短暂延迟后重试侦听。 原因

服务器在尝试接受客户端连接时出现异常。它将尝试退避以帮助恢复。

动作

需要增加打开文件描述符数量的 OS 限制(FD 限制)。调整可能有助于服务器接受更多客户端连接的操作系统参数(例如 TCP 接受积压日志)。

请查看以下链接

http://modj.org/home/aktueles/bea-002616-failed-to-listen-on-channel-on-listenaddressport/a7e2db8254aee4603e4ecaf98a43e85e.html

【讨论】:

【参考方案2】:

Oracle Fusion Middleware active 在类 Unix 操作系统上使用文件描述符。您应该为您的用户(启动 WebLogic Server 的用户)设置打开文件描述符限制:

在 /etc/security/limits.conf 文件中添加以下信息:

weblogic soft nproc 32768
weblogic hard nproc 32768
weblogic soft nofile 32768
weblogic hard nofile 32768

(weblogic 是您的用户),然后使用 weblogic 用户重新登录并测试打开文件描述符限制:

$ ulimit -n

【讨论】:

以上是关于Oracle Weblogic Server:java.net.SocketException“打开的文件太多”的主要内容,如果未能解决你的问题,请参考以下文章

Oracle WebLogic Server 10.3.2漏洞修复方法

如何有效管理您的Oracle WebLogic Server 12c?

Eclipse Luna 的 Oracle Weblogic Server 插件启动错误

使用 oracle weblogic server 10.3 (java) 为 web 服务设置超时

每周播报Oracle WebLogic Server反序列化远程代码执行漏洞成焦点

Oracle Weblogic Server:java.net.SocketException“打开的文件太多”