Web服务器性能估算

1    【引题】

    但凡写过技术方案的都知道,在技术方案最终落实到工程实施部署时,必须编制出当前解决方案需要部署的IT设备及环境,包括:需要的网络环境、端口、带宽、组网方式、网络安全保障措施;需配置的服务器设备性能、数量;需配置的存储数据存储设备、容量、存储速率;甚至还需考虑整个系统的备份设备容量、备份I/O数、速率、备份策略等。

    严格说来,无论是系统厂商、集成公司、还是研究院、设计公司,在最终提供方案的硬件配置时,都应该以业务需求为依据、适当考虑客户业务的发展趋势和系统冗余,详细估算:当前业务需求对网络带宽、对处理能力、对数据存储容量的指标。因此,本文以自己的项目案例和经验为基础,简述计算机处理能力如何正确估算,供大家参考。

2    【性能评测标准】

    众所周知,事务处理性能委员会的TPC-C标准,是测算和衡量计算机硬件设备性能的行业标准。随着B/S技术架构的大行其道,SPEC组织专门推出了针对Web服务器响应客户端Web访问请求的性能测算标准,即SPEC web系列。因此,如果是传统的基于事务处理模式的服务器,仍采用TPC-C的方式进行测算;如果是Web服务器,则需要采用SPEC web系列的标准进行测算。然而,很遗憾的看到,很多人在测算服务器性能时完全忽视这两种差别。

1.1  TPC-C标准

    TPC-C基准是事务处理委员会建立的一个专门演示在线事务处理性能(OLTP)的性能基准,它的测量方法是为了使客户能够评估不同的在线事务处理系统的性能,这些事务进程于一个可控制的状态下在一个标准的数据库中运行。

    TPC-C的事务处理是在一个9个表的数据库上实现的事务处理过程包括:更新、插入、删除、终止,以及对主和次级键的访问,每种事务处理95%的响应时间应小于或等于5秒,其中,库存水平的响应时间可以在60秒以内。TPC-C值表示每分钟处理的标准事务量,单位是tpmC。

1.2  SPEC web标准

    SPEC web99,WEB 服务器可以支持的并发接入数。SPECweb99 检测程序模拟客户通过慢Internet 连接,向Web 服务器发送HTTP 工作量请求。

    SPEC Web2005,作为SPECweb99的继承者,SPECweb2005延续了SPEC的传统测试的原理,通过多台客户机向服务器发出Http Get请求,请求调用Web服务器上的网页文件,这些文件从数千字节到数兆字节不等。在相同的时间里,服务器回答的请求越多,就表明服务器对客户端的处理能力越强,系统的Web性能就越好。

3    【性能估算公式】

3.1  常见的错误估算方法

    在技术方案评审和招投标评标过程中,我常常看到这样的评估服务器处理能力的表格:

    示例一:


    示例二:


    不知道这种评估方法是从那里开始的,在技术方案文档中,曾多次看到这样的评估模型和表格。即不全是TPC-C的评估方法,又不全是SPEC Web体系的评估方法。

3.2  TPC-C估算公式

    TPC-C是用计算机设备在每分钟内所能处理的标准事务的数量来衡量其处理能力的多少;因此,估算一个应用场景对处理能力的需求,本质上就是估算出每类业务处理事务对应的标准tpc-c事务量,然后在适当考虑冗余量。TPC-C的测算结果是每分钟的事务数,单位是tpmc。

    TPC-C的通用估算公式如下:

    TPC-C = ∑(每分钟业务事务量 * 标准事务量比率)/ (1 — 冗余率)。

    例如:某业务系统有2类业务处理事务操作,业务事务1每分钟30000个,每个业务事务1操作相当于0.5个标准tpc-c事务;务事务2每分钟20000个,每个业务事务2操作相当于2个标准tpc-c事务;考虑30%的系统冗余。则该业务应用需要的处理能力为:

    服务器处理能力(tpmc) = ((30000 X0.5) + (20000 X 2)) / (1 – 30%) = 78581。

3.3  SPEC Web估算公式

    SPEC Web2005标准的衡量结果是一台Web服务器能够有效响应客户端的Web请求的最大极限个数。因此,测算的结果应该是一个Web请求数字,单位是个。

    在评估应用服务器的SPEC Web2005值时,通常的方法是通过系统的在线用户,结合其在线率估算出并发用户数,在参照日常业务使用场景中可能发起的http请求来进行估算。

    SPEC Web2005的参考估算公式如下:(注意:公式仅供参考,需根据项目的具体情况自行设计估算模型)

    Web访问响应能力(SPEC Web2005) = (在线用户数 * 在线率 * 在线用户平均发起http请求数)/ (1 — 冗余率)。

    例如:某业务系统的在线用户数为2000,在线率10%,每在线用户平均发起的http请求数为3,考虑30%的系统响应能力冗余。则负责该业务请求的Web服务器的响应能力为:

    Web访问响应能力(个) = 2000 * 10% * 3 / (1 – 30%) = 857。

