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