Skip to main content

 路由器设置 > 新闻资讯 >

压力测试及调优记录

2014-04-11 00:02 浏览:

场景一:

环境:web服务器2核2.5G一台;数据库mysql:600最大连接数,2400M内存。 压测的应用:普通门户网站,lamp软件环境。

 

压测工具:loadrunner模拟真实用户访问行为

模拟动作进入首页进入立即使用页面查看掌柜活动页面思考时间总共15

即完成3个页面的访问;

测试方法模拟100个用户每5秒登录2,(2分钟加载完毕)

持续1小时总时间1小时13分钟重复完成模拟动作;

测试结果平均响应时间各页面均<2;

其中83%的用户响应时间3秒内;   90%的用户响应时间在3.8秒内;

总共完成21304个用户的模拟动作访问页面数总次数  21304*3= 63912

服务器端基本正常负载值 2.5左右;

 

压力测试过程中不断加压相关参数调整:

apache优化调整:

serverlimit 5500 默认maxclient最大线程256个,可设置更高。

maxclients 5000 限制同一时间客户端最大接入请求的数量。

MaxRequestPerChild 100 每个子进程在其生存期内允许同的最大请求量,也即一个连接进程中可以有多少个线程同时工作。

 

最终结果:

网易邮箱理论单日收发邮件是 1000 ,

在模拟100用户并发状态下 15分钟内成功收取近980封邮件,

其他近1000封邮件在后续的1.5小时内陆续收取完成;

当日总共完成3000封左右的邮件收发.

调优后的网站每小时支持2万左右的用户访问数, 6万左右的单页面访问次数 (服务端无压力)。此压测行为基本不涉及至数据库。

 

场景二:

web服务器4核4G两台;数据库mysql:600最大连接数,2400M内存。 压测的应用:saas软件云平台.

apache+tomcat+memcached+mysql环境。

 

压测工具:loadrunner模拟真实用户访问行为。

压力测试过程中不断加压相关参数优化调整:

1)tomcat配置优化调整:

maxthreads 最多同时处理N个连接(启动的最大线程数,设置800)

acceptcount 当同时连接的人数达到maxthreads时,还可以接收排队的连接,设置10000

maxprocessors 最大连接线程数,即并发处理的最大请求数,设置1000

2)jvm优化调整:

JAVA_OPTS="$JAVA_OPTS -Djava.awt.headless=true -server -Xmx2500m -Xms2500m -Xmn1200m -XX:SurvivorRatio=8 -XX:PermSize=128m -XX:MaxPermSize=256m -Xss128k -XX:

MaxTenuringThreshold=7 -XX:ParallelGCThreads=2 -XX:GCTimeRatio=19 -Xnoclassgc -XX:+UseParNewGC -XX:+UseConcMarkSweepGC -XX:+CMSPermGenSweepingEnabled -XX:+Us

eCMSCompactAtFullCollection -XX:CMSFullGCsBeforeCompaction=0 -XX:CMSInitiatingOccupancyFraction=70 -XX:+PrintClassHistogram -XX:+PrintGCDetails -XX:+PrintGCTimeStamps -XX:+PrintGCApplicationConcurrentTime -XX:+PrintGCApplicationStoppedTime -XX:+PrintTenuringDistribution -Xloggc:/home/saas/apache-tomcat-6.0.36/logs/tomcat_gc.log -Doracle.jdbc.V8Compatible=true"

 

最终结果:每秒承受最大并发6个用户,主要压力瓶颈在数据库上。