【问题标题】:EARs are automatically undeployed in jboss-as-7.1.1.FinalEAR 在 jboss-as-7.1.1.Final 中自动取消部署
【发布时间】:2016-06-09 07:38:01
【问题描述】:

当 EAR 在 jboss-as-7.1.1.Final 中自动取消部署时,我没有收到。

我可以看到这些日志:

ERROR org.apache.tomcat.util.net.JIoEndpoint$Acceptor [run] Socket accept failed: java.net.SocketException: Too many open files

WARN com.kpn.tie.ejbs.dao.webservice.tt.WebServiceProcessor [invoke] WebService unavailable. The request could not be completed due to technical problems. ; nested exception is:      java.net.SocketException: Too many open files

谁能告诉我这种行为的根本原因,并提出解决方案。

对于变通方法,在特定时间间隔重新启动 jboss 将解决此问题?

【问题讨论】:

    标签: java unix jboss


    【解决方案1】:

    原因可能是应用程序过载或文件描述符设置过低。由于这个原因,JVM 无法打开任何新的文件句柄,因此您将获得 Socket accept failed 用于传入请求。 一段时间后,Deployment-Scanner 开始发挥作用(默认为 5 秒)并尝试检查部署文件夹,这是不可能的,因为它无法打开任何文件句柄。因此它会感到困惑并停止部署的应用程序。

    第一个解决方案可以是: 停用扫描程序,使其仅在启动期间检查一次或删除部署扫描程序子系统并仅使用 CLI 进行部署。

    第二种解决方案可以是: 增加文件处理程序限制(打开文件大小)

    【讨论】:

      【解决方案2】:

      java.net.SocketException: 打开的文件太多

      在 Linux 上,您可以增加同时打开的文件数

      ulimit -n 2048
      

      这将允许2048 在当前会话中同时打开。该命令应该插入到会话配置中(例如 .bashrc 或类似的,取决于您使用的 shell)或 JBoss 启动脚本中。

      为了显示你可以使用的当前限制

      ulimit -n
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2013-10-31
        • 1970-01-01
        • 1970-01-01
        • 2012-11-15
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多