swoole-1.7.7 發布,Http 服務器性能大幅提升

jopen 10年前發布 | 21K 次閱讀 Swoole

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/

 本文由用戶 jopen 自行上傳分享,僅供網友學習交流。所有權歸原作者,若您的權利被侵害,請聯系管理員。
 轉載本站原創文章,請注明出處,并保留原始鏈接、圖片水印。
 本站是一個以用戶分享為主的開源技術平臺,歡迎各類分享!