澳门新浦京电子游戏PHP 5.5 / PHP5.6 / PHP-NG 和 HHVM 哪个性能更好?

摘要:在一个基于Vagrant的本地环境中,可能是某个错误的原因,导致HHVM测试结果很差;在HHVM伙伴们协助下,该原因仍在研究中!然而,在DigitalOcean的一个4GB虚拟机中,HHVM甚至盖过了最新版的PHP-NG的风头!

常见的压力测试工具有很多,在本文就简单介绍一下Siege
。Siege是Linux/Unix下的一个WEB系统的压力测试工具。

Web服务器压力(负载)测试工具

澳门新浦京电子游戏 1

下载与安装:

一 Siege
一款开源的压力测试工具,可以根据配置对一个WEB站点进行多用户的并发访问,记录每个用户所有请求过程的相应时间,并在一定数量的并发访问下重复进行。
官方:

结论:它们反映出HHVM的功效更佳(在JIT热启动后),虽然出于某些原因,我们不能在所有装备中获取这些结果。

下载地址:    可根据需要下载版本

  1. 下载源码

如果你记得我们在几个月前写过一篇文章,那时WordPress
3.9表明是完全支持HHVM的,当时是那么令我们欢欣鼓舞。最初的基准测试结果显示,HHVM要比驱动着当前所有PHP构建的Zend引擎高级得多。后来,问题就出来了:

$ wget

请自行google例如:

  • HHVM只能以单个用户运行,这意味着(在共享环境中)安全性差了
  • HHVM在崩溃后不会自动重启,而不幸的是,它至今仍然经常发生
  • HHVM在启动时使用大量内存,虽然,它和同规模的PHP-FPM比较,单个请求的内存使用量更低

$ tar zxf siege-latest.tar.gz      解压安装

wget http://soft.vpser.net/test/siege/siege-2.67.tar.gz 

很显然,你不得不根据你的(或者更确切地说是你的站点)的需求采取折中方案,然而这值得吗?切换到HHVM后,你期望获得多少性能改善呢?

$ cd siege-4.0.2/      进入安装路径下

  1. 解压、编译和安装

    tar -zxf siege-2.67.tar.gz cd siege-2.67/ /configure make && make install

在Kinsta,我们真的想要测试所有新技术,并通常会优化这一切来为我们的客户提供最佳的环境。今天,我最终花了点时间来配置测试环境并进行了一些测试来对比两个不同的构建,一个是全新出炉的WordPress安装,另外一个则添加了大量内容的WooCommerce!为了计量脚本的运行时间,我只是简单地添加了

$ ./configure      配置安装路径(默认路径)

  1. 运行siege

    siege -c 200 -r 10 -f test.txt

<?php timer_stop(1); ?>

$ sudo make     编译

-c是并发量,-r是重复次数。
url文件就是一个文本,每行都是一个url,它会从里面随机访问的。

这一行到footer.php的/body标记前。

$ sudo make install      编译安装

test.txt 内容:

这里是配置环境的详情:

查看是否安装成功:

4 结果说明
Lifting the server siege… done.
Transactions: 3419263 hits //完成419263次处理
Availability: 100.00 % //100.00 % 成功率
Elapsed time: 5999.69 secs //总共用时
Data transferred: 84273.91 MB //共数据传输84273.91 MB
Response time: 0.37 secs //相应用时1.65秒:显示网络连接的速度
Transaction rate: 569.91 trans/sec //均每秒完成 569.91
次处理:表示服务器后
Throughput: 14.05 MB/sec //平均每秒传送数据
Concurrency: 213.42 //实际最高并发数
Successful transactions: 2564081 //成功处理次数
Failed transactions: 11 //失败处理次数
Longest transaction: 29.04 //每次传输所花最长时间
Shortest transaction: 0.00 //每次传输所花最短时间

  • DigitalOcean 4GB 雨滴容器 (2 CPU核心, 4GB RAM)
  • Ubuntu 14.04, MariaDB10
  • 测试站点: 已导入演示内容的Munditia主题,WooCommerce 2.1.12 &
    WordPress 3.9.1
  • PHP 5.5.9, PHP 5.5.15, PHP 5.6.0 RC2, PHP-NG
    (20140718-git-6cc487d)和HHVM 3.2.0 (版本是PHP 5.6.99-hhvm)

查看siege安装路径:

二Webbench
webbench最多可以模拟3万个并发连接去测试网站的负载能力,安装使用简单方便。

