`
javamonkey
  • 浏览: 166751 次
  • 性别: Icon_minigender_1
  • 来自: 北京
文章分类
社区版块
存档分类
最新评论

性能设计:要响应还是要吞吐量

阅读更多

   衡量系统性能有俩个指标,分别是响应和吞吐量。通常企业应用系统更看重的是吞吐量,即能否支持更多的用户访问,或者能处理更多的报文。记得JDK Concurrent API的一个主要设计目的就是可扩展性-在单CPU的情况下,性能不及synchronized.耗费的资源多于synchronized(创建了很多对 象,但synchronzied可用任何对象作为锁)。但在多CPU或者其他更多的资源下,JDK Concurrent API 能充分利用CPU资源,从而使你的应用有较大的吞吐量。譬如,Hashtable 读写都会锁,而ConcurretnHashMap在读的时候就不会,自然会提高吞吐量。

   响应和吞吐量有时候并不能同时获得,譬如,为了提高响应,你可以做一个Cache,如果你的Cache只是JVM内的话,那要是进行集群以提高吞吐量,那 么你的Cache就有问题了。所以性能设计,一定要考虑到响应和吞吐量这来个因素。

   上面说了,企业应用更看重吞吐量。那如何设计一个高吞吐量的系统了。我觉得主要是俩个方法。

    一是系统是否支持扩展:如果系统实在是提高不了,我能否增加硬件来提高? 这种方式又通常有三种做法。

    1 增加主机CPU,内存,更换更好的磁盘.系统不需要改变

    2 增加新的主机,这也叫集群。 这种方式能极大的增加吞吐量,但扩展性还是有限。而且系统需要根据集群做特定的设计

   3 增加新的主机,水平扩展。特定的业务,访问特定的系统。就好比门户网站新闻,社会生活的访问一台好机器,而冷僻的健康类访问令一台机器。这应该是种终极的 扩展方式。再比如短信查询业务通过平台派发到4,5台机器里,而缴费请求少,可以派发到1,2台机器上。当然,最通常的情况是随机派发

      水平扩展难点不同于集群,不用关心如何实现,水平扩展需要在系统最初设计的时候就要考虑。搞不好可能实现不了。涉及到到用户会话以及流程的需求,都需要仔 细考虑,因为请求和响应数据可能在流程中位于不通的主机。对于简单会话来讲,可以在cookie中保存特定的信息,但对于复杂的流程,一次会话有多个请求 和响应,如何进行水平扩展,则很麻烦。


     上面的方法都很粗,如果系统实现了集群或者水平扩展,则即使系统设计的很差,那也能满足要求,要客户多掏钱升级硬件或者多买机器就是了(也碰到过系统实在 有问题,16个CPU,在压力测试下只用到了俩个,这样就没有办法扩展)

    另外增加吞吐量的方法就是对应用精益求精了 ,小到用ConcurentHashMap代替 Map,Stringbuilder代替StringBuffer,大到用Cache,优化JDBC ,SQL等等了。总之,少用系统资源,又能充分利用系统资源,这就是个好系统,不过这涉及到设计和编码,还是有(管理)难度的,客户,项目经理,甚至是架 构师其实都不看重这个方法,因为完成好太累,还不如集群或者水平扩展

分享到:
评论

相关推荐

    软件测试实验报告含四个实验

    报告含有 实验一 黑盒测试用例设计 一.实验内容: 三角形问题的等价类测试和边界值分析测试 NextDate()函数决策表法测试 实验二 白盒测试用例设计 ...实验要求:给出响应时间、吞吐量测试用例和结果 以上代码均可运行

    基于Python实现的网络嗅探器【100010784】

    性能描述:精度指标、响应速度指标、数据吞吐量指标…… 功能描述:本模块主要实现对流量数据包的抓取与分析,实现对各层协议的具体分析,能够捕获使用 HTTP、FTP、TELNET 协议传输的用户名和密码。 性能描述:...

    阿里巴巴Java性能调优实战(2021-2022华山版)+Java架构核心宝典+性能优化手册100技巧.rar

    在完成项目后,就可以进行系统测试了,可以将以下性能指标,作为性能调优的标准,响应时间、吞吐量、计算机资源分配使用率、负载承受能力。 本教程结合 Java 应用开发的知识点,将内容分为七大模块,从上到下依次...

    oracle性能监控

    分析评价oracle数据库性能主要有数据库吞吐量, 数据库用户响应时间两项指标. 数据库用户响应时间又可以分为系统服务时间和用户等待时间两项. 因此, 获得满意的用户响应时间有两个途径: 一个是减少系统服务时间, 即...

    JMeter性能测试、负载测试和压力测试

    JMeter是一个功能强大的开源性能测试工具,它可以帮助开发人员和测试人员评估应用程序、网站或...可以监控响应时间、吞吐量、错误率、并发用户数等指标,并生成图表和报告以进行分析。 断言和验证: JMeter可以根据

    高级JAVA工程师体系课2.0:深入剖析高可用、高性能分布式系统设计与实现 全面提升性能

    通过学习课程资料和实践项目,我学会了如何通过水平扩展、缓存技术、异步处理、并发控制等手段提高系统的性能和吞吐量。我深入了解了分布式系统中常见的性能瓶颈,并学会了针对性地优化和调整系统,以提供更好的性能...

    Spring Boot与Netty:构建高性能的网络应用

    1. 异步和事件驱动:Netty 使用异步和事件驱动的方式来处理网络通信,这意味着它不会阻塞调用线程,从而提高了应用的响应性和吞吐量。 2. 高性能:Netty 的设计使得它成为了目前所有 NIO 框架中性能最好的框架之一。...

    基于Java+MySQL设计与实现的秒杀与抢购模型架构【100013279】

    上述四个解决方案均使用了JMeter进行压力与性能测试(实验设置的是10秒内产生3000个请求),分析其吞吐量、平均响应时间、错误率等参数,最后得出相应结论。 实验结果表明: 四种方案的响应错误率均为零,但是吞吐...

    瞬时响应:网站的高性能架构

    两个网站性能架构设计方案:A方案和B方案,A方案在小于100个并发用户访问时,每个...网站性能是客观的指标,可以具体体现到响应时间、吞吐量等技术指标,同时也是主观的感受,而感受则是一种与具体参与者相关的微妙的东

    Web性能测试模型与性能提升策略研究(论文)

    2.3.2 吞吐量 16 2.3.3 资源利用率 17 2.3.4并发用户数目 17 2.3.5 每秒请求数目和会话数目 18 2.3.6 网络流量统计与标准偏差 18 2.4 Web应用程序性能测试方法 18 2.4.1虚拟用户方法 18 2.4.2 WUS方法 18 2.4.3 对象...

    并发用户数、吞吐量、思考时间的计算公式

    也就是我们所说的响应时间,当相应时间较小时,用户体验是很好的,当然用户体验的响应时间包括个人主观因素和客观响应时间,在设计软件时,我们就需要考虑到如何更好地结合这两部分达到用户最佳的体验。如:用户在大...

    基于云计算的图书馆借阅信息管理系统设计

    当前图书馆借阅信息管理系统普遍存在处理性能不足(吞吐量小,响应时间慢)的问题。因此为让读者享受方便快捷的借阅服务,改善图书馆的管理方式,设计一个更为简单、有效的图书馆借阅信息管理系统显得极为重要。本次...

    软件性能测试过程详解与案例剖析

    1.1什么是软件性能 1.1.1用户视角的软件性能 1.1.2管理员视角的软件性能 1.1.3开发视角的软件性能 1.1.4总结 1.2软件性能的几个主要术语 1.2.1响应时间 1.2.2并发用户数 1.2.3吞吐量 1.2.4性能计数器 1.2.5思考时间 ...

    非常好的某网站性能测试用例

     吞吐量:  编号 项 吞吐量  Perf.T.1 所有登录用户在线状态更改频率 每10分钟1次  Perf.T.2 每日页面平均访问量 60000次  Perf.T.3 每日下载量 50000  Perf.T.4 平均每日新增会员数量 500  Perf.T.5 ...

    SpringBoot项目基于SpringBoot的秒杀系统设计与实现.zip

    8. 性能监控:监控系统性能指标,如响应时间和吞吐量,以便及时调整资源分配。 9. 安全保护:采取必要的安全措施,包括防止SQL注入、XSS攻击等,确保系统安全。 10. 移动端适配:优化移动端界面,保证在手机和平板...

    SqlServer数据库性能优化详解

    性能调节的目的是通过将网络流通、磁盘 I/O 和 CPU 时间减到最小,使每个查询的响应时间最短并最大限度地提高整个数据库服务器的吞吐量。为达到此目的,需要了解应用程序的需求和数据的逻辑和物理结构,并在相互冲突...

    ASP+ACCESS订单管理系统设计(thesis+源代码+任务书).zip

    这将减少对数据库和服务器的访问次数,提高应用程序的响应速度和吞吐量。 异步编程:我们将使用ASP.NET提供的异步编程模型来处理并发请求和长时间运行的任务。这将提高应用程序的并发能力和响应性能,确保用户在高...

    数据库系统应用开发方法.pdf

    性能需求分析: 性能指标:响应时间、吞吐量、允许并发最⼤⽤户数、每TPS代价值。 影响因素:硬件资源、⽹络通信设备、操作系统环境、逻辑设计和物理设计质量、DBMS配置和性能、应⽤程序⾃⾝。 其他需求分析:存储...

Global site tag (gtag.js) - Google Analytics