一、项目简介:一个视频推广系统与多家网站合作,其它网站调用我方视频资源。每调用一次会在我方磁盘上写一条日志。日志文件是以分钟为单位生成。上线后每秒钟到2000个请求时出现性能问题。固在线下做压力测试寻找性能瓶径。
二、测试环境
1台客户端: windows2003 loadrunner
1台服务器 : cpu 16核 mem 16G php+nginx+mysql+memcache
三、测试策略:
1个固定的url,带有各种参数,直接入日志。运行时使用无间隔不断加压,脚本如下:
Action()
{
//web_add_cookie("user=Kqcq056x1pddq7Ip6c6kd; DOMAIN=v.ifeng.com");
//web_add_cookie("PHPSESSID=dfea59a03919d6d01f47eaacf08c2; DOMAIN=v.ifeng.com");
web_url("page",
"URL=http://192.168.xx.xx/page?guid=ff1edsb0ddb-79ff-45f3-af73-46247a8c88bd&user=vchanpin&refer=aHR0cDovL3dlaWJvLmNvbS94aWFveGlldG9uZ3h1ZS9wcm9maWxlP2xlZnRuYXY9MSZ3dnI9My42JmlzX3ZpZGVvPTE=&from=sinaweibo&AutoPlay=true&tm=446642",
"Resource=0",
"RecContentType=text/html",
"Referer=",
"Mode=HTML",
LAST);
return 0;
}
四、瓶径分析:
1,压力过程使用top查看服务器资源,其它值正常,唯独cpu的sy偏高,判断为系统本身进程影响性能,而非应用进程。在loadrunner中查看的响应时间波动也较大。
2,通过iostat -x 1查看, await 和avgqu-sz会隔2-3秒出现一次偏高。其它值正常。
3,通过iostat -p 1查看,哪个目录读写频繁,结果如下 cciss/c0d0p6 磁盘写入频繁。通过df 查看此盘挂载的是/tmp文件夹。进入后查看是很多sess开头的临时文件
应该有几万个。可以判断正是由于生成的这些文件影响了性能。此文件是php生成的session文件,开发将过期时间设置成了2个小时,所以压力过程在不断生成这些文件时候消耗了大量时间,并发是文件体积大造成,而是由文件数太多造成。
4,后来把这些文件指向/dev/shm(内存),并设置过期时间10秒。性能一切正常。
二、测试环境
1台客户端: windows2003 loadrunner
1台服务器 : cpu 16核 mem 16G php+nginx+mysql+memcache
三、测试策略:
1个固定的url,带有各种参数,直接入日志。运行时使用无间隔不断加压,脚本如下:
Action()
{
//web_add_cookie("user=Kqcq056x1pddq7Ip6c6kd; DOMAIN=v.ifeng.com");
//web_add_cookie("PHPSESSID=dfea59a03919d6d01f47eaacf08c2; DOMAIN=v.ifeng.com");
web_url("page",
"URL=http://192.168.xx.xx/page?guid=ff1edsb0ddb-79ff-45f3-af73-46247a8c88bd&user=vchanpin&refer=aHR0cDovL3dlaWJvLmNvbS94aWFveGlldG9uZ3h1ZS9wcm9maWxlP2xlZnRuYXY9MSZ3dnI9My42JmlzX3ZpZGVvPTE=&from=sinaweibo&AutoPlay=true&tm=446642",
"Resource=0",
"RecContentType=text/html",
"Referer=",
"Mode=HTML",
LAST);
return 0;
}
四、瓶径分析:
1,压力过程使用top查看服务器资源,其它值正常,唯独cpu的sy偏高,判断为系统本身进程影响性能,而非应用进程。在loadrunner中查看的响应时间波动也较大。
2,通过iostat -x 1查看, await 和avgqu-sz会隔2-3秒出现一次偏高。其它值正常。
3,通过iostat -p 1查看,哪个目录读写频繁,结果如下 cciss/c0d0p6 磁盘写入频繁。通过df 查看此盘挂载的是/tmp文件夹。进入后查看是很多sess开头的临时文件
应该有几万个。可以判断正是由于生成的这些文件影响了性能。此文件是php生成的session文件,开发将过期时间设置成了2个小时,所以压力过程在不断生成这些文件时候消耗了大量时间,并发是文件体积大造成,而是由文件数太多造成。
4,后来把这些文件指向/dev/shm(内存),并设置过期时间10秒。性能一切正常。