【问题标题】:wso2 esb connection timeout tuningwso2 esb 连接超时调优
【发布时间】:2014-07-28 05:57:39
【问题描述】:

配置: WSO2ESB 4.8.0\4.8.1 操作系统:Linux\FreeBSD

CLIENT <-> ESB <-> BACKEND

这是我的问题: 如果我为示例服务创建最简单的直通代理,该代理以&gt; 60 sec 的延迟响应。当 esb 关闭与客户端的连接而没有任何响应时,我收到错误消息。顺便说一句,根据soap tracer日志,ESB从后端接收数据,但连接"CLIENT &lt;-&gt; ESB"当时已经关闭。

我尝试设置这些值:

存储库/conf/axis2/axis2_client.xml

    <transportSender name="http" class="org.apache.axis2.transport.http.CommonsHTTPTransportSender"
            (...)
            <parameter name="SO_TIMEOUT">120000</parameter>
            <parameter name="CONNECTION_TIMEOUT">120000</parameter>
        </transportSender>
        <transportSender name="https" class="org.apache.axis2.transport.http.CommonsHTTPTransportSender">
            (...)
            <parameter name="SO_TIMEOUT">120000</parameter>
            <parameter name="CONNECTION_TIMEOUT">120000</parameter>
        </transportSender>

存储库/conf/nhttp.properties

http.socket.timeout=600000

存储库/conf/axis2/axis2.xml

<transportReceiver name="http" class="org.apache.synapse.transport.nhttp.HttpCoreNIOListener">
      (...)
        <parameter name="SO_TIMEOUT" locked="false">120000</parameter>
        <parameter name="CONNECTION_TIMEOUT" locked="false">120000</parameter>
      (...)
    </transportReceiver>


    <transportReceiver name="https" class="org.apache.synapse.transport.nhttp.HttpCoreNIOSSLListener">
       (...)
        <parameter name="SO_TIMEOUT" locked="false">120000</parameter>
        <parameter name="CONNECTION_TIMEOUT" locked="false">120000</parameter>
        (...)
     </transportReceiver>


<transportSender name="http" class="org.apache.synapse.transport.nhttp.HttpCoreNIOSender">
        (...)
        <parameter name="SO_TIMEOUT" locked="false">120000</parameter>
        <parameter name="CONNECTION_TIMEOUT" locked="false">120000</parameter>

    </transportSender>
    <transportSender name="https" class="org.apache.synapse.transport.nhttp.HttpCoreNIOSSLSender">
            (...)
            <parameter name="SO_TIMEOUT" locked="false">120000</parameter>
            <parameter name="CONNECTION_TIMEOUT" locked="false">120000</parameter>
</transportSender>

存储库/conf/synapse.properties

synapse.sal.endpoints.sesssion.timeout.default=600000
synapse.global_timeout_interval=600000

#In memory statistics cleaning state 
statistics.clean.enable=false

# Dependency tracking Synapse observer
# Comment out to disable dependency management
synapse.observers=org.wso2.carbon.mediation.dependency.mgt.DependencyTracker

# Uncomment following to support fallback XPATH 2.0 support with DOM and Saxon
#synapse.xpath.dom.failover.enabled=true
synapse.temp_data.chunk.size=3072

# A configuration to add tenant information to the out thread local carbon context
synapse.carbon.ext.tenant.info=org.wso2.carbon.mediation.initializer.handler.CarbonTenantInfoConfigurator

#external component registration for secure vault xpath function lookup
synapse.xpath.func.extensions=org.wso2.carbon.mediation.security.vault.xpath.SecureVaultLookupXPathFunctionProvider

repository/conf/passthru-http.properties

## Pass-through HTTP transport specific tuning parameters
worker_pool_size_core=400
worker_pool_size_max=500
worker_thread_keepalive_sec=600
#worker_pool_queue_length=-1
#io_threads_per_reactor=2
io_buffer_size=16384
#http.max.connection.per.host.port=32767
http.socket.timeout=600000

# This property is crucial for automated tests
http.socket.reuseaddr=true

## Other parameters
#http.user.agent.preserve=false
#http.server.preserve=true
#http.connection.disable.keepalive=false
rest.dispatcher.service=__MultitenantDispatcherService
# URI configurations that determine if it requires custom rest dispatcher
rest_uri_api_regex=\\w+://.+:\\d+/t/.*|\\w+://.+\\w+/t/.*|^(/t/).*
rest_uri_proxy_regex=\\w+://.+:\\d+/services/t/.*|\\w+://.+\\w+/services/t/.*|^(/services/t/).*

没有运气。 测试后端 URL:http://rzrbld.ru/timeout/index.php(硬编码 70 秒超时)

【问题讨论】:

  • 请也分享您的突触配置
  • 已更新。添加了存储库/conf/synapse.properties

标签: wso2 wso2esb wso2carbon


【解决方案1】:

由于您使用 nhttp 作为传输,因此在 nhttp.properties 中添加 [1] 和 [2]

[1] 和 [2] 将帮助您在服务器端和客户端分别定义超时

[1]http.socket.timeout.receiver = 侦听器的套接字超时 [2]http.socket.timeout.sender = Sender 的套接字超时

示例 [1] http.socket.timeout.receiver=120000 [2] http.socket.timeout.sender=120000

【讨论】:

  • 谢谢!这很有帮助。有了这个属性就可以正常工作了。
【解决方案2】:

在 nhttp.properties 中增加 http.socket.timeout 将无济于事,因为 ESB-4.8.X 默认使用 passthru 传输。请将 http.socket.timeout=600000 添加到 ESB_HOME/repository/conf/passthru-http.properties 文件并重启服务器。

谢谢! 夏利莎

【讨论】:

  • 感谢您的回复!但我将 ESB 与 axis2_nhttp.xml 配置一起使用。传输是 org.apache.synapse.transport.nhttp.HttpCoreNIO%%。我正在更新我的帖子并添加了存储库/conf/passthru-http.properties。连接仍然关闭。
【解决方案3】:

传递代理使用默认配置的匿名端点,您应该尝试添加和使用可以配置超时的命名端点。

另一种解决方案是使用标头“To”并发送中介。在这种情况下,应该考虑使用 http.socket.timout 配置的超时时间:

<header name="To" value="http://host:port/xxx"/>
<send/>

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2016-10-23
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多