4    【应用实例】

    下面以一个实际工程项目的应用服务器(部署Web Service中间件)的性能估算为例进行示范。

    应用服务器上运行中间件产品,承担系统的各类业务逻辑组件运行计算,收敛系统用户对数据库服务器的访问请求,集中对外提供应用服务。通过分析,应用服务器性能需求在于:提供Web应用服务、业务逻辑处理。

    Web应用服务方面,根据的业务预测数据,应用服务器平均在线并发用户按200估算,并发在线率20%,每用户平均发起3个http链接,考虑30%系统响应冗余能力,参照SPECweb99的评测标准,Web应用服务性能需求:Web服务器最大并发连接数=(120×20%×3)/(1 - 30%)= 103。

    业务逻辑处理性能方面,主要的应用服务组件性能需求在于:集团数据监测分析、省数据监测分析、业务数据查询。据调研统计,集团数据为每分钟3585 条,省数据平均为每分钟51667条,业务信息查询请求平均为每分钟2151次;集团数据监测分析,每次业务操作约需3个标准tpcc事务,省数据监测分析,每次业务操作约需2个tpcc事务,业务信息查询,每次业务操作约需2个tpcc事务;则系统主机的处理能力需求TPCC值计算如下:


 
因此,应用服务器的处理能力配置不能低于196731tpmc,其Web2005配置指标不能低于103个。
 

5    【经验总结】

    针对事务处理型应用场景,需要采用TPC-C的估算方法,估算出具体需要的总tpmc值;而针对Web客户端请求响应型应用场景,除了估算其业务处理能力之外,还需要评估其对客户端Web请求的响应能力,实际配置的服务器一般不能低于估算结果。

 

    除了考虑存业务处理需要的处理能力需求外,还需要考虑设备运行环境上其他基础服务运行开销:例如操作系统、数据库服务器、Web服务器、应用中间件等。

 

    由于当期硬件设备发展非常迅速,一般标配的PC服务器的tpcc值也常常是几十万,高配的甚至上百万。因此,还有两条经验提醒大家注意:

 

   其一,如果业务需求的tpcc值测算出来其实很低(绝大部分应用都是如此),配置一台很低端的PC服务器都能够满足处理能力需求,不能因为想给客户提供高配置的设备,而胡乱的编纂tpcc值;而应该从其他方面寻找更加充分有力的理由。

   其二、由于PC服务器处理能力的增强,tpcc值往往不再成为必须选择小型机的一个比较充分的理由;但需要给客户报配小型机方案时,可以尝试从稳定性、可靠性、高I/O需求、设备同构需求、外围设备特殊要求等方面多想办法,而不能再一味只从tpcc值这个角度去考虑。

 

引自:http://blog.csdn.net/cxxsoft/article/details/7489116

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/404068.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

用实例分析H264 RTP payload

From: http://blog.csdn.net/zblue78/article/details/5948538 H264的RTP中有三种不同的基本负载(Single NAL,Non-interleaved,Interleaved) 应用程序可以使用第一个字节来识别。 在SDP中也说明了本次会话的属性 SDP 参数 下面描述了如何在 SDP 中表示一个 H.264 流…

[ECMAScript] module、export、import分别有什么作用?

[ECMAScript] module、export、import分别有什么作用&#xff1f; import导入模块功能。import导入的只是一个只读引用&#xff0c;等到脚本执行时根据引用才到模块里去取值。这也就是import可以按需加载的原因。 export 指定输出的代码 module 要在js中使用ES6的import。<…

实验4 颜色、字符串资源的使用

课程名称 基于Android平台移动互联网开发 实验日期 3月25 实验项目名称 颜色、字符串资源的使用 实验地点 S3010 实验类型 □验证型 √设计型 □综合型 学 时 1学时 一、实验目的及要求&#xff08;本实验所涉及并要求掌握的知识点&#xff09; 掌握Androi…

LAMP平台下构建Postfix邮件服务器

前言&#xff1a; 本人之前已经做过这个实验&#xff0c;只是版本不同&#xff0c;今天本来想用全新版本的源码包做实验&#xff0c;但是以httpd-2.4.2.tar.gz的源码包在配置虚拟主机这一块我不知道如何配置&#xff0c;按照以前的配置总是报错&#xff1a;AH00548: NameVirtua…

[NodeJs] 如何使用nodejs对base64进行编解码?

[NodeJs] 如何使用nodejs对base64进行编解码&#xff1f; const str hi//编码 const buff Buffer.from(str, utf-8) console.log(buff)const base64 buff.toString(base64) console.log(base64)// 解码 const buff2 Buffer.from(base64, base64) console.log(---, buff2)c…

FU-A分包方式,以及从RTP包里面得到H.264数据和AAC数据的方法

From: http://www.cnweblog.com/fly2700/archive/2012/02/23/319718.html RFC3984是H.264的baseline码流在RTP方式下传输的规范&#xff0c;这里只讨论FU-A分包方式&#xff0c;以及从RTP包里面得到H.264数据和AAC数据的方法。 1、单个NAL包单元 12字节的RTP头后面的就是音视频…

Maven 手动添加 JAR 包到本地仓库

