LoadRunner - 实战,转发
最近几天一直在读代震军的博客,他是Discuz!NT的设计者,读了他的一系列关于 Discuz!NT的架构设计文章,大呼过瘾,特别是Discuz!NT在解决高访问高并发时所设计的一系列方案,本人尤其感兴趣。写这篇文章的目的,算 是对初次阅读之后的总结备忘吧,以便以后有时间亲自测试,如果能在生产环境中得到应用,那就更有参考价值了。
测试方法:
本地模拟测试网站高访问高并发采用的测试工具是大名鼎鼎的Loadrunner,这个工具做测试的一般都知道。在代震军的博客中,有以下几篇介绍了通过Loadrunner进行压力并发测试。
当DiscuzNT遇上了Loadrunner(上)
http://www.cnblogs.com/daizhj/archive/2009/09/25/1573926.html
当DiscuzNT遇上了Loadrunner(中)
http://www.cnblogs.com/daizhj/archive/2009/09/27/1574897.html
当DiscuzNT遇上了Loadrunner(下)
http://www.cnblogs.com/daizhj/archive/2009/09/27/1575091.html
Discuz!NT是一个论坛程序,是典型的互联网应用,在设计时本身就考虑了互联网应用场景下高并发高访问量的需求,在普通开源版本中,主要采用的缓存机制来提高系统的性能。
一、缓解数据库读取压力
相关文章如下:
Discuz!NT 缓存设计简析 [原创]
http://www.cnblogs.com/daizhj/archive/2007/08/15/855163.html
这个缓存机制使用的是.Net本身提供的缓存功能,System.Web.Caching.Cache
这个方案可以解决一般访问量不是很大的站点的需求,更高一级的,可以通过增加Web园工作进程来达到提升性能的需求,而且这个方案里面,已经解决多进程下缓存同步的问题。
在Discuz!NT企业版中,提供了更高层次的解决方案,使用了分布式缓存机制,引入了Memcached、Redis、LLServer,相关文章如下:
Discuz!NT中集成Memcached分布式缓存
http://www.cnblogs.com/daizhj/archive/2009/03/23/1386652.html
在Discuz!NT中进行缓存分层(本地缓存+memcached)
http://www.cnblogs.com/daizhj/archive/2009/11/17/1604436.html
Discuz!NT中的Redis架构设计
http://www.cnblogs.com/daizhj/archive/2011/02/21/1959511.html
http://www.cnblogs.com/daizhj/archive/2010/06/18/discuznt_memcache_syncdata.html
http://www.cnblogs.com/daizhj/archive/2011/08/26/discuznt_llserver_arch.html
Memcached是danga.com(运营LiveJournal的技术团队)开发的一套分布式内存对象缓存系统,用于在动态系统中减少数据库负载,提升性能。具体的介绍可以参考:
Memcached深度分析
http://www.cnblogs.com/luluping/archive/2009/01/14/1375456.html
通过以上的方案,能解决大部分高访问高并发的需求,因为论坛产品的特殊性,读写比大概是4:1,所以首先应该在读数据方面进行减压优化。
二、缓解Web服务器压力
Discuz!NT在缓解Web服务器压力上采用了如下的方案。
- 将用户上传的附件通过FTP方式传送到另外一台服务器上,相关的文章如下:
Discuz!NT中远程附件的功能实现[FTP协议]
http://www.cnblogs.com/daizhj/archive/2008/07/28/1254648.html
3. 通过SQUID将静态文件缓存分布
使用SQUID做静态前端,将论坛中的大部分静态文件布署或外链到一个新的HTTP链接上,从而给Web服务器减压,提升性能。
Discuz!NT静态文件缓存(SQUID)解决方案
http://www.cnblogs.com/daizhj/archive/2010/06/10/1692758.html
三、负载均衡
通过以上的方案,Web服务器压力小了,性能也提升了,但是如果遇到更高的并发访问量,单台Web服务器还是不能满足需求,Discuz!NT采取了负载均衡的方案。使用了LVS+KEEPALIVED、NGINX等。相关文章如下:
Discuz!NT负载均衡解决方案(HA)之---LVS(Linux Virtual Server)
http://www.cnblogs.com/daizhj/archive/2010/06/13/1693673.html
Discuz!NT负载均衡解决方案(HA)之---LVS(Linux Virtual Server)
http://www.cnblogs.com/daizhj/archive/2010/06/13/1693673.html
http://www.cnblogs.com/daizhj/archive/2010/06/24/1667422.html
使用的是nginx,使用nginx作为前端负载均衡,这个确实很有吸引力,有时间能试用下就好。
四、缓解数据库压力
在Discuz!NT中,数据库作为数据持久化工具,必定在并发访问频繁且负载压力较大的情况下成为系统性能的‘瓶颈’。即使使用上面的本
地缓存等方式来解决频繁访问数据库的问题,但仍旧会有大量的并发请求要访问动态数据, 其中的‘读写分离’方案就是一种被广泛采用的方案。相关文章:
http://www.cnblogs.com/daizhj/archive/2010/06/21/dbsnap_master_slave_database.html
全文搜索方案:
http://www.cnblogs.com/daizhj/archive/2010/06/28/discuznt_entlib_sphinx_one.html
http://www.cnblogs.com/daizhj/archive/2010/06/30/discuznt_entlib_sphinx_two.html
处理大数据量:
Discuz!NT千万级数据量上的两驾马车--TokyoCabinet,MongoDB
http://www.cnblogs.com/daizhj/archive/2010/07/22/1781140.html
好了,上面就是Discuz!NT企业版为了提升性能采取的一系列方案,确实对asp.net互联网应用很有参考价值,其中用到的很多开源产品都是
基于Linux的,如Memcached、Redis、LLServer、SQUID、NGINX、LVS、Sphinx,虽然有些产品有Windows
版本,但是其性能表现能力远远比不上Linux上面,看来在Web应用上,性能方面的表现以及开源产品的研究,Linux远远的走在了Windows前
面。
LoadRunner - 实战,转发的更多相关文章
- 《软件性能测试与LoadRunner实战教程》新书上市
作者前三本书<软件性能测试与LoadRunner实战>.<精通软件性能测试与LoadRunner实战>和<精通软件性能测试与LoadRunner最佳实战>面市后,受 ...
- 《软件性能测试与LoadRunner实战教程》喜马拉雅有声图书上线
工作忙的同学们有福了,可以听书了. 于涌老师的<软件性能测试与LoadRunner实战教程>喜马拉雅有声图书上线.
- loadrunner实战篇 - 客户关系管理系统性能测试
系统介绍 图1(客户关系管理系统模块关系图) 需求分析 一.性能指标 性能指标分 ...
- LoadRunner - 当DiscuzNT遇上了Loadrunner(下) (转发)
当DiscuzNT遇上了Loadrunner(下) 在之前的两篇文章中,基本上介绍了如何录制脚本和生成并发用户,同时还对测试报告中的几个图表做了简单的说明.今天这篇文章做为这个系列的最后一篇,将会介绍 ...
- LoadRunner - 当DiscuzNT遇上了Loadrunner(中) (转发)
当DiscuzNT遇上了Loadrunner(中) 在上文中,介绍了如果录制脚本和设置脚本执行次数.如果经过调试脚本能够正常工作的话,就可以设置并发用户数并进行压力测试了. 首先我们通过脚本编辑界面上 ...
- LR实战之Discuz开源论坛——安装及简介
想了很久,也许是因为这段时间特别闲,从毕业到现在,我的测试职业生涯也近两年了,发现自己越来越喜欢测试领域,也越来越偏向测试开发了,作为一名专业的测试人员,不得不要学习性能测试,而使用LoadRunne ...
- LoadRunner(四)——深度了解LR相关功能
参考学习感谢:<精通软件性能测试与LoadRunner实战> 相关功能: 1 无工具情况下的性能测试 2性能测试工具LoadRunner的工作原理 3 VuGen应用介绍 4 协议的类型及 ...
- LoadRunner(三)——LR相关概念&组成部分
参考学习感谢:<精通软件性能测试与LoadRunner实战> 一.运行机制和主要组成部分 1.LoadRunner主要由VuGen.Controller和Analysis三部分构成: 2. ...
- LoadRunner(二)——性能测试过程概述
参考学习感谢:<精通软件性能测试与LoadRunner实战> 性能测试过程概述 2.1 性能测试的基本过程 2.2 性能测试需求分析 2.3 性能测试计划 2.4 性能测试用例 2.5 测 ...
随机推荐
- 对js闭包的粗浅理解
只能是粗浅的,毕竟js用法太灵活. 首先抛概念:闭包(closure)是函数对象与变量作用域链在某种形式上的关联,是一种对变量的获取机制.这样写鬼能看懂. 所以要大致搞清三个东西:函数对象(funct ...
- MySQL深入利用Ameoba实现读写分离
3 ameoba安装配置 3.1 安装配置JDK [root@stu15 ~]# rpm -ivh jdk-7u67-linux-x64.rpm [root@stu15 ~]# cd /usr/j ...
- Oracle数据库中的Function调用参数问题
在工作中用到了Oracle数据库,需要调用Oracle的Function,Function返回的游标和结果都是通过参数来获取的 比如Function定义如下: , intype, ininttype) ...
- 复杂的databinding接受Ilist作为数据源
Combobox控件绑定数据源时,List<T>可以作为数据源,但是List<String,Object> 不存在,我们有时候需要用Dictionary<String,o ...
- C#访问配置文件
using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.R ...
- iostat命令简单说说
tps: 每秒钟发送到的I/O请求数. Blk_read /s: 每秒读取的block数 Blk_wrtn/s: 每秒写入的block数 Blk_read: 读入的block总数 Blk_wrtn: ...
- centos内核优化--转至网络
A.关闭selinux(可以预防nginx修改根目录后访问出现404或者403) vi /etc/selinux/config SELINUX=disabled B.修改打开最大文件数句柄也就是 so ...
- Head First-观察者模式
什么是观察者模式?观察者模式定义了对象之间一对多的关系. 观察者模式中有主题(即可观察者)和观察者.主题用一个共同的接口来通知观察者,主题不知道观察者的细节,只知道观察者实现了主题的接口. 普遍的观察 ...
- yii在TbGridView的td里面加入相应的下拉选项(转)
当你需要在一个GridView渲染某一个复杂元素的时候(特别是在这种情况下,这是一个小部件),这就需要你在控制器中调用一个动作.例如你给一个GridView的定义这样的一列: <?php $th ...
- android Material Design:主题
<style name="MyTheme" parent="@android:style/android:Theme.Material"> < ...