Pages

Wednesday, 13 July 2016

linux VPS的性能测试:CPU测试,网络测试和IO测试

把VPS当成虚拟主机来卖就是超售严重,买回来的VPS到底值不值这个价钱,我们一般需要对VPS主机进行一番性能测试,涉及的项目主要有CPU内存,硬盘IO读写,带宽速度,UnixBench和压力测试等等。

本篇文章就来分享一下如何对一个VPS主机进行CPU内存,硬盘IO读写,带宽速度等项目测试,像UnixBench和压力测试则可以综合反映一个VPS的性能水平,方便大家对照参考。

一、VPS性能测试:CPU物理个数、内核、超线程、多核心

1、登录VPS界面,执行:cat /proc/cpuinfo,就会显示出VPS主机的CPU详细参数,如内核、频率、型号等等,以下是我的阿里云服务器的VPS主机CPU:


2、主要参数physical_id表示物理CPU个数,cpu cores是内核数,Siblings 表示位于这一物理封装上的逻辑处理器的数量,它们可能支持也可能不支持超线程(HT)技术。

3、如果有一个以上逻辑处理器拥有相同的 core id 和 physical id,则说明系统支持超线程(HT)技术。如果有两个或两个以上的逻辑处理器拥有相同的 physical id,但是 core id 不同,则说明这是一个多内核处理器。

4、如果“siblings”和“cpu cores”一致,则说明不支持超线程,或者超线程未打开。如果“siblings”是“cpu cores”的两倍,则说明支持超线程,并且超线程已打开。

5、直接查看逻辑CPU的个数,执行:cat /proc/cpuinfo |grep ‘physical id’ |sort |uniq

6、直接查看CPU的型号,执行:cat /proc/cpuinfo |grep ‘model name’ |sort |uniq

7、单个CPU的内核数,执行:cat /proc/cpuinfo |grep ‘cpu cores’ |sort |uniq

8、总的CPU线程数,执行:cat /proc/cpuinfo |grep ‘processor’

9、上面我的阿里云服务器属于1核1CPU的,这是我前几天申请的Host1plus免费VPS主机的VPS CPU信息,多线程,多内核的。


二、VPS性能测试:内存大小、交换空间、高速缓存、实际使用内存

1、要想查看购买的VPS主机的内存信息,执行:cat /proc/meminfo,主要是看内存大小、交换空间、高速缓存。


2、VPS主机实际使用内存大小。Linux管理内存的机制是这样的:无论物理内存有多大,Linux 都将其充份利用,将一些程序调用过的硬盘数据读入内存,利用内存读写的高速特性来提高Linux系统的数据访问性能。

3、即Linux会利用空闲的物理内存,划分出一部份空间,做为 cache 和 buffers ,以此提高数据访问性能。cache主要用来减少对磁盘的I/O操作。所以我们经常能够看到一个总内存为8GB的Linux VPS测试出来占用的内存也是8GB。

4、那么如何才能知道Linux真正占用的内存是多少呢?执行命令:free –m


5、计算VPS真实的使用内存方法是:Total-Free-Cached=真实使用内存,即1536-1313-208=15,表示我的VPS真实使用的内存是15MB。

三、VPS性能测试:磁盘IO读写速度、SSD硬盘速度测试

1、磁盘IO,即输入/输出(Input/Output),这是测试磁盘性能一个重要指标,一些便宜的VPS主机为了降低成本,以大量的低性能的硬盘来充当服务器,导致VPS主机因为IO差而拖了整个主机性能的后腿。

2、测试VPS主机磁盘IO的性能可以执行以下两个命令:
dd if=/dev/zero of=test bs=64k count=4k oflag=dsync

dd if=/dev/zero of=test bs=8k count=256k conv=fdatasync


3、conv=fdatasync与oflag=dsync的区别在于:sync函数只是将所有修改过的块缓冲区排入写队列,然后就返回,它并不等待实际写磁盘操作结束。

4、而fsync函数只对由文件描述符filedes指定的单一文件起作用,并且等待写磁盘操作结束,然后返回。这是我的阿里云VPS的硬盘IO测试结果。


5、这是Host1plus免费VPS主机的硬盘IO,从测试结果对比可以看出:阿里云的IO速度确实不行,这也怪不得阿里云可以卖得这么便宜。

6、SSD硬盘速度测试。对于VPS采用SSD硬盘的,为了更加真实的反映出SSD硬盘的性能,在控制端命令中执行以下命令:
yum install hdparm -y
fdisk -l
hdparm -t /dev/hda


7、第一句是安装hdparm,第二句是找出对应磁盘的驱动号,第三句就是利用hdparm在指定的硬盘上测试硬盘的读写速度。


