前面做了很多基础测试,但是框架大部分时间都是在操作数据库,所以数据库操作性能很重要,下面对比测试一下 MixPHP 与 Phalcon 的数据库并发性能。
分别测试短连接与长连接。
硬件
虚拟机:4核 1G
使用 ab 工具压测,命令:ab -n 10000 -c 300 URL
环境
[ Phalcon ]
Apache worker模式,mpm配置如下:
<IfModule worker.c>
ServerLimit 50
ThreadLimit 200
StartServers 5
MaxClients 5000
MinSpareThreads 25
MaxSpareThreads 500
ThreadsPerChild 100
MaxRequestsPerChild 0
</IfModule>
[ MixPHP ]
MixHttpd 配置如下:
8个线程处理连接,8个进程处理PHP代码。
reactor_num = 8
worker_num = 8
源代码
请求数据表全部数据(6行),并输出json。
[ Phalcon ]
public function actionIndex()
{
$this->view->disable();
$data = $this->modelsManager->executeQuery("SELECT * FROM Test")->toArray();
header("Content-Type:application/json;charset=utf-8");
echo json_encode($data, JSON_UNESCAPED_UNICODE | JSON_UNESCAPED_SLASHES);
}
[ MixPHP ]
function actionIndex()
{
return \Mix::app()->rdb->createCommand("SELECT * FROM `test`")->queryAll();
}
开始测试
- 测试 Phalcon (短连接),QPS: 554.36
C:\Server\apache24vc11\bin>ab -n 10000 -c 300 http://www.d.com/
This is ApacheBench, Version 2.3 <$Revision: 1757674 $>
Copyright 1996 Adam Twiss, Zeus Technology Ltd, http://www.zeustech.net/
Licensed to The Apache Software Foundation, http://www.apache.org/
Benchmarking www.d.com (be patient)
Completed 1000 requests
Completed 2000 requests
Completed 3000 requests
Completed 40