記一次優(yōu)化天貓商城系統(tǒng)高并發(fā)的經(jīng)驗(yàn)!
對于線上系統(tǒng)調(diào)優(yōu),它本身是個(gè)技術(shù)活,不僅需要很強(qiáng)的技術(shù)實(shí)戰(zhàn)能力,很強(qiáng)的問題定位,問題識別,問題排查能力,還需要很豐富的調(diào)優(yōu)能力。
(3)調(diào)用邏輯:下圖為簡要調(diào)用邏輯

二、何為單體架構(gòu)項(xiàng)目
4.微服務(wù):可理解為一個(gè)個(gè)小型的項(xiàng)目,如之前的ERP大型項(xiàng)目,劃分為訂單服務(wù)(訂單項(xiàng)目),采購服務(wù)(采購項(xiàng)目),物料服務(wù)(物料項(xiàng)目)和銷售服務(wù)(銷售項(xiàng)目),以及服務(wù)之間調(diào)用

1.當(dāng)秒殺的時(shí)候,cpu暴增
該系統(tǒng)每天秒殺分為三個(gè)時(shí)間端:10點(diǎn),13點(diǎn)和20點(diǎn),如下為秒殺的簡要頁面

圖2

?圖3

2.單臺運(yùn)用服務(wù)器cpu?


這個(gè)未保存截圖,記得是600左右
connected_clients:600?

四、排查過程及分析
根據(jù)服務(wù)部署和項(xiàng)目架構(gòu),從如下幾個(gè)方面排查:
(1)應(yīng)用服務(wù)器:排查內(nèi)存,cpu,請求數(shù)等;
(2)文件圖片服務(wù)器:排查內(nèi)存,cpu,請求數(shù)等;
(3)計(jì)時(shí)器服務(wù)器:排查內(nèi)存,cpu,請求數(shù)等;
(4)redis服務(wù)器:排查內(nèi)存,cpu,連接數(shù)等;
(5)db服務(wù)器:排查內(nèi)存,cpu,連接數(shù)等;
(二)排查過程
在秒殺后30分鐘內(nèi),

2.redis請求超時(shí)

3.jdbc連接超時(shí)

4.通過gc查看,發(fā)現(xiàn)24小時(shí)內(nèi),F(xiàn)ullGC發(fā)生了152次



(三)造成本次系統(tǒng)異常主要因素分析
五、最終解決方案

2.優(yōu)化jvm參數(shù),如下為本次優(yōu)化后的參數(shù)
3.優(yōu)化tomcat并發(fā)相關(guān)參數(shù)
主要是兩方面:
(1)修改bio協(xié)議為nio2? (2)根據(jù)服務(wù)器配置,業(yè)務(wù)場景,業(yè)務(wù)流量等合理設(shè)置相關(guān)參數(shù),盡量達(dá)到最優(yōu)

關(guān)于tomcat相關(guān)參數(shù)優(yōu)化,在接下來的文章中分析。
由于涉及到安全性問題,這里不列出
(1)優(yōu)化掉大對象
(2)優(yōu)化未及時(shí)釋放的對象和連接資源
在conf/context.xml增大緩存
六、最終優(yōu)化結(jié)果
經(jīng)過幾天觀察,系統(tǒng)平穩(wěn)

2.GC

cpu


七、總結(jié)
1.本篇文章從實(shí)戰(zhàn)角度,從問題識別,問題定位,問題分析,提出解決方案,實(shí)施解決方案,監(jiān)控調(diào)優(yōu)后的解決方案和調(diào)優(yōu)后的觀察等角度來與大家一起交流分享本次線上高并發(fā)調(diào)優(yōu)整個(gè)閉環(huán)過程,當(dāng)然,由于篇幅的限制,
有些細(xì)節(jié)和優(yōu)化手段未在本篇文章中提及;
2.雖然解決了該問題,但是從長遠(yuǎn)來看,該單體項(xiàng)目仍然存在很大的問題和隱患,下面隨便舉幾個(gè):
(1)前后端緊耦合,未分離
(2)由于該系統(tǒng)秒殺業(yè)務(wù)屬于非持續(xù)性并發(fā),即局部性并發(fā),當(dāng)前并未做局部并發(fā)架構(gòu)的調(diào)整
(3)由于該系統(tǒng)秒殺業(yè)務(wù)與該項(xiàng)目緊緊耦合在一起,未進(jìn)行隔離,未獨(dú)立成單獨(dú)模塊,未單獨(dú)部署,從而存在因秒殺業(yè)務(wù)造成整個(gè)系統(tǒng)癱瘓的風(fēng)險(xiǎn);
(4)未做流量削峰和流量限流,如加mq等軟手段;
(5)redis為做高可用集群
作者:Alan_beijing
來源:https://urlify.cn/jyYny2
【推薦閱讀】 一款基于 SpringCloud 開源的商城系統(tǒng)(附源碼)
Java 如何精確統(tǒng)計(jì)頁面停留時(shí)長?
福利:公眾號點(diǎn)擊關(guān)注“Java”,可以免費(fèi)領(lǐng)取全套【Java學(xué)習(xí)資料】,更多驚喜等你去發(fā)現(xiàn)~ 萬水千山總是情,點(diǎn)個(gè) “ 看” 行不行 在
