您好,登錄后才能下訂單哦!
這篇文章給大家分享的是常見的Linux系統故障和解決方法。在使用系統的過程中總會有各種各樣的故障,所以需要不斷的排查故障,為此分享給大家做個參考,一起來看看系統故障的原因以及解決方法。
線上Linux系統故障的原因通常包括以下幾個方面:
一、CPU使用率過高
一個應用占用CPU很高,除了確實是計算密集型應用之外,通常原因都是出現了死循環。排查技巧如下:
1)通過top命令定位占用CPU高的進程。比如進程PID41843占用CPU過高,明顯存在問題,定位到了進程id。當然如果你想只觀察進程PID41843的CPU和內存以及負載情況,可以使用命令:top -p 41843
2)通過top命令定位問題進程中每個線程占用CPU情況。使用命令:top -p 41843 -H
3)通過jstack 命令定位問題代碼。比如發現線程PID41892占用的CPU過高,就將這個PID轉換成16進制,其中PID41892轉化成16進制為a3a4。使用如下命令命令定位問題代碼:jstack 41892 | grep a3a4
二、內存占用過高
在Java開發中,常見的異常及解決方法如下:
java.lang.OutOfMemoryError: PermGen space
異常出現原因:應用中有很多CLASS的話,就很可能出現PermGen space錯誤。WEB或者APP用了大量的第三方jar, 其大小超過了jvm默認的大小(4M)就會產生此錯誤信息。
解決方法:調整PermSize、MaxPermSize的大小;減少jar重復使用,重復占用內存。
java.lang.OutOfMemoryError: Java heap space
異常出現原因:在JVM中,如果98%的時間是用于GC且可用的Heap size 不足2%的時候將拋出此異常信息。提示:Heap Size 最大不要超過可用物理內存的80%,一般的要將-Xms和-Xmx選項設置為相同,而-Xmn為1/4的-Xmx值。
異常原因排查步驟:
1)通過jstat命令查詢gc情況。通過top命令定位到內存占用過高的進程PID后,排查該進程的GC情況,命令:jstat -gccause 41843 2000
2)通過jmap命令查詢進程實體類內存占用情況。如果步驟1中發現,gc非常頻繁,則可以使用jmap命令查詢進程實體類內存占用情況。命令:jmap -histo:live 41843 | head -n 100
3)通過jmap命令查詢進程堆的使用情況。如果以上沒有查出問題,可以看看進程中,新生代、老年代、永久代的使用情況。命令:jmap -heap 41843
如果發現頻繁的gc是因為新生代、老年代、永久代分配的大小有問題,則可以通過修改設置解決。
永久代解決方法:調整PermSize、MaxPermSize的大小;減少jar重復使用,重復占用內存。
新生代、老年代解決方法:調整Xms -Xmx -Xmn的大小。
關于常見Linux系統故障和解決方法就分享到這里了,希望以上內容可以對大家有一定的幫助,可以學到更多知識。如果覺得文章不錯,可以把它分享出去讓更多的人看到。
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。