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集群配置的问题。 “打开文件”正在等待关闭两个节点之间的集群通信。请参阅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 服务设置超时