1 java服務(wù)CPU使用率達(dá)到90%,怎么快速排查問題
死循環(huán)或死鎖會導(dǎo)致CPU飆高
死循環(huán):HashMap在并發(fā)使用時(shí),頭插法在擴(kuò)容期間會產(chǎn)生循環(huán)鏈表,然后執(zhí)行g(shù)et() 會觸發(fā)死循環(huán),造成 CPU 100% 的慘案。(1.8版本后改為了尾插法)

image.png
具體排查步驟:

image.png
2 并發(fā)場景除了加鎖還有什么解決方式
- 加鎖:樂觀鎖,悲觀鎖,分布式鎖
- 使用消息隊(duì)列異步串行化處理,達(dá)到削峰效果
3 kafka 的重試機(jī)制,怎么保證消息不丟失,如何處理消息積壓
4 線程的創(chuàng)建方式有幾種,CompletableFuture ,Callable,ArrayBlockingQueue為什么要做成阻塞的,CallerRunsPolicy的缺點(diǎn),怎么結(jié)束一個(gè)線程,核心線程怎么保證一直運(yùn)行?
5 redis hash的底層實(shí)現(xiàn)
6 spring 使用2層緩存能解決循環(huán)依賴嗎?
7 怎么保證訂單不重復(fù)提交,怎么保證冪等,冪等怎么實(shí)現(xiàn)的
6 建議:多去探索原因和原理