nginx、php-fpm、swoole HTTP/TCP壓測對比
本次測試是在win7下docker環境中進行壓測,共建立一個nginx容器、一個php-fpm容器和一個swoole容器,客戶端請求nginx伺服器,nginx接收使用者訪問請求並轉發給php-fpm,php-fpm接收資料併發送資料給swoole伺服器
均使用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