ps:
做一下補充,幾個朋友說的對,這個其實不嚴謹,不過關于-n這個參數問題我單獨說一下,我自己測試了好幾次不同參數,這里的100也是故意用的低數,按照三體的說法,這也算是非飽和式測試了,不容易受到硬件設備影響。只要總時長超過1秒,能簡單對比rps值就可以了。 不同硬件條件 -n參數不同表現也會不同。
關于Nginx+fpm問題:tp平時雖然都是配合Nginx使用,但是fpm這貨在windows下如果只用一個線程太容易崩了,以至于我平時開發(fā)還要專門要跑個腳本檢測fpm數量。多個fpm來測試tp和web比較就沒有意義了。所以才用php think來測試。linux環(huán)境家里懶得弄了,畢竟經常還要玩游戲。
簡單的hello world 測試 最后上結論
環(huán)境:
CPU AMD 3600是6核12芯
內存 3200頻率8G*2
PHP 8.1.4(x64)
tp6
運行命令 php think run
測試命令 ab -c 10 -n 100 http://127.0.0.1:8000/ 多次 平均55 最高60
tp6 + workerman 插件
運行命令 php think worker
測試命令 ab -c 10 -n 100 http://127.0.0.1:2346/ 多次
這個不穩(wěn)定 第一次1K 然后一直往下掉。 最高只有第一次1K
七八次以后,rps掉到100多
webman 1.3.4
運行命令 php start.php start
測試命令 ab -c 10 -n 100 http://127.0.0.1:8000/ 多次 平均6K多
調了一次參數 -n 變成 200 rps 平均12k 前兩個沒測-n 200 估計也會多一些 畢竟我是6核12芯開玩笑的- -d不同硬件條件 -n參數不同表現也會不同,并不是越高越能代表測試結果。
把輸出 123改為 find(1)一條數據, rps降到4k,這個應該是數據庫的瓶頸了。
就算不做緩存,不優(yōu)化數據庫,配置稍微好點的云端mysql也能滿足基本業(yè)務了。
純文字輸出的rps平均值,TP6是50+ | tp6+worker插件是1k慢降到120|webman是6k
鏈接數據庫單條有索引find主鍵的rps tp6是50+ | webman是4k
分享結束
想問個問題,云端docker部署tp和laravel時 cpu狂飆,官方鏡像還是我自己的都一樣,nginx php mysql各自都用docker的情況下,通過不同端口映射相互訪問,低配的阿里云ECS,CPU經常跑到80%,vscode遠程插件都會卡死,PHP改成原生,nginx和mysql還用docker,CPU就會降到10%一下,無奈放棄docker生產環(huán)境。想問問大家怎么搞的docker云端? 小項目比較多,PHP版本要求差不多,怎么靈活管理比較方便?
windows下webman是單進程的,你的6核12芯只用了1核1芯。如果是linux下webman開多進程,性能會更好。同樣的 php think run 也是單進程的,tp應該用nginx + fpm測試。
還有你壓測的是短連接,現在http都是長連接了,壓測應該加上 -k 參數。-n100 太少了,怎么也得100000啊。正確的壓測參數應該類似 ab -n100000 -c200 -k http://127.0.0.1:8787/
并不是測峰值,只要環(huán)境相同,比較出來差異就行了,并不是太別嚴謹,有個直觀印象就行了。不同配置在不同 -n參數下表現是不同的,只要測試總時長超過一秒,得出的rps方便比較就可以了。 6核12芯當然是開玩笑的,我沒用nginx+fpm測試tp就是一個原因,因為我本地fpm是腳本自動守護四個進程,這樣不公平,單開一個fpm進程沒辦法測試,因為fpm在windows下太容易掛掉了。