- 论坛徽章:
- 0
|
服务器压力测试测出的最大承载数是应用服务器一项非常重要的性能指标。但是,看过的一些项目,Web应用服务器(http、web services等)和非web应用服务器(游戏服务器、更新服务器等)之间的最大承载数/最大连接数的差异往往相当之大。同时,对同一个Web服务器的不同测算方法,给出来的数值也有天壤之别。
所以,在此,我想了解一下,大家对服务器连接数的计算是怎样进行的。在此,我先将我所了解到,和认知的情况大致说明一下,看看有没有什么地方大家认为不妥的。
1. 应用服务器的最大承载数/连接数,需要同时标注:
a. 主要硬件配置(机型、CPU、内存,网卡)
b. 操作系统
c. 正常工作时非被测试应用服务器的负载(比如同时还运行着其他耗资源的程序,比如下载服务等)
d. 连接类型。常连接还是短连接。被测试的时间片段内,是否所给出数值的所有连接均在工作,没有一个断开?
如果以上任何一项没有给出,则该压力测试数据没有意义。
对以上几点分别举例说明:
a. 同一个应用服务器程序,在一个单核赛扬,512MB内存的机器上,测试出来的最大连接数,一般而言,均要比在双志强双核,4GB的机器上跑出来的要小很多。毕竟有一些应用类型起每一个连接将要消耗大量的硬件资源。
至于网卡,这是我实际遇到的一个问题:在一次做压力测试的时候,CPU占用率和内存均还有较大的消耗空间,但压力已经不上去。再一看,网卡的吞吐量已经100%了。
b. 不同操作系统对应用服务器必要细节的实现不同,比如高性能网络I/O操作的能力之于echo服务器。所以拿A应用服务器的Linux版的数据和B应用服务器的Windows版的数据比较,一般只有参考意义。如果连操作系统都没有注明,找什么作参考?
c. 对于耗费内存的应用服务器来说,如果有另外一个耗费内存的程序在运行,势必将带来更多更频繁的内外存数据交换,从而极大地降低数据操作性能。
d. Web服务器(http、web services)大多均为短连接,而文件更新等服务多为长连接。虽然名义上最大连接数应该是同时存在的,服务中的,未关闭的最大稳定连接数,但是好像有的数据不是按照这个概念出来的。
举个简单的例子:
在一个低配置的机器上,有一个提供短连接的应用服务器。其最大能同时服务的连接数只有200,每次连接仅持续0.1秒。按理说,这个应用服务器在这种情况下的最大连接数仅为200,但我却真见过有人这样计算的:2,000,因为1秒钟内服务了(或者能服务)2,000个连接;120,000,因为1分钟内服务了(或者能服务)120,000个连接。
2. 关于UDP服务器的压力测试:
由于UDP非面向连接,且丢包和重复发送的不确定性,怎样来定义和计算UDP服务器的最大服务数呢?
我想,按照之前对于TCP的方式,如果从收到请求报,到发送应答报完成,算是一次服务过程的话,那:
a. 怎样确认客户已收到发送的应答呢?如果发送的该应答包丢了,算是服务了这个客户没有?从服务器的角度来说,服务器干活了;但从客户的角度来说,没有收到任何处理输出。
b. 如果我收到了重复的请求报,且因为无法分辨是否是同一客户同一次请求的重复报(比如echo服务器)而处理了多次的话,这算服务了几个客户?
期待大家能交流一下看法。 |
|