高性能 PHP7 * 压力测试

女生的网名这么多〃 提交于 2020-01-13 04:37:39

应用程序在经过开发、测试、调试和分析优化之后,就可以投入生产了。然而,在部署到生产环境之前,有必要对应用程序进行压力/负载测试。压力测试可以提供运行应用程序的服务器在单位时间内处理请求数量的评估结果,根据这个评估结果,我们可以优化程序、Web服务器、数据库和缓存,进而获得更好的性能。

本章包括以下几方面内容:

  • Apache JMeter
  • ApacheBench (ab)
  • Siege
  • 在 PHP 5.6 和 PHP7 上对 Magento2 进行压力测试
  • 在 PHP 5.6 和 PHP7 上对 Drupal 8 进行压力测试
  • 在 PHP 5.6 和 PHP7 上对 WordPress 进行压力测试

Apache JMeter

Apache JMeter 是一个开源的图形界面工具,用于对服务器的性能进行压力测试。JMeter完全用Java编写,因此可以运行在所有支持 Java 的操作系统上。略。

ApacheBench (ab)

ApacheBench (ab) 是一个命令行工具,你如果安装了Apache,就也安装了ab。

使用:

ab –n <Number_Requests> -c <Concurrency> <Address>:<Port><Path> 

参数:

  • n:发送测试请求的总数目。
  • c:并发量,即一次同时发出的请求数目。
  • Address:应用的域名或Web服务器的IP。
  • Port:应用的端口号。
  • Path:进行压力测试的应用的路径,首页使用斜杠(/)。

示例:

ab -c 50 -n 500 https://www.baidu.com/

由于Web服务器的默认端口号是80,所以不用指明80端口。注意命令末尾的斜杠,在此处是有必要的,因为它表示路径。执行完上面的命令之后,我们将会看到如下图所示的输出。

图中包含一些有用的信息:

  • 每秒请求数(Requests per second)为240.08;
  • 压力测试所用的总时间 (Time taken for tests)为2.083秒;
  • 最短时间请求为163ms;最长时间请求为458ms。

通过增加请求数和并发量,同时观察服务器的性能,我们可以知道服务器的负载上限。

Siege

Siege 是另一款用于测试负载和性能的开源命令行工具,它是一个HTTP/FTP负载测试和基准测试实用程序。

安装:

> wget http://download.joedog.org/siege/siege-4.0.4.tar.gz
> tar -xzvf siege-4.0.4.tar.gz; cd siege-4.0.4
> ./configure; make
> make install

# 查看版本
> siege –V

使用:

siege http://test.com

-f urls.txt 制定多个 url 的文件
-c 指定并发数
-r 指定测试的次数
-t 持续测试时间
# -r和-t一般不同时使用

Siege 启动测试后,使用Ctrl+C来结束测试,得到如 下输出:

在上图中,我们可以看到事务数目(Transactions)、响应时间(Response Time)、事务率 (Transaction rate)、最长时间事务(Longest transaction)、最短时间事务(Shortest transaction)等信息。

实际项目中应用程序的压力测试

我们将对 Magento 2、Drupal 8 和 WordPress4 进行压力测试,所有开源应用程序将使用它们的默认数据;

有三台配置了 Nginx 作为Web服务器的 VPS。第一台 VPS 安装了 PHP 5.5-FPM,第二台安装了 PHP 5.6- FPM,第三台安装了 PHP 7-FPM,三台VPS的硬件配置完全相同,所有待测试的应用程序使用相同的数据和版本。

(书说)测试结果:

  • Magento运行在PHP 7上比在PHP 5.6上快241%,比在PHP 5.5上快320%,PHP 7相对于PHP 5.6和 PHP 5.5有着巨大的性能提升。
  • WordPress运行在PHP 7上比在PHP 5.6上快135%,比在PHP 5.5上快182%。
  • Drupal 8运行在PHP 7上比在PHP 5.6上快178%,比在PHP 5.5上快205%。

可见,使用PHP 7总能获得比使用PHP 5.6和PHP 5.5更好的性能。

-- 参考:《高性能PHP7,Learning PHP7 High Performance》

标签
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!