【问题标题】:AMQPConnector on Mule - SocketException: Too many open filesMule 中的 AMQP 连接器 - SocketException:打开的文件太多
【发布时间】:2016-12-01 18:33:04
【问题描述】:

我长期使用 Mule 应用程序AMQPConnector。 前几天我看到一个错误:打开的文件太多,崩溃,并且在我重新启动 Mule 应用程序之前无法发送请求。

Mule 代码是这样的:(关键部分)

<amqp:connector name="AMQPConnector" validateConnections="true" 
            doc:name="AMQPConnector" host="x.x.x.x" port="5672"
            password="xxxxx" username="xxx">
            <reconnect-forever frequency="1000" blocking="false" />

来自流:

<flow name="first">
   <http:listener config-ref="HTTP_Listener_Configuration" path="order/submit" doc:name="HTTP"/>
   <byte-array-to-object-transformer doc:name="Byte Array to Object"/>
   <json:object-to-json-transformer doc:name="Object to JSON"/>
   <json:json-to-object-transformer returnClass="java.lang.Object" doc:name="JSON to Object"/>
   <set-session-variable value="#[payload]" variableName="order" doc:name="Session Variable" />
   <set-payload doc:name="order" value="#[payload.info]" />
   <amqp:outbound-endpoint queueName="xxxx"                            
                        responseTimeout="100000" exchange-pattern="request-response" 
                        connector-ref="AMQPConnector" doc:name="XXXX" />
   <object-to-string-transformer doc:name="Object to String"/>
   <logger message="response from queue #[payload]"
                level="INFO" doc:name="Logger" />
</flow>

<flow name="second">
    <amqp:inbound-endpoint queueName="xxxx"
        responseTimeout="10000" exchange-pattern="request-response"
        connector-ref="AMQPConnector" doc:name="AMQP-0-9" />    
    <byte-array-to-object-transformer doc:name="Byte Array to Object" />
    <json:object-to-json-transformer doc:name="Object to JSON" />

    <http:request config-ref="HTTP_Request_XXXX" host="#[sessionVars['partUrl']]"  path="#[sessionVars['path']]" method="#[sessionVars['method']]" doc:name="HTTP">
       <http:request-builder>
            <http:header headerName="#[sessionVars['key']]" value="#[sessionVars['value']]"/>
       </http:request-builder>
   </http:request>  
</flow>

错误异常日志为:

2016-11-27 04:30:12,272 [amqpReceiver.1018] ERROR org.mule.exception.CatchMessagingExceptionStrategy - 
Message               : Error sending HTTP request. Message payload is of type: String
Code                  : MULE_ERROR--2

Exception stack is:
1. Too many open files (java.net.SocketException) sun.nio.ch.Net:-2 (null)
2. java.net.SocketException: Too many open files (java.util.concurrent.ExecutionException)
  org.glassfish.grizzly.impl.SafeFutureImpl$Sync:349 (null)
3. java.util.concurrent.ExecutionException: java.net.SocketException: Too many open files (java.io.IOException)
  org.mule.module.http.internal.request.grizzly.GrizzlyHttpClient:223 (null)
4. Error sending HTTP request. Message payload is of type: String (org.mule.api.MessagingException)
  org.mule.module.http.internal.request.DefaultHttpRequester:287 (http://www.mulesoft.org/docs/site/current3/apidocs/org/mule/api/MessagingException.html)

Root Exception stack trace:
java.net.SocketException: Too many open files
at sun.nio.ch.Net.socket0(Native Method)
at sun.nio.ch.Net.socket(Net.java:411)
at sun.nio.ch.Net.socket(Net.java:404)
+ 3 more (set debug level logging or '-Dmule.verbose.exceptions=true' for everything)

请求被 http-listner 接受,系统停止。

可能会错过一项配置,或者关闭连接.... (我在增加系统或在 java 类中添加代码等的解决方案中看到了同样的问题...... - 这对我没有帮助,我没有 java 类。)

有人可以帮助我吗?

【问题讨论】:

    标签: sockets mule amqp connector


    【解决方案1】:

    这是 Anypoint Studio 的一个问题。不幸的是,您的操作系统只能打开这么多文件。根据您的操作系统,此限制会有所不同,但是我在使用最新的 Anypoint Studio(5 到 6)的 Ubuntu 和 macOS 中都遇到了同样的问题。

    我可以建议的最好的事情是重新启动并尝试在使用 Anypoint 的任何时候将打开的文件保持在最低限度。当我一次只处理 4-5 个文件时,我通常可以走一整天而无需重新启动。

    由于大量使用,我最终需要在 5 小时内重新启动。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-12-15
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多