VPS 性能测试:CPU 内存, 硬盘 IO 读写, 带宽速度,UnixBench 和压力测试
现在便宜的 VPS 主机越来越多了,一些美国的 VPS 主机甚至给出 1 美元一月的 VPS,堪比虚拟主机还要便宜,巨大的价格优势吸引不少人购买和使用,而近些年来国内的主机商也开始意识到便宜的 VPS 对草根站长的诱惑力,纷纷推出了低价 VPS,其中突出的代表就是阿里云。
所谓“一分钱一分货”,把 VPS 当成虚拟主机来卖的如果不是做慈善事业就是超售严重,买回来的 VPS 到底值不值这个价钱,我们一般需要对 VPS 主机进行一番性能测试,涉及的项目主要有 CPU 内存,硬盘 IO 读写,带宽速度,UnixBench 和压力测试等等。
本篇文章就来分享一下如何对一个 VPS 主机进行 CPU 内存, 硬盘 IO 读写, 带宽速度等项目测试,像 UnixBench 和压力测试则可以综合反映一个 VPS 的性能水平,方便大家对照参考。更多的有关于 VPS 一些使用教程有:
1、负载均衡: 免费空间 + 便宜 VPS 和 OpenResty,Ngx_lua,Redis 搭建系统负载均衡环境
2、阿里云产品:阿里云服务器 ECS 负载均衡 SLB, 数据库 RDS, 存储 OSS 和 CDN 加速
3、VPS 加速:WDCP,LNMP 安装 PHP 缓存加速扩展 eAccelerator,xcache 和 memcached
VPS 性能测试:CPU 内存, 硬盘 IO 读写, 带宽速度,UnixBench 和压力测试
一、VPS 性能测试:CPU 物理个数、内核、超线程、多核心
1、登录 VPS 界面,执行:cat /proc/cpuinfo,就会显示出 VPS 主机的 CPU 详细参数,如内核、频率、型号等等,以下是我的阿里云服务器的 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’
VPS 性能查看具体的数值
9、上面我的阿里云服务器属于 1 核 1CPU 的,这是我前几天申请的 Host1plus 免费 VPS 主机的 VPS CPU 信息,多线程,多内核的。(点击放大)
VPS 性能多 CPU 多内核
二、VPS 性能测试:内存大小、交换空间、高速缓存、实际使用内存
1、要想查看购买的 VPS 主机的内存信息,执行:cat /proc/meminfo,主要是看内存大小、交换空间、高速缓存。(点击放大)
VPS 性能查看内存大小
2、VPS 主机实际使用内存大小。Linux 管理内存的机制是这样的:无论物理内存有多大,Linux 都将其充份利用,将一些程序调用过的硬盘数据读入内存,利用内存读写的高速特性来提高 Linux 系统的数据访问性能。
3、即 Linux 会利用空闲的物理内存,划分出一部份空间,做为 cache 和 buffers,以此提高数据访问性能。cache 主要用来减少对磁盘的 I / O 操作。所以我们经常能够看到一个总内存为 8GB 的 Linux VPS 测试出来占用的内存也是 8GB。
4、那么如何才能知道 Linux 真正占用的内存是多少呢?执行命令:free –m
VPS 性能真正使用的内存
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 测试结果。
VPS 性能磁盘 IO 测试
5、这是 Host1plus 免费 VPS 主机的硬盘 IO,从测试结果对比可以看出:阿里云的 IO 速度确实不行,这也怪不得阿里云可以卖得这么便宜。
阿里云的 VPS 磁盘性能
6、SSD 硬盘速度测试。对于 VPS 采用 SSD 硬盘的,为了更加真实的反映出 SSD 硬盘的性能,在控制端命令中执行以下命令:
yum install hdparm -y
fdisk -l
hdparm -t /dev/hda
7、第一句是安装 hdparm,第二句是找出对应磁盘的驱动号,第三句就是利用 hdparm 在指定的硬盘上测试硬盘的读写速度。
VPS 性能测试 SSD 硬盘速度
8、VPS 硬盘 IO 负载测试。使用 top 命令查看 %wa 数据,表示 IO 等待所占用的 CPU 时间的百分比, 高过 30% 时 IO 压力可能比较大。
VPS 性能查看磁盘负载
9、另外一条命令是:iostat -x 1 10,如果没有执行安装:yum install sysstat,主要查看 %util 和 %idle,如果 %util 接近 100%,说明产生的 I / O 请求太多,I/ O 系统已经满负荷,idle 小于 70% IO 压力就较大了,一般读取速度有较多的 wait。(点击放大)
VPS 性能测试硬盘 IO 负载
四、VPS 速度测试:上传下载速度、服务器带宽、Ping 响应时间
1、VPS 的速度好坏经常是我们选择某一个 VPS 商家的重要参考指标,对于国外的 VPS 主机我们可以执行以下命令来测试 VPS 入口带宽是多少。
wget http://cachefly.cachefly.net/100mb.test
VPS 性能速度测试
2、而对于国内的 VPS 主机,或者想要测试国外的 VPS 连接国内的速度,可以用 Wget 的方法下载国内服务器上的一个文件,最好选择那些没有使用海外 CDN 服务器的,这样数据更准确。
VPS 性能 Wget 国内月服务器文件
3、而测试 VPS 主机的出口速度,则可以使用 FTP 或者 Winscp 软件从服务器下载一个文件到本地,可以直观地看到速度。
VPS 性能测试出口带宽
4、为了避免因本地网络环境影响了 VPS 主机下载速度,有条件的朋友可以找一个国内的 VPS 主机来 Wget 被测试 VPS 主机上的文件,像国内的免费 VPS 服务器 Windows Azure 就可以了。
5、这里还有一个测试 VPS 主机在世界各地的下载速度的一键脚本,执行命令:
wget freevps.us/downloads/bench.sh -O – -o /dev/null | bash
VPS 性能在不同地方的速度
6、这是测试 VPS 主机入口与出口的带宽一键脚本,执行命令:
wget https://github.com/sivel/speedtest-cli/raw/master/speedtest_cli.py
python speedtest_cli.py –share
VPS 性能具体上传下载带宽
7、VPS 速度测试主机另一个指标就是 Ping 的响应时间,要测试 Ping,首先要保证 VPS 开机运行,同时防火墙允许 Ping。为了得到全面的 Ping 结果,可以使用在线站长工具,这些工作一般都提供了电信、联通、移动等不同的网络环境测试结果。
VPS 性能 Ping 响应时间测试
五、VPS 性能综合测试:UnixBench 跑分工具测试
1、UnixBench 是一款开源的测试 unix 系统基本性能的工具, 是比较通用的测试 VPS 性能的工具,Unixbench 的主要测试项目有:系统调用、读写、进程、图形化测试、2D、3D、管道、运算、C 库等系统基准性能提供测试数据。
2、UnixBench 测试的结果不仅仅只是 CPU, 内存, 或者磁盘为基准, 还取决于硬件, 操作系统版本, 编译器,测试系统各个方面一系列的性能, 然后将每个测试结果和一个基准值进行比较, 得到一个索引值, 所有测试项目的索引值结合在一起形成一个测试分数值。
3、另外,unixbench 版本不同也去导致测试得分的结果有很大的差别,大家如果要使用 UnixBench 来测试 VPS 的性能的话,最好是使用同一个版本的 UnixBench。UnixBench 测试执行以下命令:
wget http://teddysun.com/wp-content/uploads/unixbench.sh
chmod +x unixbench.sh
./unixbench.sh
4、测试时间可能会比较长,请耐心等待。最后 UnixBench 会详细列出各个测试项目的得分情况,以及 VPS 性能的综合跑分结果。(点击放大)
VPS 性能 UnixBench 测试
六、VPS 性能综合测试:服务器压力测试,VPS 系统负载测试
1、可能有的 VPS 主机使用性能测评工具得出的结果很优秀,但是最终运用到实际生产时却发现 VPS 主机根本无法承受理论上应该达到的流量压力,这时我们就不得不要怀疑 VPS 商是不是对 VPS 主机的参数进行了“篡改”了,例如 CPU、内存、硬盘等等,这些数据都是可以人工修改的。
2、在网站服务器压力 Web 性能测试中有提到常用的三个 Web 服务压力测试工具:Apache Bench,Webbench,http_load,这也是大家使用得比较多的负载测试软件,教程:网站服务器压力 Web 性能测试:Apache Bench,Webbench,http_load 安装使用。(点击放大)
VPS 性能服务器压力
3、而 Pylot,是一款适合在 Windows 电脑上运行的服务器压力测试程序,它可以运行 HTTP 负载测试,对于制定容量计划、确定基准点、分析系统瓶颈以及系统调优都非常有用,教程:Pylot 网站 Web 服务器性能和负载压力测试 - 适用 Windows 可绘制图表。
VPS 性能在本地测试
七、VPS 性能测试方法小结
1、为了能够得到更为准确和详细的有关 VPS 主机性能测试数据,我们应该多角度、全方位地运行多种 VPS 性能测试工具来进行检测,同时也要记得排除因本地网络环境而造成的数据结果的错误。
2、VPS 主机性能跑分工具不能当成唯一的评判 VPS 综合性能的对比指标,现在很多的云主机和云空间因为架构的不同,使用 UnixBench 测试会不准确,更准确的应该是在同等条件下服务器能够承受的流量压力。