本次測試是在win7下docker環境中進行壓測,共創建一個nginx容器、一個php-fpm容器和一個swoole容器,客戶端請求nginx服務器,nginx接收用戶訪問請求並轉發給php-fpm,php-fpm接收數據並發送數據給swoole服務器
軟硬件:
OS :boot2docker Linux
cpu: i5-6500 單核
內存:1G
PHP Vsersion:7.2.9
swoole:4.1.2
nginx:1.12

均使用docker環境下進行ab壓測並發100,1萬次請求,結果如下:

壓測數據表明,性能:swoole TCP 長連接 > SWOOLE HTTP > PHP-FPM,原因在於swoole創建的TCP連接在PHP請求結束或者調用$cli->close時並不會關閉,下一次執行connect調用時會復用上一次創建的連接,而HTTP是基於TCP連接的,如果連接被頻繁地啟動然后斷開就會花費很多資源在TCP三次握手以及四次揮手上,效率比較低
具體壓測數據如下:
1、swoole HTTP連接:
docker run --rm --net=host jordi/ab -n 10000 -c 100 http://test.epweike.net/
10000連接數並發100訪問 只開啟一個swoole client連接,qps:918


10000連接數並發100訪問 ,開啟1000個swoole client連接,qps:872


2、SWOOLE TCP連接
docker run --rm --net=host jordi/ab -n 10000 -c -k 100 http://test.epweike.net/
10000連接數並發100訪問 只開啟一個swoole client連接,qps:1733


10000連接數並發100訪問 ,開啟1000個swoole client連接,qps:1744


3、nginx+php-fpm
10000連接數並發100訪問 ,不開swoole client連接,原生php輸出,qps:115


