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