评估服务基础性能应该参考那些指标?

        当谈到网络服务性能的时候,很多人都会采用一些单一性的指标数据作为性能参考,如支持多少在线,能跑到多少带宽等;实际上这些单一性的指标数据并不能反映服务的基础性能,毕竟应用场景是多样性的;那更好判断一个服务的基础性能需要符合那些要求呢?接下通过各种场景测试来证实一下,服务基础性能需要关注那方面的指标数据。

        为了可以得到更符合实际的测试结果,测试环境采用了10Gb的网络环境,对于一个服务端程序进行多种场景的测试,看一下服务端在各种单独指标项中性能有着怎样的表现。顺便也可以了解 一下在不讲武德的情况下把单一性指标如何做得更高来得到一个更有体面的说法。测试方法每个示例采样2分钟,看服务占用CPU资源情况。

在线并发数指标

        很多时候都会谈到这个指标项,简单来说以服务支持多少在线交互来对服务的性能做一个评价。接来分别做1000,10000,100000在线的通讯交互,但不改变其总网络读写的情况下CPU损耗是怎样的。

1000连接

10000连接

100000连接

以上是三种不同在线情况的测试,虽然10万在线在控制发送有些波动,但总体IO读写和带宽都保持在对应的区间上。从三个测试结果来看其服务端的cpu基本没有太多变化,即使1000和100000差了100倍的连接数也不会引起cpu资源波动。大量在线到达某一数据量的情况的确是对系统性能产生影响的,主要是对应句柄数量巨大引起系统的管理性能问题。

带宽指标

        这个指标项也经常谈,通过跑更高带宽来转化成消息处理,从而来确定服务可以处理多少消息量来突出服务性能的好坏。实际上高带宽是不是就意味着会损耗更高CPU资源呢?接下来测一下2000连接,在不改变IO读写量的情况来提高带宽吞吐看一下CPU资源的变化。

发送128字节

发送4K数据

同样的IO读写量,前者跑了70Mb带宽,后者使用了超过2Gb带宽;但两者的CPU资源使用量基本一样;所以能跑多少带宽完全取决于测试者基于什么导向来测试。

网络IO读写

        说实话很少人在讨论网络服务基础性能的时候会引入这一指标,毕竟这一指标是实打实的,在一台服务器上这指标的支撑量是固定的。它和在线连接数并发带宽没有一个正比的关系;简单来低带宽也可能出现高IO读写应用,高并发在线也可以出现低IO读写。文无第一武无第二,上面两项是文而这一项就是武了!毕竟实际应用中普遍都是基于请求响应的方式,每个操作都涉及两到一个或多个网络IO写和读。

50连接高并发读写(4K)

200连接高并发读写(128字节)

这项测试中虽然都使用了低连接和最后面测试的低带宽,但在所有测试中服务端最占资源是这两项测试,而它们都有着低连接,低带宽的特性;但同样有着一个共同的特点是有着大量的IO读写,这些IO读写量都远比之前的测试要高,同样CPU使用量也是相对提高了。

总结

        通过以上的多个测试相信对服务端的基础性能应用那些指标来评估有个一个大体的了解。抛开实际业务逻辑网络读写对整网络服务来说占主要性能开销,相对于同时在线数和带宽这些单一性的指标有着更重要的参考性;所以讨论这方面的内容时一定要制定一个更清晰的基础准则才能更好地去判定。

        回到实际服务应用开发中思考,既然服务的网络读写是这么有限制和损耗资源,那在设计时候就尽可能合并这方面的工作,在业务可接受的情况下合并IO读写来提高效率。

        现有的性能测试已经不会把同时在线或能跑多少带宽这些单一的指标用于作为性能测试的参考;在techempower的测试中没有一项测试是采用数万或数十万的连接作为测试要求,毕竟这两项已经是外部环境因素了。

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

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

相关文章

算法题目——岛屿问题(POJ-1328)

POJ-1328 题目大意:在x轴上建立尽量少的雷达覆盖所有的岛屿。 Input:岛屿的数量n,雷达覆盖半径d.接下来的n行一行表示一个岛屿(x,y). Output:每个案例的雷达最少数目. 经典的区间选点! 要搞清楚为什么排序,然后要明…

简述C#中应用程序集的装载过程

了解程序集如何在C#.NET中加载我们一直在处理库和NuGet软件包。不管是好是坏,高级.NET开发人员都需要了解.NET运行时如何加载程序集。这些库依赖于其他流行的库,并且有很多共享的依赖项。有了足够大的依赖关系网络,您最终将陷入冲…

Magicodes.IE 2.5版本发布

今天我们发布了2.5版本,这当然也离不开大家对Magicodes.IE的支持,今天我也是跟往常一样列举了该版本一些重要的更新内容。当然也要说一下,在这个版本中我们设计了全新的LOGO。Excel导出Excel导出支持HeaderRowIndex #164(https://…

算法题目——最短路径问题(HDU—1007)

题目链接:HDU-1007 前序: 先看一维中的最短路径的计算方式 问题的简单描述:(题意) 在一个笛卡尔系中,n个点分布不一,在这N个点中,求出相距最短的两个点之间的距离 思路: 分治二分法 解题报告…

没有Kubernets,学习Docker还有用吗?

Docker容器化和Kubernetes容器编排,作为微服务和云原生的核心依赖,这几年已是大红大紫全民皆知。然而近日Kubernetes官方发布公告,宣布自 v1.20 起放弃对 Docker 的支持,惊呆了一众开发者。在这背后,究竟是人性的扭曲&…

算法题目——二次函数三分求极值(HDU-3714)

