匠心零度 轉(zhuǎn)載請注明原創(chuàng)出處固蛾,謝謝!
說在前面
如果你經(jīng)常注意面試題蒙揣,你會發(fā)現(xiàn)現(xiàn)在面試題多多少少會含有jvm相關(guān)的面試題锻全,之前也把一些jvm面試題匯總了下:面試題系列一,那么為什么現(xiàn)在面試需要了解或者問面試題呢庆亡?
主題
談?wù)勛约旱睦斫庳遗遥爬橐韵聨讉€方面:
- 的確很重要。
- 供大于求又谋。
- 面試風(fēng)氣拼缝。
下面就針對這幾點(diǎn)談?wù)劇?/p>
的確很重要
隨著互聯(lián)網(wǎng)的發(fā)展娱局,高并發(fā)高可用、快速響應(yīng)成為軟件的必須咧七,而JVM與這些有著密切關(guān)聯(lián)衰齐。之前JVM系列好多都是一些由于STW影響到快速響應(yīng)問題,忽然網(wǎng)站慢一下(抖動下)等問題继阻,下面談?wù)勛罱ㄟ^JVM排查到的高并發(fā)高可用問題耻涛。(在高可用高并發(fā)下面問題原因可能會很多,比如cpu異常高瘟檩、磁盤IO高抹缕、SWAP空間等,有可能很多問題都是綜合性的問題)
以前在我的認(rèn)知里面墨辛,如果服務(wù)運(yùn)行有問題卓研,最簡單有效快速地辦法就是重啟,最近遇到了問題打破了我對該方法的認(rèn)知睹簇。
某業(yè)務(wù)線最近集群服務(wù)升級忽然上線上去不能提供服務(wù)奏赘,之后影響到整個集群,查看當(dāng)時服務(wù)器情況太惠,負(fù)載磨淌、cpu、io垛叨、swap等都正常伦糯,查看日志就是卡在最后一行不動了(也沒有發(fā)現(xiàn)OOM,等任何異常)嗽元。
如果是之前估計這個問題我也就排查不了了,現(xiàn)在排查問題多了一個維度JVM(的確有時候需要考慮的喂击,并且現(xiàn)在很多監(jiān)控工具都會考慮到JVM的)剂癌,查看gcutil查看比例禽捆,發(fā)現(xiàn)from 100% eden 100% old 100%但是服務(wù)就是沒有OOM琉预,執(zhí)行任何都命令都非常緩慢了(更別談訪問請求了),查看具體gc日志發(fā)現(xiàn)concurrent mode failure 并且時間很長婿牍,猜測就是一瞬間量把內(nèi)存給用完了监嗜,導(dǎo)致from 100% eden 100% old 100%現(xiàn)象谐檀,最終不能提供服務(wù),之后其他集群節(jié)點(diǎn)也陸續(xù)出現(xiàn)了此類情況裁奇,重啟無效桐猬,現(xiàn)象一樣很快就from 100% eden 100% old 100% 不能提供服務(wù),沒辦法刽肠,一直重啟直到都啟動好了可以正常提供服務(wù)溃肪。
留了一臺進(jìn)行排查問題免胃,執(zhí)行jmap -histo pid無果,加-F也無果惫撰,后來執(zhí)行jmap -dump:format=b,file=heap.bin pid (6G堆執(zhí)行了3-4個小時左右)通過MAT分析查看羔沙,發(fā)現(xiàn)都是某個邏輯產(chǎn)生的數(shù)據(jù),占用了5G左右(char[]厨钻、String扼雏、Map、List等都與某個邏輯代碼有關(guān))猜測是該問題(由于涉及到公司具體業(yè)務(wù)不方便截圖夯膀,只能大概說明下)呢蛤,很容易定位到代碼最后是由于并發(fā)沒有考慮好,邏輯寫的也有點(diǎn)問題導(dǎo)致的棍郎,進(jìn)行修改處理其障,問題解決,出了JVM相關(guān)問題可以進(jìn)行排查解決涂佃。
很能很多人認(rèn)為線上出現(xiàn)問題可以排查繼續(xù)解決問題的人牛逼励翼,其實錯了,真正牛逼的人都是在問題產(chǎn)生前就解決了(需要意識里面轉(zhuǎn)變和學(xué)習(xí)思考提高的地方)辜荠。
下面看個例子就明白了汽抚,是Charles告訴我的,我覺得放在這里特別合適:
春秋戰(zhàn)國時期伯病,有位神醫(yī)被尊為“醫(yī)祖”造烁,他就是“扁鵲”。一次午笛,魏文王問扁鵲說:“你們家兄弟三人惭蟋,都精于醫(yī)術(shù),到底哪一位最好呢药磺?”扁鵲答:“長兄最好告组,中兄次之,我最差癌佩∧痉欤”文王又問:“那么為什么你最出名呢?”扁鵲答:“長兄治病围辙,是治病于病情發(fā)作之前我碟,由于一般人不知道他事先能鏟除病因,所以他的名氣無法傳出去姚建;中兄治病矫俺,是治病于病情初起時,一般人以為他只能治輕微的小病,所以他的名氣只及本鄉(xiāng)里恳守;而我是治病于病情嚴(yán)重之時考婴,一般人都看到我在經(jīng)脈上穿針管放血,在皮膚上敷藥等大手術(shù)催烘,所以以為我的醫(yī)術(shù)高明沥阱,名氣因此響遍全國∫寥海”
如果能在編碼時候就考慮到JVM考杉,做到面向JVM編程那就更牛逼了,如果能在上線前查閱到此類JVM問題或者是OOM問題以及一些其他問題那也就好了舰始。
綜述:因此這些成為必不可少的技能崇棠,所以面試需要了解,因為公司可能會面臨該問題丸卷。
供大于求
現(xiàn)在不像以前了枕稀,以前會點(diǎn)html都好找工作,現(xiàn)在由于學(xué)習(xí)軟件的人越來越多谜嫉,而且每年大學(xué)生都在畢業(yè)(而老一輩的也很少換工作)人只會越來越多萎坷,有個笑話,隨便在大街上扔硬幣砸到的那個可能就是搞軟件的沐兰,現(xiàn)在人員太多哆档,公司為了區(qū)分,會多添加維度住闯,每多一個維度可能就會刷掉一批人瓜浸,核心供大于求,所以我們也必須朝著這些大的方向努力比原,使得自己的競爭力比別人強(qiáng)插佛。
面試風(fēng)氣
簡單的問題都不好意思問,怕面試者鄙視面試公司問的問題〈菏伲現(xiàn)在有一股妖風(fēng)朗涩,不管啥公司都慢慢像阿里這樣的公司靠近,面試不問點(diǎn)jvm绑改、并發(fā)、分布式都不好意(雖然公司可能沒有用到兄一,雖然可能僅僅CURD)厘线,老是覺得問問這些顯得逼格高點(diǎn),不管處于什么原因很多公司的確都在學(xué)習(xí)他們出革,都在問這些問題造壮,那么我們就朝著這些大的方向努力也是沒錯的,如果朝著這些方向努力就是他們需要的人才,那么也就對了耳璧。
類似其他成箫,比如高并發(fā) 鎖、分布式旨枯、緩存等都可以考慮考慮這樣思考蹬昌,你會有不一樣的收獲的。
如果讀完覺得有收獲的話攀隔,歡迎點(diǎn)贊皂贩、關(guān)注、加公眾號【匠心零度】昆汹,查閱更多精彩歷史C魉ⅰ!满粗!