PHP7+Swoole/Nginx/Golang性能对比案例

QPS对比

使用apache bench工具对Nginx静态页、Golang Http程序、PHP7+Swoole Http程序进行压力测试。在同一台机器上,进行并发100共100万次Http请求的基准测试中,QPS对比如下:

软件 QPS 软件版本
Nginx 164489.92 nginx/1.4.6 (Ubuntu)
Golang 166838.68 go version go1.5.2 linux/amd64
PHP7+Swoole 287104.12 swoole-1.7.22-alpha
Nginx-1.9.9 245058.70 nginx/1.9.9

注:Nginx-1.9.9的测试中,已关闭access_log,启用open_file_cache缓存静态文件到内存

  • 更详细的测试细节

  • 历史测试数据:Nginx/Golang/Swoole/Node.js的性能对比

测试环境

  • CPU:Intel® Core™ i5-4590 CPU @ 3.30GHz × 4

  • 内存:16G

  • 磁盘:128G SSD

  • 操作系统:Ubuntu14.04 (Linux 3.16.0-55-generic)

压测工具

ab -c 100 -n 1000000 -k http://127.0.0.1:8080/

VHOST配置

server {
    listen 80 default_server;
    root /data/webroot;
    index index.html;
}

测试页面

<h2>Hello World!</h2>

进程数量

Nginx开启了4个Worker进程

htf@htf-All-Series:~/soft/php-7.0.0$ ps aux|grep nginx
root      1221  0.0  0.0  86300  3304 ?        Ss   12月07   0:00 nginx: master process /usr/sbin/nginx
www-data  1222  0.0  0.0  87316  5440 ?        S    12月07   0:44 nginx: worker process
www-data  1223  0.0  0.0  87184  5388 ?        S    12月07   0:36 nginx: worker process
www-data  1224  0.0  0.0  87000  5520 ?        S    12月07   0:40 nginx: worker process
www-data  1225  0.0  0.0  87524  5516 ?        S    12月07   0:45 nginx: worker process

Golang

测试代码

package main

import (
    "log"
    "net/http"
    "runtime"
)

func main() {
    runtime.GOMAXPROCS(runtime.NumCPU() - 1)

    http.HandleFunc("/", func(w http.ResponseWriter, r *http.Request) {
        w.Header().Add("Last-Modified", "Thu, 18 Jun 2015 10:24:27 GMT")
        w.Header().Add("Accept-Ranges", "bytes")
        w.Header().Add("E-Tag", "55829c5b-17")
        w.Header().Add("Server", "golang-http-server")
        w.Write([]byte("<h2>\nHello world!\n</h2>\n"))
    })

    log.Printf("Go http Server listen on :8080")
    log.Fatal(http.ListenAndServe(":8080", nil))
}

PHP7+Swoole

PHP7已启用OpCache加速器。

PHP版本

htf@htf-All-Series:~/soft/php-7.0.0$ php -v
PHP 7.0.0 (cli) (built: Dec 10 2015 14:36:26) ( NTS )
Copyright (c) 1997-2015 The PHP Group
Zend Engine v3.0.0, Copyright (c) 1998-2015 Zend Technologies
    with Zend OPcache v7.0.6-dev, Copyright (c) 1999-2015, by Zend Technologies

测试代码

$http = new swoole_http_server("127.0.0.1", 9501, SWOOLE_BASE);

$http->set([
    'worker_num' => 4,
]);

$http->on('request', function ($request, swoole_http_response $response) {
    $response->header('Last-Modified', 'Thu, 18 Jun 2015 10:24:27 GMT');
    $response->header('E-Tag', '55829c5b-17');
    $response->header('Accept-Ranges', 'bytes');    
    $response->end("<h2>\nHello Swoole.\n</h2>");
});

$http->start();

原创文章,作者:BQKAW,如若转载,请注明出处:http://www.wangzhanshi.com/n/9410.html

(0)
BQKAW的头像BQKAW
上一篇 2025年1月1日 16:46:35
下一篇 2025年1月1日 16:46:37

相关推荐

  • php7安装mysql扩展的方法

    php7安装mysql扩展的方法:1、下载mysql扩展;2、进行configure;3、执行【make && make install】命令;4、编辑php.in…

    php 2025年1月1日
  • 怎么提升PHP 8的性能

    今年年底,PHP-8即将发布。虽然这个主版本有很多新功能,例如联合类型、静态返回和弱映射等,但最令人期待的改进还是JIT编译器。 从理论上讲,JIT处理PHP脚本编译的方式能够提高…

    php 2025年1月2日
  • PHP7带来的好处有哪些

    由于php升级乃头等大事,公司近期才打算升级,所以之前一直只能私下欣赏php7带来的快感 PHP7带来的好处 是的,性能上的大幅度提升,可以省机器,可以省钱。 PHP7带来的新东西…

    2025年1月1日
  • 如何在PHP7中创建COOKIE和销毁COOKIE

    1,如何设置COOKIE setcookie ( string $name [, string $value …

    php 2025年1月1日
  • PHP7实现daemon守护进程的案例分析

    在一个多任务的计算机操作系统中,守护进程是一种在后台执行的计算机程序。此类程序会被以进程的形式初始化。守护进程程序的名称通常以字母“d”结尾:例如,syslogd就是指管理系统日志…

    php 2025年1月1日
  • ubuntu16.04如何安装php5

    ubuntu16.04安装php5的方法:首先移除默认及已安装的PHP包;然后添加PPA;最后通过“sudo apt-get install php5.6”安装php5.6即可。 …

    php 2025年1月2日
  • php7怎么写框架

    1、路由 路由协议的规则是使用了正则表达的匹配,将不同的链接分发到不同的控制器上去,也支持调用匿名函数 // 第一种,使用匿名函数 App::router()->g…

    php 2025年1月1日
  • 详解PHP伪静态的实现方法

    概述 在现代 Web 开发中,URL 的设计对用户体验和搜索引擎优化(SEO)至关重要。动态 URL 虽然功能强大,但往往显得冗长且不友好。伪静态(URL 重写)技术通过将动态 U…

    php 2024年12月17日
  • PHP7连接MongoDB进行数据更新

    一、更新前通过控制台查看数据,查看命令如下     db.sites.find().pretty() 二、通过php实现数据更新,代码如下 …

    2025年1月1日
  • php7新功能有哪些

    PHP7 是最令人期待的,是 PHP 编程语言的主要功能。PHP7 是在2015年12月3日发布的,被誉为可以开发和交付移动到企业和云端的 Web 应用程序的革命。 PHP7 新功…

    php 2025年1月1日

发表回复

登录后才能评论