清风客栈 - 妖孽同学博客
【妖孽同学】测试Nginx与Apache执行PHP效率 系统Centos8.0 面板BT7.5.2
2021-05-10
  • 0x01前情提要

今天闲的无聊看到群里有人争论Nginx与Apache执行PHP的效率问题。很早以前Apache确实执行PHP效率很高,但Nginx这么年迭代后我觉得执行PHP效率应该不差,所以来测试一下。

  • 0x02服务器

测试当然需要服务器,所以我在阿里云租了两台一样的服务器
0x0001.png
宽带按计量10M
0x0002.png
最终配置
0x0003.png
0x0004.png

  • 0x03环境安装

先升级一下系统

sudo yum update

0x0005.png
为了方便操作安装bt面板

yum install -y wget && wget -O install.sh http://download.bt.cn/install/install_6.0.sh && sh install.sh

0x0006.png
Nginx1.18+php7.0 & Apache2.4+php7.0
0x0007.png

  • 0x04PHP代码

用于跑测试的代码

<?php
$a = array();
$b = new PerformanceTest();
$b->begin();

for($i=0;$i<10000;$i++){
    $a[$i] = $i;
}

foreach($a as $i)
{
    in_array($i, $a);
}

$b->end();


class PerformanceTest

{

    private $time;

    private $memory;

    public function begin()

    {

        $this->time = $this->getTime();

        $this->memory = $this->getMemory();

    }

    public function end()

    {

        $this->time   = $this->getTime()   - $this->time;

        $this->time   = round($this->time,7);//在这里才能格式化时间

        $this->memory = $this->getMemory() - $this->memory;

        $this->memory = $this->convert($this->memory);

        echo "time:{$this->time}秒
";

        echo "memory:{$this->memory}
";

    }

      

    public function getTime()

    { 

        list($usec, $sec) = explode(" ", microtime());

        return ((float)$usec + (float)$sec);

    }

    public function getMemory()

    {

        return memory_get_usage();

    }

    public function convert($size)

    {

        $unit=array('b','kb','mb','gb','tb','pb');

        return @round($size/pow(1024,($i=floor(log($size,1024)))),2).' '.$unit[$i];

    }

}

0x0008.png

  • 0x05开始测试

我们使用阿里云性能测试PTS来测试并发能力
因为本域名没有接入阿里云所以后改由IP:8081的方式访问测试
0x0009.png
0x0010.png
0x0011.png
0x0012.png
0x0013.png

test1是Nginx , test2是Apache
0x0014.png
0x0015.png

  • 0x06静态文件并发

反正也搭建了顺便测试一下静态文件并发
页面是宝塔默认站点页面
test1是Nginx , test2是Apache
0x0016.png
0x0017.png

  • 0x07结论

1-15/16=6.25%
1-138/271≈49.1%
宝塔默认配置情况下 Nginx与Apache执行PHP7.0效率差不多,Nginx略高6.25%(可以记作误差)
宝塔默认配置情况下 Nginx与Apache访问静态文件Nginx完胜,Nginx高近一半

  • 0x08阿里云性能测试PTS报告

压测报告.zip

本文名称:【妖孽同学】测试Nginx与Apache执行PHP效率 系统Centos8.0 面板BT7.5.2
版权声明:清风客栈发布