tomcat集群为什么没有单一tomcat吞吐量大?

雨林神话 发布于 2015/11/29 21:21
阅读 3K+
收藏 3

环境:
jdk8+mysql5.5+redis3.0.5
项目是spring+mybatis框架,使用shiro+redis做的集群session处理,
使用nginx1.8+tomcat7做的集群,jmeter进行的测试,
redis和nginx在ubuntu虚拟机中,mysql和tomcat在win10下。
cpu4770k,16g内存。

测试页面:登录页(get),登录操作(post,此操作只涉及到select * from user where username=#{username}这一条sql,且user表只有1条数据),获取用户信息(get,此操作只涉及select * from user一条sql)

mysql:
max_connections=1000
table_cache=4096
open-files-limit = 8192

连接池:

jdbc.pool.maxIdle=250  jdbc.pool.maxActive=500  redis.pool.maxTotal=500  redis.pool.maxIdle=10

jmeter:线程数500,循环次数3

1. 单一tomcat测试结果


2. 两个tomcat组成的集群结果

redis部分的查询我输出了一下时间,在几十ms范围内,不影响效率,

问题主要在mysql上,单一tomcat时,select * from user大约时间在10ms以内,tomcat集群时,这条sql的时间就变成了100-200ms甚至更多,请问各位大神这是哪里的问题?为什么2个tomcat的集群吞吐量没有1个tomcat高呢?希望有高手来解惑


加载中
1
猪的暧昧
猪的暧昧
你用一台电脑,装上虚拟机? 你觉得性能能上来么。
雨林神话
雨林神话
@猪的暧昧 自己在家就1台电脑,怎么测试集群呢?
1
朱宏青
朱宏青

....一个机器搞什么集群?这是伪集群,一般用来开发测试模拟环境的

你就想吧 一个机器开的东西多了 能不慢?

0
方墨大师
方墨大师
是一直是这样,还是说时不时的出现?
方墨大师
方墨大师
@雨林神话 连接池参数设置成什么了?发看看。
雨林神话
雨林神话
是一直都这样,期间调整了mysql最大连接数,jdbc连接池,都还是这样。对了连接池用的tomcat-jdbc
0
eechen
eechen
我在Ubuntu(i5-3230M)上压测PHP-FPM,因为i5-3230M只有4核心(超线程),所以无论你开5个还是10个PHP-FPM工作进程,结果都差不多,就算配置了监听不同端口的两个pool,性能也是不会提升的,反而可能降低,因为Nginx多了upstream分流操作,而处理器能力却是固定的.
0
雨林神话
雨林神话

引用来自“funmo创始人”的评论

是一直是这样,还是说时不时的出现?
回复 @funmo创始人 : 参数如下: 
        <property name="maxActive" value="500"/>
        <property name="maxIdle" value="250"/>
        <property name="defaultAutoCommit" value="true"/>
        <property name="testOnBorrow" value="true"/>
        <property name="testOnReturn" value="false"/>
        <property name="testWhileIdle" value="true"/>
        <property name="validationQuery" value="select 1"/>
        <property name="removeAbandonedTimeout" value="600"/>
        <property name="removeAbandoned" value="true"/>
        <property name="timeBetweenEvictionRunsMillis" value="30000"/>
        <property name="minEvictableIdleTimeMillis" value="30000"/>
0
首席搬砖工程师
首席搬砖工程师
你tomcat集群都在同一台机器当然没有单个tomcat性能好
首席搬砖工程师
首席搬砖工程师
回复 @雨林神话 : tomcat分开物理机最好
雨林神话
雨林神话
@首席不加班 那你觉得我要是建立两个虚拟机,每个虚拟机一个tomcat这样测试合理么?
0
车开源
车开源
这样的环境不严谨呢。我觉得问题不在Tomcat,而是在mysql
车开源
车开源
回复 @雨林神话 : 1、优化那条SQL查询 2、单独部署一台数据库(这样可以更真实反映情况) 3、再根据网上分享的mysql优化配置(如加大缓存,加索引等),会有好大改观的。
雨林神话
雨林神话
@车开源 确实在mysql,但是请问怎么配置mysql来让多个tomcat连接时速度快些呢?
0
jeffsui
jeffsui

一台机器你确定没有争抢资源的情况出现?


雨林神话
雨林神话
@jeffsui 运行测试的时候cpu最高在80%左右
0
MicyToy
MicyToy
连接池         <property name="testOnBorrow" value="true"/> 改成false试试
0
百世经纶之傲笑红尘
百世经纶之傲笑红尘
一台机器上布多个Tomcat集群反而拉低机器处理能力,当然没有多台机器搞集群好
返回顶部
顶部