低WSO2ESB https代理服务性能

时间:2015-10-15 11:51:08

标签: java web-services ssl tomcat7 wso2esb

我正在为Web服务创建一些代理服务,其限制是必须保护所有连接(通过https)。 在对WSO2Server进行一些配置更改后,我终于可以成功地创建那些代理服务。通过WSO2Esb在客户端和最终的Web服务之间建立连接是可以的,但连接速度很慢。

为了解决网络问题,我们允许通过http的请求具有非常好的性能。总而言之,通过http的相同客户端请求持续不到1秒,如果我们通过https执行它持续20秒或多或少。

尝试了解问题的其他测试:我通过https直接向最终Web服务请求,而不通过WSO2ESB。在这种情况下,https性能非常好(非常类似于请求是通过http完成的)。

所以问题可能出在WSO2ESB服务器配置的某些部分。始终第一个https请求持续相同(20秒),如果我执行多个以下操作,则持续时间少于1.5秒。所以问题可能是某种与ssl连接相关的超时。

更有用的信息:

  • wso2server版本:4.8.1
  • 测试的Java版本:1.7.0_45和1.8.0_60
  • 在CARBON_HOME / bin / wso2server.sh中添加了参数:-Dhttps.protocols = TLSv1,TLSv1.1,TLSv1.2
  • 来自CARBON_HOME/repository/conf/tomcat /catalina-server.xml:

    的Tomcat连接器配置
    <Connector  protocol="org.apache.coyote.http11.Http11NioProtocol"
    port="8888"
    bindOnInit="false"
    sslProtocol="TLS"
    sslEnabledProtocols="TLSv1,TLSv1.1,TLSv1.2"
    maxHttpHeaderSize="8192"
    acceptorThreadCount="2"
    maxThreads="250"
    minSpareThreads="50"
    disableUploadTimeout="false"
    enableLookups="false"
    connectionUploadTimeout="120000"
    maxKeepAliveRequests="200"
    acceptCount="200"
    server="WSO2 Carbon Server"
    clientAuth="false"
    compression="on"
    scheme="https"
    secure="true"
    SSLEnabled="true"
    compressionMinSize="2048"
    noCompressionUserAgents="gozilla, traviata"
    compressableMimeType="..."
    URIEncoding="UTF-8" />
    

也许我错过了axis2.xml配置文件中的内容($ CARBON_HOME / repository / conf / axis2 / axis2.xml)?以下是与以下内容相关的部分:

  • TransportReceiver(https部分):
 
    <transportReceiver name="https" class="org.apache.synapse.transport.passthru.PassThroughHttpSSLListener">
        <parameter name="port" locked="false">8443</parameter>
        <parameter name="non-blocking" locked="false">true</parameter>
        <parameter name="bind-address" locked="false">XXX.XXX.XXX.XXX</parameter>
        <parameter name="WSDLEPRPrefix" locked="false">https://XXX.XXX.XXX.XXX:8443</parameter>
        <parameter name="httpGetProcessor" locked="false">org.wso2.carbon.transport.nhttp.api.PassThroughNHttpGetProcessor
        <parameter name="SSLProtocol">TLSv1.2</parameter>
        <parameter name="keystore" locked="false">
            <KeyStore>
                <Location>repository/resources/security/wso2carbon.jks</Location>
                <Type>JKS</Type>
                <Password>XXX</Password>
                <KeyPassword>XXX</KeyPassword>
            </KeyStore>
        </parameter>
        <parameter name="truststore" locked="false">
            <TrustStore>
                <Location>repository/resources/security/client-truststore.jks</Location>
                <Type>JKS</Type>
                <Password>XXX</Password>
            </TrustStore>
        </parameter>
   </transportReceiver>

 
  • TransportSender(https部分):
 
    <transportSender name="https" class="org.apache.synapse.transport.passthru.PassThroughHttpSSLSender">
        <parameter name="non-blocking" locked="false">true
        <parameter name="SSLProtocol">TLSv1.2</parameter>
        <parameter name="keystore" locked="false">
            <KeyStore>
                <Location>repository/resources/security/wso2carbon.jks</Location>
                <Type>JKS</Type>
                <Password>XXXX</Password>
                <KeyPassword>XXXX</KeyPassword>
            </KeyStore>
        </parameter>
        <parameter name="truststore" locked="false">
            <TrustStore>
                <Location>repository/resources/security/client-truststore.jks</Location>
                <Type>JKS</Type>
                <Password>XXXXX</Password>
            </TrustStore>
        </parameter>
        <parameter name="HostnameVerifier">AllowAll</parameter>        
    </transportSender>
 

问题已解决。

低性能SSL问题是由网络防火墙的限制引起的。防火墙阻止了与DNS服务器的连接,因此WSO2ESB无法正确验证客户端证书和客户端主机名。

在防火墙中添加新规则后,WSO2ESB的SSL性能非常好。

谢谢。

0 个答案:

没有答案