8、VPS硬盘IO负载测试。使用top命令查看%wa数据,表示IO等待所占用的CPU时间的百分比,高过30%时IO压力可能比较大。


9、另外一条命令是:iostat -x 1 10,如果没有执行安装:yum install sysstat,主要查看%util 和%idle ,如果 %util 接近 100%,说明产生的I/O请求太多,I/O系统已经满负荷,idle小于70% IO压力就较大了,一般读取速度有较多的wait。


四、VPS速度测试:上传下载速度、服务器带宽、Ping响应时间

1、VPS的速度好坏经常是我们选择某一个VPS商家的重要参考指标,对于国外的VPS主机我们可以执行以下命令来测试VPS入口带宽是多少。
wget http://cachefly.cachefly.net/100mb.test

2、而对于国内的VPS主机,或者想要测试国外的VPS连接国内的速度,可以用Wget的方法下载国内服务器上的一个文件,最好选择那些没有使用海外CDN服务器的,这样数据更准确。


3、而测试VPS主机的出口速度,则可以使用FTP或者Winscp软件从服务器下载一个文件到本地,可以直观地看到速度。

4、为了避免因本地网络环境影响了VPS主机下载速度,有条件的朋友可以找一个国内的VPS主机来Wget被测试VPS主机上的文件,像国内的免费VPS服务器Windows Azure就可以了。

5、这里还有一个测试VPS主机在世界各地的下载速度的一键脚本,执行命令:

wget freevps.us/downloads/bench.sh -O - -o /dev/null | bash


6、这是测试VPS主机入口与出口的带宽一键脚本,执行命令:
wget https://github.com/sivel/speedtest-cli/raw/master/speedtest_cli.py
python speedtest_cli.py --share


7、VPS速度测试主机另一个指标就是Ping的响应时间,要测试Ping,首先要保证VPS开机运行,同时防火墙允许Ping。为了得到全面的Ping结果,可以使用在线站长工具,这些工作一般都提供了电信、联通、移动等不同的网络环境测试结果。


五、VPS性能综合测试:UnixBench跑分工具测试

1、UnixBench是一款开源的测试 unix 系统基本性能的工具,是比较通用的测试VPS性能的工具,Unixbench的主要测试项目有:系统调用、读写、进程、图形化测试、2D、3D、管道、运算、C库等系统基准性能提供测试数据。

2、UnixBench测试的结果不仅仅只是CPU,内存,或者磁盘为基准,还取决于硬件,操作系统版本,编译器,测试系统各个方面一系列的性能,然后将每个测试结果和一个基准值进行比较,得到一个索引值,所有测试项目的索引值结合在一起形成一个测试分数值。

3、另外,unixbench版本不同也去导致测试得分的结果有很大的差别,大家如果要使用UnixBench来测试VPS的性能的话,最好是使用同一个版本的UnixBench。UnixBench测试执行以下命令:
wget http://zhujis.com/myvps/unixbench.sh;sh ./unixbench.sh;


4、测试时间可能会比较长,请耐心等待。最后UnixBench会详细列出各个测试项目的得分情况,以及VPS性能的综合跑分结果。


六、VPS性能综合测试:服务器压力测试,VPS系统负载测试

1、可能有的VPS主机使用性能测评工具得出的结果很优秀,但是最终运用到实际生产时却发现VPS主机根本无法承受理论上应该达到的流量压力,这时我们就不得不要怀疑VPS商是不是对VPS主机的参数进行了“篡改”了,例如CPU、内存、硬盘等等,这些数据都是可以人工修改的。

2、在网站服务器压力Web性能测试中有提到常用的三个Web服务压力测试工具:Apache Bench,Webbench,http_load,这也是大家使用得比较多的负载测试软件,教程:网站服务器压力Web性能测试:Apache Bench,Webbench,http_load安装使用。

3、而Pylot,是一款适合在Windows电脑上运行的服务器压力测试程序,它可以运行HTTP负载测试,对于制定容量计划、确定基准点、分析系统瓶颈以及系统调优都非常有用,大家可以去网上看看教程。

七、VPS性能测试方法小结

1、为了能够得到更为准确和详细的有关VPS主机性能测试数据,我们应该多角度、全方位地运行多种VPS性能测试工具来进行检测,同时也要记得排除因本地网络环境而造成的数据结果的错误。

2、VPS主机性能跑分工具不能当成唯一的评判VPS综合性能的对比指标,现在很多的云主机和云空间因为架构的不同,使用UnixBench测试会不准确,更准确的应该是在同等条件下服务器能够承受的流量压力.