没有进一步大费周章,这些就是我的测试结果,数值越低越好,以秒为单位:

$ which siege

  1. 下载源码

DigitalOcean 4GB 雨滴容器

单位是秒,运行10次,越低越好

澳门新浦京电子游戏 2

看起来似乎PHP-NG在它首次运行后就获得了峰值性能!HHVM需要更多几次重载,但是它们的性能貌似差不多!我等不及PHP-NG合并到开发主干了!:)

一分钟命中数,越高越好。

澳门新浦京电子游戏 3

PHP 5.5.15禁用OpCache

  • 执行: 236 hits
  • 可用性: 100.00 %
  • 消耗时间: 59.03 secs
  • 传输的数据: 2.40 MB
  • 回应时间: 2.47 secs
  • 执行率: 4.00 trans/sec
  • 吞吐量: 0.04 MB/sec
  • 并发数: 9.87
  • 成功的执行: 236
  • 失败的执行: 0
  • 最长执行: 4.44
  • 最短执行: 0.48

PHP 5.5.15启用OpCache

  • 执行: 441 hits
  • 可用性: 100.00 %
  • 消耗时间: 59.55 secs
  • 传输的数据: 4.48 MB
  • 回应时间: 1.34 secs
  • 执行率: 7.41 trans/sec
  • 吞吐量: 0.08 MB/sec
  • 并发数: 9.91
  • 成功的执行: 441
  • 失败的执行: 0
  • 最长执行: 2.19
  • 最短执行: 0.64

PHP 5.6 RC2禁用OpCache

  • 执行: 207 hits
  • 可用性: 100.00 %
  • 消耗时间: 59.87 secs
  • 传输的数据: 2.10 MB
  • 回应时间: 2.80 secs
  • 执行率: 3.46 trans/sec
  • 吞吐量: 0.04 MB/sec
  • 并发数: 9.68
  • 成功的执行: 207
  • 失败的执行: 0
  • 最长执行: 3.65
  • 最短执行: 0.54

PHP 5.6 RC2启用OpCache

  • 执行: 412 hits
  • 可用性: 100.00 %
  • 消耗时间: 59.03 secs
  • 传输的数据: 4.18 MB
  • 回应时间: 1.42 secs
  • 执行率: 6.98 trans/sec
  • 吞吐量: 0.07 MB/sec
  • 并发数: 9.88
  • 成功的执行: 412
  • 失败的执行: 0
  • 最长执行: 1.93
  • 最短执行: 0.34

HHVM 3.2.0(版本是PHP 5.6.99-hhvm)

  • 执行: 955 hits
  • 可用性: 100.00 %
  • 消耗时间: 59.69 secs
  • 传输的数据: 9.18 MB
  • 回应时间: 0.62 secs
  • 执行率: 16.00 trans/sec
  • 吞吐量: 0.15 MB/sec
  • 并发数: 9.94
  • 成功的执行: 955
  • 失败的执行: 0
  • 最长执行: 0.85
  • 最短执行: 0.23

PHP-NG启用OpCache(构建: Jul 29 2014)

  • 执行: 849 hits
  • 可用性: 100.00 %
  • 消耗时间: 59.88 secs
  • 传输的数据: 8.63 MB
  • 回应时间: 0.70 secs
  • 执行率: 14.18 trans/sec
  • 吞吐量: 0.14 MB/sec
  • 并发数: 9.94
  • 成功的执行: 849
  • 失败的执行: 0
  • 最长执行: 1.06
  • 最短执行: 0.13

注意:这里节略了前一次的测试结果(有误),如感兴趣请访问原文查看。

/usr/local/bin/siege

请自行google例如:

查看siege版本:

wget http://blog.s135.com/soft/linux/webbench/webbench-1.5.tar.gz 

$ siege -V

  1. 解压、编译和安装

    tar zxvf webbench-1.5.tar.gz cd webbench-1.5 make mkdir /usr/local/man #建立相应目录否则导致无法正常安装 make install

SIEGE 4.0.2

  1. 运行webbench

    webbench -c 100 -t 30

参数说明:

-c表示并发数,-t表示时间(秒)

可以使用”siege -h”命令来查看帮助信息:

Webbench – Simple Web Benchmark 1.5
Copyright (c) Radim Kolar 1997-2004, GPL Open Source Software.
Benchmarking: GET
100 clients, running 30 sec.
Speed=16084 pages/min, 152872 bytes/sec. **#运行结果显示
Requests: 8042 susceed, 0 failed.

