IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> PHP知识库 -> 原生PHP、Laravel、MIXPHP、Go高并发性能测试QPS -> 正文阅读

[PHP知识库]原生PHP、Laravel、MIXPHP、Go高并发性能测试QPS

系统环境:

4核8G?内存,SSD硬盘

CentOS 6.5 64位

MySQL 5.6.29

PHP 5.6.22

Apache 2.2.31

nginx 1.10.0

启用OPcache

web架构为:

把php请求利用Nginx反向代理给后端的Apache或者MIXPHP。

测试之前,请先查看apache的ab测试注意点:Apache的ab进行并发性能测试的注意点

一、基准性能测试

1000并发,1万请求数:

ab?-n10000?-c1000?{URL}

1、Nginx静态文件

Nginx QPS:?14040/秒

暴力测试1.9万并发,19万请求(再高的并发服务就不稳定了):

没有失败请求,QPS: 10918/秒

2、原生PHP

PHP QPS?:3246/秒

暴力测试?3000并发,3万请求:

QPS?:?507/秒

并发再高的话,失败请求就逐渐多了起来,服务不可用了。

3、MIXPHP

基于?Swoole?的常驻内存型?PHP?高性能框架测试。

环境?swoole 1.10.4?、?mixphp 1.0.2

采用Nginx将php请求反向代理给mixphp:http://127.0.0.1:9501

QPS?:?6455/秒

暴力测试:

1.6万并发,16万请求数(再高的并发出错的请求就逐渐多了)

QPS?:?4020/秒

此时系统负载2,CPU 40%

4、Go语言

GO QPS:17489/秒

暴力测试2万并发,20万请求:

2万并发的请求下,没有失败请求,QPS?:9053/秒。

基准测试由于不连接数据库,一般不用于实际项目业务场景的测试使用,仅供参考而已。

基准测试(不操作数据库)总结:

常规性能测试对比

ab并发和请求数框架或语言QPS(每秒请求数)
1000并发,10000请求Nginx14040
1000并发,10000请求原生PHP3246
1000并发,10000请求MIXPHP6455
1000并发,10000请求Go语言17489

暴力性能测试对比

ab并发和请求数框架或语言QPS(每秒请求数)
19000并发,190000请求Nginx10918
3000并发,30000请求原生PHP507
16000并发,160000请求MIXPHP4020
20000并发,200000请求Go语言9053

二、读取数据库的性能测试

连接mysql数据库,只读取数据表中一行记录:

测试之前,先把mysql的并发连接数提高,my.cnf里面:

[mysqld]

thread_cache_size = 256

max_connections = 10000?

否则在高并发时,mysql就会报错:

Error 1040: Too many connections

1、原生PHP

php QPS?:1735/秒

暴力测试

2000并发,2万请求(再高的并发失败请求就逐渐多了起来)

QPS?:641/秒

2、Laravel5.1框架QPS测试

laravel框架测试的注意点:

1、由于框架加载太多依赖,并发1000,1万请求时已经产生3000多个失败请求,所以需要降低测试要求;

2、对于laravel框架来说,需要给ab加上?-k?参数进行测试,否则会出现错误:apr_poll: The timeout specified has expired (70007)?。

测试命令:

ab?-k?-c350?-n3500?http://la.dev/

并发350,3500请求数:

QPS?:?58/秒

对laravel进行性能调优:

APP_DEBUG=false
php?artisan?config:cache
php?artisan?route:cache
php?artisan?optimize?--force

性能调优后,QPS上升到?118/秒

比未调优之前提高50%。

此时系统负载150,cpu 50%,高负荷运转。

3、MIXPHP框架(PDO短链接)

QPS?:?2935/秒

mixphp暴力测试

1.5万并发,15万请求数(再高的并发就不稳定啦)

QPS?:?2422/秒

此时系统负载6-8,cpu 60%,在高并发的场景下,QPS下降并不明显。

4、MIXPHP框架(PDO长链接)

QPS?:?4367/秒

长链接比短链接并发性能提高?50%。

mixphp长链接暴力测试

1.5万并发,15万请求

QPS?:3098/秒

此时系统负载6-8,cpu 60%,在高并发的场景下,QPS下降并不明显。

5、Go语言

go QPS?:4247/秒

go暴力测试,并发1.8万,请求18万:

ab?-n?180000?-c?18000?http://localhost:9090/hello

在如此高的并发下,没有失败的请求,QPS依然达到了3037/秒;

服务器负载load average?平均5-10,cpu约50%。

再测试比1.8万高的并发,ab的Failed requests就逐渐多起来了(ab最多支持2万并发),原因是mysql数据库撑不住了,mysql报错:“dial tcp 127.0.0.1:3306: connect: connection timed out”

go不愧为天生的高并发王者!

测试总结:

常规性能测试对比

ab并发和请求数框架或语言QPS(每秒请求数)
1000并发,10000请求原生PHP1735
350并发,3500请求Laravel 5.1(开发模式)58
350并发,3500请求Laravel 5.1(生产模式)118
1000并发,10000请求MIXPHP(短链接)2935
1000并发,10000请求MIXPHP(长链接)4367
1000并发,10000请求Go语言4247

暴力性能测试对比

ab并发和请求数框架或语言QPS(每秒请求数)
2000并发,20000请求原生PHP641
15000并发,150000请求MIXPHP(短链接)2422
15000并发,150000请求MIXPHP(长链接)3098
18000并发,180000请求Go语言3037

完。

  PHP知识库 最新文章
Laravel 下实现 Google 2fa 验证
UUCTF WP
DASCTF10月 web
XAMPP任意命令执行提升权限漏洞(CVE-2020-
[GYCTF2020]Easyphp
iwebsec靶场 代码执行关卡通关笔记
多个线程同步执行,多个线程依次执行,多个
php 没事记录下常用方法 (TP5.1)
php之jwt
2021-09-18
上一篇文章      下一篇文章      查看所有文章
加:2021-09-23 11:13:30  更:2021-09-23 11:14:36 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 -2024/11/23 22:34:59-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码