设为首页 收藏本站
查看: 1266|回复: 0

[经验分享] memcached 压力测试以及性能分析

[复制链接]

尚未签到

发表于 2015-11-18 13:59:51 | 显示全部楼层 |阅读模式
  1、建立测试程序
  选用enyim客户端  <configSections>
<sectionGroup name=&quot;enyim.com&quot;>
<section name=&quot;memcached&quot; type=&quot;Enyim.Caching.Configuration.MemcachedClientSection, Enyim.Caching&quot;/>
</sectionGroup>
</configSections>
<enyim.com>
<memcached protocol=&quot;Binary&quot;>
<servers>
<add address=&quot;127.0.0.1&quot; port=&quot;11211&quot;/>
</servers>
<socketPool minPoolSize=&quot;10&quot; maxPoolSize=&quot;200&quot; connectionTimeout=&quot;00:00:05&quot; deadTimeout=&quot;00:00:30&quot;/>
</memcached>
</enyim.com>代码:
  using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;
//using Tempus.Framework.Cache.MemCached;
using System.Data.Sql;
using System.Data.SqlClient;
using Enyim.Caching;
using Enyim.Caching.Memcached;
using Enyim.Caching.Configuration;
namespace TestMemcached
{
public partial class memcached : System.Web.UI.Page
{
static MemcachedClient mc = new MemcachedClient();
protected void Page_Load(object sender, EventArgs e)
{
if (!ConnectMemCached())
{
ConnectDB();
}
}
private bool ConnectMemCached()
{
try
{
string result;
object user;
if (mc.TryGet(&quot;User&quot;, out user)) //测试缓存中是否存在key的值
{
result = (string)user;
return true;
}
else
{
return false;
}
}
catch (Exception ex)
{
return false;
}
}
private void ConnectDB()
{
string constr = &quot;data source=localhost;initial catalog=Test;user id=sa;pwd=sa&quot;;
SqlConnection conn = new SqlConnection(constr);
conn.Open();
string sql = &quot;Select * From XDCM2007_Users Where UserId=18&quot;;
SqlCommand cmd = new SqlCommand(sql, conn);
SqlDataReader dr = cmd.ExecuteReader();
Users user = new Users();
while (dr.Read())
{
user.userName = dr[&quot;UserName&quot;].ToString();
user.RealName = dr[&quot;RealName&quot;].ToString();
}
dr.Close();
conn.Close();
mc.ExecuteStore(StoreMode.Add, &quot;User&quot;, user.userName, DateTime.Now.AddMonths(1));
}
public class Users
{
public int userId { get; set; }
public string userName { get; set; }
public string RealName { get; set; }
}
}
}




  2、Microsoft Web Application Stress Tool 压力测试工具
  安装并启动WAS,程序运行时会打开“Cteate new script”对话框,即建立一个新的脚本窗口(如图1),如果运行WAS没有打开该窗口可以单击WAS主程序窗口工具栏上第一个按钮“New Script”即可。


  

   为了使测试更加准确,更加接按真实效果,需要对录制的测试脚本进行一些设置。

   去除静态干扰

   由于网页是由图片、文字以及其它动态源码组成的,而一般的静态内容消耗的带宽并不是很大,因此我们可以将其排除在外。在脚本中选中指向图像、文字以及其它静态文件项目前的灰色按钮,然后单击工具栏上的“Delete”按钮将其删除(图4)

DSC0000.png
  

设置并发数

   然后在单击“New Recorded Script”下的“Settings”标签,其中“Concurrent Connections”是设置并发连接数的,其下面的“Stress
level (threads)”和 “Stress multiplier(sockets perthread)” 分别设置对目标服务器的压力及负载程度的,其中Level是客户端所产生的线程数目,一个线程可以产生多个Socket并发请求,因此将两者的数&#20540;相乘,所获得的数字就是客户端同时连接的并发数(图5)。

DSC0001.png



