想實(shí)現(xiàn)的效果:想在thinkphp8的基礎(chǔ)上不改變老項(xiàng)目實(shí)現(xiàn)與webman 并存
情況介紹:原項(xiàng)目 是用 thinkphp8 開(kāi)發(fā)的 項(xiàng)目很大 ,現(xiàn)在用戶(hù)端 經(jīng)常出現(xiàn) cpu 100% 打滿(mǎn)的情況 ,如果說(shuō)整體遷移到webman 會(huì)不習(xí)慣 并且 工程量比較大;
可行的 解決方案:
.部分高并發(fā)的 接口使用 webman 單獨(dú)成立項(xiàng)目 開(kāi)發(fā) 和 thinkphp 部署在 同一服務(wù)器,并通過(guò) nginx 轉(zhuǎn)發(fā) ( 目前來(lái)講最可行的 方案 相當(dāng)于 webman 做微服務(wù)了 ,但是使得項(xiàng)目結(jié)構(gòu)變復(fù)雜了)
待討論的解決方案:
能不能實(shí)現(xiàn)在thinkphp 同一個(gè)項(xiàng)目下 使用 webman 使得在同一項(xiàng)目 結(jié)構(gòu)下 thinkphp webman 切換
重寫(xiě)需要改進(jìn)的接口就行了,又簡(jiǎn)單又方便,硬集成在一起項(xiàng)目結(jié)構(gòu)就復(fù)雜多了
這里有一個(gè)難點(diǎn) 是 排查那些接口是并發(fā)的 使用cpu過(guò)多的 我覺(jué)得這是一個(gè)大難點(diǎn) 接口改成webman的很簡(jiǎn)單,分分鐘的事,就是不好定位那些接口是導(dǎo)致cpu100%
使用thinkphp
往往不是cpu100%的主要原因,去排查分析一下是什么場(chǎng)景下多少Q(mào)PS的時(shí)候cpu100%了,找到原因是因?yàn)?code>代碼不合理還是服務(wù)器性能不夠
才可以更精確解決問(wèn)題,不然即使整個(gè)項(xiàng)目都遷移webman也不一定能提升多少性能利用率
我現(xiàn)在公司用webman寫(xiě)了個(gè)websocket服務(wù)端,客戶(hù)端那邊跟ddos似的,8核100來(lái)人就頂不住了,cpu100%
techempower壓測(cè)顯示webman不管在純文本、數(shù)據(jù)庫(kù)查詢(xún)、數(shù)據(jù)庫(kù)更新等所有指標(biāo)都高于gin近一倍左右。
如果你的結(jié)果不一樣,可能是因?yàn)槟阍趙ebman中使用了ORM帶來(lái)了較大的性能損失,可嘗試 webman+原生PDO 與 gin+原生SQL 比較。
8核 100人 cpu100%基本上代碼有問(wèn)題,我們物聯(lián)網(wǎng)幾萬(wàn)在線(xiàn)設(shè)備,3臺(tái)4核服務(wù)器 cpu也就 1-5%。webman的gateway-worker插件,帶數(shù)據(jù)庫(kù)業(yè)務(wù)。