swoole-1.7.7 發布,Http 服務器性能大幅提升
swoole-1.7.7 發布,內置Http服務器性能是Node.js的12倍
PHP的異步并發擴展swoole發布了 1.7.7 版本,此版本主要有:
增加對cygwin環境的支持
增加單次定時器的after接口
onClose事件調整為在close前觸發
增加內置Http服務器
修復目前已知的所有BUG
單次定時器
swoole之前的版本僅支持間隔時間的固定定時器,1.7.7新增了單次定時器接口,可以指定在當前時間之后的n毫秒內執行一段代碼。
swoole_timer_after(500, function(){ echo "Hello Swoole\n"; }); //500ms
在服務器端程序中可以調用swoole_server對象的after方法。
$server->on('receive', function($server, $fd, $from_id, $data(){ $server->after(2000, function(){ echo "timeout\n"; }); }));
內置Http服務器
在此版本中swoole內部集成了一個Http服務器,由底層的C代碼解析Http協議。得益于swoole的多線程Reactor+多進程模型,swoole內置Http服務器的性能非常好。通過使用apache bench工具進行壓測,性能是node.js的12倍,php-fpm的6倍,Go語言內置的Http服務器的1.42倍。
壓測方法:
ab -c 200 -n 200000 -k http://127.0.0.1:9501/
硬件環境:
Inter Core I5 3.2G * 4核 + 8G內存
QPS對比:
Golang Http | Node.js Http | php-fpm | swoole-http-server |
82037.75 | 9684.15 | 17622.74 | 117029.94 |
壓測采用的版本:
golang Ubuntu 4.9-20140406-0ubuntu1 [trunk revision 209157](已設置并發線程為CPU核數)
node.js v0.10.28
swoole-1.7.7
php 5.4.25 (已開啟OpCache,fpm進程數設置為8)
壓測使用的代碼:
均取自與官方提供的最簡示例。
注:性能測試報告僅作參考,測試結果并不代表實際項目數據。
Swoole是一個PHP的C擴展,可用來開發PHP的高性能高并發TCP/UDP Server。Swoole的網絡IO部分基于epoll/kqueue事件循環,是全異步非阻塞的。 業務邏輯部分使用多進程同步阻塞方式來運行。這樣既保證了Server能夠應對高并發和大量TCP連接。又保證業務代碼仍然可以簡單的編寫。
Swoole與Node.js相比更強大,支持同步/異步、多進程并行,Swoole提供了進程生命周期管理、內存保護機制,開發者無需考慮底層細節,專注于業務邏輯和功能的開發。
Swoole的網絡事件處理是多線程的,可以充分利用多核。而Node.js是單進程單線程的。使用官方提供的EchoServer在多核環境下壓測。Swoole的處理能力比node.js高出數倍。
來自:http://www.swoole.com/