题目链接:HDU-3714 题目描述: 对于N个二次函数,求每个二次函数的最小值中的最大值 思路: 使用三分法求极值(递归调用) 对于这种在指定区间里只有一个极值点的函数(凸函数凹函数都可以&#xff…

怎样才能去掉图片锁定纵横比_1分钟批量统一Word中300张图片的大小!无需插件、代码,超级简单...

很多时候我们需要将在Word中插入很多张图片,插入完成之后,一般我们还要统一它们的大小,如果是少量的图片的话,我们可以一个一个选择,然后再进行设置。或者先设置好一张图片后,再通过【F4】键,进…

我国火力发电站的大脑用上了国产系统

近年来,我国核电、水电、风电、光伏产业发展迅速,但从发电总量来看,火电依然占据7成以上的发电比例。水电、风电、光伏等清洁能源受自然条件限制,只能成为火电的有效补充,而不可能取代火电。而福岛核事故、切尔诺贝利核…

require 动态加载_require,exports,module.exports和import,export,export default

我们前端在开发过程中经常会遇到导入导出功能,在导入时,有时候是require,有时候是import在导出时,有时候是exports,module.exports,有时候是export,export default今天我们对这些内容进行简单的…

dotnet core 应用是如何跑起来的 通过AppHost理解运行过程

在 dotnet 的输出路径里面,可以看到有一个有趣的可执行文件,这个可执行文件是如何在框架发布和独立发布的时候,找到 dotnet 程序的运行时的,这个可执行文件里面包含了哪些内容在回答上面的问题之前,请大家尝试打开 C:\…

算法题目——整数划分(HRBUST-2004)

题目链接:HRBUST-2004 递归法: 1.当n1时,此时只有1种解{1}; 2.当m1时,此时也只有1种解{1,1,1, … 3.当n> m时,要分为最大数包含m和不包含m两种情况。 ●包含m:此时就是{mx1,2…}. 其中x1x23.… n-m, 就相当于求和为n-m,最…

dotnet core 应用是如何跑起来的 通过自己写一个 dotnet host 理解运行过程

在上一篇博客是使用官方提供的 AppHost 跑起来整个 dotnet 程序。本文告诉大家在 dotnet 程序运行到托管代码之前,所需要的 Native 部分的逻辑。包括如何寻找 dotnet 运行时,如何加载运行时和框架然后跑起来业务端的 dll 文件的逻辑在上一篇博客告诉大家…

算法题目——多米诺骨牌问题(POJ-2663)

题目链接:POJ-2663 设有形状一样的多米诺牌,每张牌恰好覆盖棋盘上相邻的两个方格,即一张多米诺牌是一张 1 行 2 列或者 2 行 1 列的牌。那么,是否能够把 32 张多米诺牌摆放到棋盘上,使得任何两张多米诺牌均不重叠&…

算法题目——求众数

在c中有两个关联容器&#xff0c; 第一种是map&#xff0c;内部是按照key排序的&#xff0c;从小到大 第二种是unordered_map&#xff0c;容器内部是无序的&#xff0c;使用hash组织内容的。 #include<iostream> #include<map> #include<algorithm> using n…

2020武汉dotNET俱乐部分享交流会圆满结束

经过长达2个多月的准备&#xff0c;终于在12月5日圆满的举行了武汉首次dotNET俱乐部线下分享交流活动。我们一共精心准备了3个目前比较热门的主题&#xff0c;分别如下&#xff1a;Jason分享的《ABP开发框架的扩展应用》Leo分享的《基于Kubernetes的DevOps平台应用》Eleven分享…

算法——常用的数据结构/模板/基础知识

常用的数据结构/模板/基础知识(一)c——优先队列(priority_queue)最大堆和最小堆的写法(二)c中的全排列函数next_permutation()(三)迭代器的使用(四)数学知识数列求和(五)求最大公约数和最小公倍数(六)将数值型数据转化为string 类型(一)c——优先队列(priority_queue) 最大堆…

对 精致码农大佬 说的 Task.Run 会存在 内存泄漏 的思考

一&#xff1a;背景 1. 讲故事这段时间项目延期&#xff0c;加班比较厉害&#xff0c;博客就稍微停了停&#xff0c;不过还是得持续的技术输出呀&#xff01;园子里最近挺热闹的&#xff0c;精致码农大佬分享了三篇文章&#xff1a;为什么要小心使用 Task.Run [https://www.c…

算法题目——爬楼梯(动态规划)

题目链接:70.爬楼梯 类似题目:1646.获取生成数组中最大值 本题大家如果没有接触过的话,会感觉比较难,多举几个例子,就可以发现其规律。 爬到第一层楼梯有一种方法,爬到二层楼梯有两种方法。 那么第一层楼梯再跨两步就到第三层 ,第二层楼梯再跨一步就到第三层。 所以到…

Kubernetes 1.20 发布:妙啊

喜欢就关注我们吧&#xff01;Kubernetes 1.20 发布&#xff0c;这是 2020 年的第三版也是最终版。Kubernetes 1.20 还是最近这段时间以来&#xff0c;功能最密集的版本之一&#xff0c;此版本包含了 42 个增强功能&#xff0c;其中 11 个增强功能已逐步升级为稳定版&#xff0…

算法题目——生成括号匹配

题目链接:剑指offer.85 生成 n 对括号共需要 2n 步,每一步都面临两个选项,即生成左括号或者右括号,题目要求返回所有的情况,所以本问题很适合采用回溯法。 在生成左右括号时存在两个限制条件,一个是左括号或者右括号的数量都不能超过 n 个,第二个是已经生成的右括号数…