【问题标题】:Web Farming [Tomcat] using delta manager performance issues使用增量管理器性能问题的 Web Farming [Tomcat]
【发布时间】:2016-08-31 08:40:06
【问题描述】:

我们正在进行 Web 农场 (Tomcat) 以实现可扩展性和提高吞吐量。但是我们没有得到预期的结果。

场景 1-(独立 Tomcat)

Load Generator       Jmeter (One instance)
Server               Tomcat(One instance)
Throughput           21k per second

场景 2-(网络农场场景)

Load Generator         Jmeter  [Three instances]  
Load Balancer          Nginx 
Server                 Tomcat [3 tomcats on three different machines]
Session Replication    Delta Manager
Throughput             30k per second

Jmeter 配置:

No of Threads (users)         1000
Ramp up period (in seconds)   1
Loop count                    forever

现在我们不明白我们哪里做错了,因为如果一个 tomcat 每秒可以提供 21K,那么逻辑上 3 个 Tomcat 应该至少提供 50K。我们的 tomcat 配置如下所示

服务器.xml:

<Cluster className="org.apache.catalina.ha.tcp.SimpleTcpCluster" 
                        channelSendOptions="8">
                <Channel className="org.apache.catalina.tribes.group.GroupChannel">
                <Membership   className="org.apache.catalina.tribes.membership.McastService"
                                address="228.0.0.4"
                                port="45564"
                                frequency="500"
                                dropTime="3000"/>

                <Sender className="org.apache.catalina.tribes.transport.ReplicationTransmitter">
                <Transport className="org.apache.catalina.tribes.transport.nio.PooledParallelSender"/>
                </Sender>
                <Receiver className="org.apache.catalina.tribes.transport.nio.NioReceiver"
                                address="XXX.XXX.XXX.90"
                                port="4000"       
                                autoBind="100"
                                selectorTimeout="5000"
                                maxThreads="6"/>
                <Interceptor  className="org.apache.catalina.tribes.group.interceptors.TcpFailureDetector"/>
                <Interceptor className="org.apache.catalina.tribes.group.interceptors.MessageDispatch15Interceptor"/></Channel>
                <Valve className="org.apache.catalina.ha.tcp.ReplicationValve" filter=""/>
                <Valve className="org.apache.catalina.ha.session.JvmRouteBinderValve"/>
       <!--<ClusterListener className="org.apache.catalina.ha.session.JvmRouteSessionIDBinderListener"/>-->
                <ClusterListener className="org.apache.catalina.ha.session.ClusterSessionListener"/>
                </Cluster>

上下文.xml:

<Manager className="org.apache.catalina.ha.session.DeltaManager"
                expireSessionsOnShutdown="false"
                notifyListenersOnReplication="true"/>

【问题讨论】:

    标签: tomcat nginx jmeter load-balancing web-farm


    【解决方案1】:

    我建议您添加一些合理的加速而不是保持 1 秒。

    • 您能否检查一下您的负载均衡器是否能够处理所有传入的请求以防万一网络农场?
    • 您能否确认这两个测试是否在同一个网络中执行?

    在某些情况下,我观​​察到 Web 服务器/负载平衡器无法处理传入请求,并且可能会限制吞吐量。在网络农业的情况下,还要注意资源利用。如果请求进来,CPU 利用率应该与单个实例相当。

    【讨论】:

    • 感谢您的宝贵建议。我们已经使用 Nginx 以及 Kemp 负载均衡器对其进行了测试,但我们发现了相同的结果。并在同一个网络中执行。
    • 你能分享资源使用细节吗?在这种情况下,您的系统似乎正在饱和。还要检查单一/网络农场的网络利用率。这将使您更好地了解传入的请求。检查 JMeter 报告以了解样本数量和响应时间。这会给你更好的主意。
    • 网络 -- 1 GB n/w 带宽。当运行 1 个 Tomcat 实例时,CPU 利用率约为 75%,内存使用 1.5 GB 或 16 GB。运行 3 个 Tomcat 实例时,CPU 利用率分别为 45%、50% 和 45%。内存利用率分别为 16 GB 的 1.4GB、16 GB 的 1.5 GB 和 16 GB 的 1.5 GB。
    • 能否也分享一下负载均衡器的资源使用详情?还可以尝试进行线程转储,看看是否有东西阻塞了线程?
    • 负载均衡器的资源利用率低于 5%。
    猜你喜欢
    • 1970-01-01
    • 2016-01-11
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-03-31
    • 2017-02-25
    • 2014-04-23
    • 2014-09-30
    相关资源
    最近更新 更多