工程师使用的基本手动工具有哪些(工程师必备的性能数字)(1)

一、前言

对于性能工程师来说,常见系统的性能数据量级需要烂熟于心,记住这些数字的好处是,每次看到一个性能相关的数据的时候,我们立刻就能知道这个性能数据有没有问题。

举个简单例子,如果我们看到一个硬盘的 IO 读写延迟经常在 500 毫秒左右,我们立刻就知道这里面有性能问题。反之,如果硬盘 IO 读写延迟小于 1 毫秒,我们可以马上推断——这些 IO 读写并没有到达硬盘那里,是被操作系统缓存挡住了。这就是大家常说的“对数字有感觉”。

二、存储硬件

存储有很多种,常用的是传统硬盘(HDD,)和固态硬盘(SSD),SSD 的种类很多,按照技术来说有单层(SLC)和多层(MLC,TLC 等)。按照质量和性能来分,有企业级和普通级。根据安装的接口和协议来分,有 SAS、SATA、PCIe 和 NVMe 等。

对所有的存储来说,有三个基本的性能指标。

工程师使用的基本手动工具有哪些(工程师必备的性能数字)(2)

SSD 的随机 IO 延迟比传统硬盘快百倍以上,IO 带宽也高很多倍,随机 IOPS 更是快了上千倍。

三、CPU 和内存硬件

几个基本的指标:

工程师使用的基本手动工具有哪些(工程师必备的性能数字)(3)

值得一提的是现在的 NUMA 处理器会有本地和远端内存的区别,当访问本地节点的内存是会快一些。

四、操作系统和应用程序相关

我们刚刚谈了硬件方面,下面看看软件,也就是操作系统和应用程序。

1、几个重要概念和指标

工程师使用的基本手动工具有哪些(工程师必备的性能数字)(4)

2、Linux 平均负载

系统过载并超过1.0的负载值有时不是问题,因为即使有一些延迟,CPU也会处理队列中的作业,负载将再次降低到1.0以下的值。但是如果系统的持续负载值大于1,则意味着它无法吸收执行中的所有负载,因此其响应时间将增加,系统将变得缓慢且无响应。高于1的高值,尤其是最后5分钟和15分钟的负载平均值是一个明显的症状,要么我们需要改进计算机的硬件,通过限制用户可以对系统的使用来节省更少的资源,或者除以多个相似节点之间的负载。

因此,我们提出以下建议:

五、网络相关

网络的传输延迟是和地理距离相关的。网络信号传递速度不可能超过光速,一般光纤中速度是每毫秒 200 公里左右。如果考虑往返时间(RTT),那么可以大致说每 100 公里就需要一毫秒。

在机房里面,一般的传输 RTT 不超过半毫秒。如果是同一个机柜里面的两台主机之间,那么延迟就更小了,小于 0.1 毫秒。

另外要注意的是,传输延迟也取决于传输数据的大小,因为各种网络协议都是按照数据包来传输的,包的大小会有影响。比如一个 20KB 大小的数据,用 1Gbps 的网络传输,仅仅网卡发送延迟就是 0.2 毫秒。

工程师使用的基本手动工具有哪些(工程师必备的性能数字)(5)

六、中间件相关

先说说负载均衡,硬负载性能远远高于软负载。Ngxin 的性能是万级;LVS 的性能是十万级,据说可达到 80 万 / 秒;而 F5 性能是百万级,从 200 万 / 秒到 800 万 / 秒都有(数据来源网络,仅供参考,如需采用请根据实际业务场景进行性能测试)。当然,软件负载均衡的最大优势是便宜,一台普通的 Linux 服务器批发价大概就是 1 万元左右,相比 F5 的价格,那就是自行车和宝马的区别了。

工程师使用的基本手动工具有哪些(工程师必备的性能数字)(6)

具体的数值和机器配置以及测试案例有关,但大概的量级不会变化很大。

如果是业务系统,由于业务复杂度差异很大,有的每秒 500 请求可能就是高性能了,因此需要针对业务进行性能测试,确立性能基线,方便后续测试做比较。

七、网站规模

这里就大致根据理论最大TPS,给网站做几个分类:

工程师使用的基本手动工具有哪些(工程师必备的性能数字)(7)

八、服务器规模

我们可以来算一下,根据行业内的经验,可以估计如下的投入:

工程师使用的基本手动工具有哪些(工程师必备的性能数字)(8)

可以看到,十万用户到上亿用户,也就多了 100 倍,为什么服务器需要 1000 倍?这完全不是呈线性的关系。

这时因为,当架构变复杂了后,你就要做很多非功能的东西了,比如,缓存、队列、服务发现、网关、自动化运维、监控等。

九、总结

今天分享了几组性能数字,希望起到抛砖引玉的效果。你可以在此基础上,在广度和深度上继续扩展。

,