时间设置

   时间设置包括“Test Run Time”(测试运行时间)和“Request Delay”(停止响应)以及“Suspend”(挂起时间)三项。其中测试运行时间是以日、小时、分钟和秒来设定的,建议该项时间不宜太短,如果设置的并发数较多,那么时间应该按比较增长,以便产生足够多的请求;而停止时间是指连接时超出这个时间即作超时处理;在挂起时间处部分为Warmup和Cooldown两项,一般可以设置为两三分钟为宜,这样做的目的是避免测试开始和结束时数据的变形,影响测试的准确性。

   指定带宽瓶颈

   “Bandwith”是指定带宽瓶颈的,即选择访问该网站大多数用户所使用的带宽。例如访问该网站的绝大部分用户是拨号,那么可以选择56K。

   四、开始测试

   做好基本的设置工作后,就可以在左侧选中新建的脚本“New Recorded Script”项,然后单击工具栏上的“Run Script”按钮,或者打开“Scripts”菜单下的“Run”命令,这样就开始测试了。测试过程中会以进度条的方式实时显示,待进度条结束我们即可进行测试结果分析了

现在我们就可以打开测试报告来查看测试结果了。单击“View”菜单,选择“Reports”,在打开的窗口左侧会按时间显示所有测试报告。根据时间选择本次测试报告,在窗口右侧即可查看具体内容。

   在测试报告中最重要的部分就是“Socket Errors”部分和“Result Codes”部分。其中Socket Errors部分共分为Connect、Send
、Recv和Timeouts。其中Connect表示客户端不能与服务器取得连接的次数;Send表示客户端不能正确发送数据到服务器的次数;Recv表示客户端不能正确从服务器接次的次数;Timeouts表示超时的线程数目。由此我们可以如果这四个数&#20540;都比较小,甚至为0则说明我们的服务器是经得起考验的;如果数&#20540;居高不下,甚至接近设置的并发数,那么则要好好的检查你的服务器了(图6)。

DSC0002.png
  3、性能分析
  


  



版权声明:本文为博主原创文章,未经博主允许不得转载。

运维网声明 1、欢迎大家加入本站运维交流群:群②:261659950 群⑤:202807635 群⑦870801961 群⑧679858003
2、本站所有主题由该帖子作者发表,该帖子作者与运维网享有帖子相关版权
3、所有作品的著作权均归原作者享有,请您和我们一样尊重他人的著作权等合法权益。如果您对作品感到满意,请购买正版
4、禁止制作、复制、发布和传播具有反动、淫秽、色情、暴力、凶杀等内容的信息,一经发现立即删除。若您因此触犯法律,一切后果自负,我们对此不承担任何责任
5、所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其内容的准确性、可靠性、正当性、安全性、合法性等负责,亦不承担任何法律责任
6、所有作品仅供您个人学习、研究或欣赏,不得用于商业或者其他用途,否则,一切后果均由您自己承担,我们对此不承担任何法律责任
7、如涉及侵犯版权等问题,请您及时通知我们,我们将立即采取措施予以解决
8、联系人Email:admin@iyunv.com 网址:www.yunweiku.com

所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其承担任何法律责任,如涉及侵犯版权等问题,请您及时通知我们,我们将立即处理,联系人Email:kefu@iyunv.com,QQ:1061981298 本贴地址:https://www.yunweiku.com/thread-140765-1-1.html 上篇帖子: spring3+security3+struts2+mybatis+memcached+gbac权限架构开源项目 下篇帖子: 分布式设计与开发(六)------让memcached分布式
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

扫码加入运维网微信交流群X

扫码加入运维网微信交流群

扫描二维码加入运维网微信交流群,最新一手资源尽在官方微信交流群!快快加入我们吧...

扫描微信二维码查看详情

客服E-mail:kefu@iyunv.com 客服QQ:1061981298


QQ群⑦:运维网交流群⑦ QQ群⑧:运维网交流群⑧ k8s群:运维网kubernetes交流群


提醒:禁止发布任何违反国家法律、法规的言论与图片等内容;本站内容均来自个人观点与网络等信息,非本站认同之观点.


本站大部分资源是网友从网上搜集分享而来,其版权均归原作者及其网站所有,我们尊重他人的合法权益,如有内容侵犯您的合法权益,请及时与我们联系进行核实删除!



合作伙伴: 青云cloud

快速回复 返回顶部 返回列表