Maven 手动添加 JAR 包到本地仓库Maven 确确实实是个好东西&#xff0c;用来管理项目显得很方便&#xff0c;但是如果是通过 Maven 来远程下载 JAR 包的话&#xff0c;我宿舍的带宽是4兆的&#xff0c;4个人共用&#xff0c;有时候用 Maven 来远程下载 JAR 包会显得很慢&#x…

[NodeJs] 如果发现node_modules中有个模块代码有bug,你该怎么办?

[NodeJs] 如果发现node_modules中有个模块代码有bug&#xff0c;你该怎么办&#xff1f; 删除node_modules文件夹 重新npm install 如果本身代码有问题&#xff0c;去github对应的模块库提issues 个人简介 我是歌谣&#xff0c;欢迎和大家一起交流前后端知识。放弃很容易&am…

好久不更新这个博客了。

今天又翻到了这里&#xff0c;呵呵&#xff0c;以前都是在csdn博客发表些博文的。不过有了著名的XX事件&#xff0c;也没有多大兴趣了。今天就把这里作为主阵地吧。转载于:https://www.cnblogs.com/yanpeng/archive/2012/05/30/2526094.html

IOS开发之格式化日期时间的使用 编程中常见问题

今天在做一个有关时间的一些开发的时候&#xff0c;遇见了一写问题&#xff0c;反正来说既是很简单的问题&#xff0c;但毕竟用了我一些时间去调错误&#xff0c;遂记录之。 本来是想用 NSDateFormat 来转换一下服务器返回的时间&#xff0c;然后在客户端显示一下。但是最后发现…

[NodeJs] 你有使用过npx吗?它主要解决什么问题?

[NodeJs] 你有使用过npx吗&#xff1f;它主要解决什么问题&#xff1f; npm从5.2开始增加了npx命令 node自带npm模块,npx命令可以直接使用,如果不能使用,需自行安装.$ npm install -g npx npx 的原理很简单&#xff0c;就是运行的时候&#xff0c;会到node_modules/.bin路径和…

如何在eclipse中装myeclipse的插件

本文介绍Eclipse插件的安装方法。Eclipse插件的安装方法大体有三种&#xff1a;直接复制、使用link文件&#xff0c;以及使用eclipse自带的图形界面的插件安装方法。AD&#xff1a;做为当下最流行的开源IDE之一&#xff0c;Eclipse的一大优势就在于其无数优秀的插件。一个好的插…

RTSP协议举例

From: http://www.cppblog.com/elva/archive/2010/08/13/123313.html 因为项目需要&#xff0c;学习了一下RTSP协议&#xff0c;为了防止以后忘记&#xff0c;就把学习过程和成果记载下来。期间参考了一些网上的资料&#xff0c;并分析了VLC的RTSP报文。 RTSP&#xff08;…

thread安全性(写的不错)

http://blog.csdn.net/aaa1117a8w5s6d/article/details/8295527转载于:https://www.cnblogs.com/freezone/p/5359171.html

[NodeJs] 如何获取项目的根路径?

[NodeJs] 如何获取项目的根路径&#xff1f; __dirname, process.cwd() 个人简介 我是歌谣&#xff0c;欢迎和大家一起交流前后端知识。放弃很容易&#xff0c; 但坚持一定很酷。欢迎大家一起讨论 主目录 与歌谣一起通关前端面试题

python中的help()的用法

help是一个内置函数&#xff0c;在Python中被自动加载的函数&#xff0c;参数分两种&#xff1a; 如果传一个字符串做参数的话&#xff0c;它会自动搜索以这个字符串命名的模块&#xff0c;方法&#xff0c;等。如果传入的是一个对象&#xff0c;就会显示这个对象的类型的帮助例…

H264编码 封装成MP4格式 视频流 RTP封包

From:http://www.cnblogs.com/ghw-NO1/archive/2012/08/28/2660848.html 一、概述 本文讲述的是对H264编码且封装成MP4格式的视频流进行RTP打包过程时需要了解的一些基本知识。 二、H264的基础知识 1.H264的编码格式 H.263 定义的码流结构是分级结构&#xff0c;共四层。自上而…

hadoop 分布式缓存

Hadoop 分布式缓存实现目的是在所有的MapReduce调用一个统一的配置文件&#xff0c;首先将缓存文件放置在HDFS中&#xff0c;然后程序在执行的过程中会可以通过设定将文件下载到本地具体设定如下&#xff1a; public static void main(String[] arge) throws IOException, Clas…

在Eclipse中查看JDK类库的源代码

转自&#xff1a;http://www.cnblogs.com/wuhenke/archive/2011/06/22/2087134.html 核心提示&#xff1a;在Eclipse中查看JDK类库的源代码&#xff01;&#xff01;&#xff01; 设置&#xff1a; 1.点 window- Preferences - Java - Installed JRES 2.此时Installed JRES右边…

[单选题]PHP函数,mail($param1, $param2, $param3),其中的$param2参数包含什么?

信息的内容 信息的发送地址 信息的回复地址 信息的主题正确答案&#xff1a;转载于:https://www.cnblogs.com/pizishui/p/5361848.html