$ siege -h

  1. 很久前的测试
    澳门新浦京电子游戏 4**

SIEGE 4.0.2     版本号

//模拟两万个客户端对nginx 服务器压力测试。

Usage: siege [options]

澳门新浦京电子游戏 5

 siege [options] URL

一 Siege
一款开源的压力测试工具,可以根据配置对一个WEB站点进行多用户的并发访问,记录每个用户所有请求…

 siege -g URL

Options:

-V, –version    VERSION, prints the version number.

-h, –help    HELP, prints this section.

-C, –config    CONFIGURATION, show the current config.

-v, –verbose    VERBOSE, prints notification to screen.

-q, –quiet    QUIET turns verbose off and suppresses output.

-g, –get     GET, pull down HTTP headers and display the

      transaction. Great for application debugging.

-c, –concurrent=NUM  CONCURRENT users, default is 10

-r, –reps=NUM   REPS, number of times to run the test.

-t, –time=NUMm   TIMED testing where “m” is modifier S, M, or H

      ex: –time=1H, one hour test.

-d, –delay=NUM   Time DELAY, random delay before each requst

-b, –benchmark   BENCHMARK: no delays between requests.

-i, –internet   INTERNET user simulation, hits URLs randomly.

-f, –file=FILE   FILE, select a specific URLS FILE.

-R, –rc=FILE    RC, specify an siegerc file

-l, –log[=FILE]   LOG to FILE. If FILE is not specified, the

      default is used: PREFIX/var/siege.log

-m, –mark=”text”   MARK, mark the log file with a string.

      between .001 and NUM. (NOT COUNTED IN STATS)

-H, –header=”text”  Add a header to request (can be many)

-A, –user-agent=”text” Sets User-Agent in request

-T, –content-type=”text” Sets Content-Type in request

查看当前的配置信息

$ siege -C

使用说明:

(1) 直接请求URL:

$ siege -c 20 -r 10

参数说明: -c 是并发量,并发数为20人 -r 是重复次数, 重复10次

(2) 随机选取urls.txt中列出所有的网址

在当前目录下创建一个名为”urls-demo.txt”的文件。
文件里边填写URL地址,可以有多条,每行一条,比如:

# URLs:

// 执行 $ siege -c 5 -r 10 -f urls-demo.txt

$ siege -c 5 -r 10 -f /Users/WangYoungTom/temp/urls-demo.txt

参数说明: -c 是并发量,并发数为5人 -r 是重复次数, 重复10次 -f
指定使用文件,urls-demo.txt就是一个文本文件,每行都是一个url,会从里面随机访问的

Siege从Siege-V2.06起支持POST和GET两种请求方式。
如果想模拟POST请求,可以在urls-demo.txt中安装一下格式填写URL:

# URL (POST):

POST
UserId=XXX&StartIndex=0&OS=Android&Sign=cff6wyt505wyt4c

POST
UserId=XXX&StartIndex=0&OS=iOS&Sign=cff63w5905wyt4c

使用示例:

请求

$ siege –concurrent=10 –reps=5 –delay=3

$ siege -c 10 -r 5 -d 3

结果说明:

Transactions: 153 hits (处理次数,本次处理了153此请求)

Availability: 100.00 % (可用性/成功次数的百分比,比如本次100%成功)

Elapsed time: 17.22 secs (运行时间,本次总消耗17.22秒)

Data transferred: 7.70 MB (数据传送量)

Response time: 0.17 secs (响应时间)

Transaction rate: 8.89 trans/sec (处理请求频率,每秒钟处理8.89次请求)

Throughput: 0.45 MB/sec (吞吐量,传输速度)

Concurrency: 1.54 (实际最高并发连接数)

Successful transactions: 153 (成功的传输次数)

Failed transactions: 0 (失败的传输次数)

Longest transaction: 0.70 (处理传输是所花的最长时间)

Shortest transaction: 0.02 (处理传输是所花的最短时间)

使用实例:

$ siege -c 5 -r 10

Transactions:    386 hits

Availability:    100.00 %

Elapsed time:    37.40 secs

Data transferred:   19.47 MB

Response time:    0.43 secs

Transaction rate:   10.32 trans/sec

Throughput:    0.52 MB/sec

Concurrency:    4.45

Successful transactions:   386

Failed transactions:    0

Longest transaction:   2.38

Shortest transaction:   0.02

参考链接:

官网

文档

内容有稍微调整和修改

[END]

发表评论

电子邮件地址不会被公开。 必填项已用*标注