零零星星记录

=============

场景一:

环境: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个用户,主要压力瓶颈在数据库上。