C++服务器性能测试几大关注点

         性能测试一直以来都是测试达人们热吵的话题,作为Server的测试,性能测试至关重要,也是衡量Server好坏的一个标准怎么去开展测试呢?以下是个人在测试中的一些经验分享。

经验分享主要关注一下几个方面 Linux OS  MemoryLeak  ; MemoryCrush  CPU Syslevel Ratio High 

  <1:>MemoryLeak Problem定义为Server端严重的Security问题,通常定位 Memory Leak 有许多工具比如静态扫描工具CPPCheck ,以及实时检测工具Valgrind.这些都在一定层面上能帮助开发和测试人员发现内存泄漏。以下是个人在做性能测试的时候,通过多线程的测试,同样可以很容易的把内存泄漏暴露出来(鉴于Valgrind 等检测工具定位泄漏不明确的场景)以下是内存泄漏的一个典型的状态,内存全部都被消耗完,同时Swap 也被消耗完。如果服务器端遇到这种情形,毫无疑问这是个内存泄漏

C++服务器性能测试几大关注点_第1张图片


<2>Memory Crush ,由于内存被二次释放,或者被释放的内存区域被二次访问,都是导致MemoryCrush 问题的一些典型代表。这类问题有一个共性,一般情况都是由于多个线程同时得到了一个Memory的地址,然后 A线程会做erase操作,线程B也对同一个地址再做一次erase操作,这样第二次的操作就会导致Crush.这一类问题一般都是在大并发量情况下容易复现出来。这样在多线程的测试场景下同样会发现这样的问题,一般你会在现场发现Core.*** 文件,基本上都是signal 11 退出。


<3>OS CPU Use Ratio high problem :对于linux操作系统 而言 CPU使用率一般分为 Us%(app 应用层) Sy%(系统内核级别),一般情况下 Sy%比率都不应该超过50%,如果超过了,那肯定是系统的mutex 使用过多,或者是你的底层Memory Lib 不符合多线程的应用场景。






这是个人在性能测试中的一些摸索的部分内容,当然还有其他一些比较典型的性能测试关注点,以后慢慢补充吧。





你可能感兴趣的:(C++服务器性能测试几大关注点)