1. 程式人生 > >Java專案伺服器cpu佔用100%解決辦法

Java專案伺服器cpu佔用100%解決辦法

 專案上線後執行一段時間,突然發現cpu 8個邏輯核心都佔用100%,心情很緊張,然後就在網上找了一些解決方法,具體如下: 
       1.查詢哪些程序在耗cpu  
       進入伺服器,top 命令看一下,發現程序6633佔用了800% 
       [[email protected] ~]# top 
       2.把程序的棧dump到檔案裡,以便後面的分析
       [[email protected] ~]# jstack 6633 > cpu1128.log 
       3.看看這個程序裡面哪些執行緒在佔用cpu 
       [[email protected]

~]# top -p 6633 -H 
       一大片佔用cpu很高的執行緒,選一個最高的吧,PID=5159 
       4.接著要看剛才dump出來的cpu日誌了,裡面會有6633這個程序下面每個執行緒的棧資訊,但是是十六進位制顯示的,所以先把5159轉換成16進位制 
       [[email protected] ~]# printf "%0x\n" 5159 
       [[email protected] ~]# 1427 
       5.在cpu日誌裡找PID=1427的執行緒 

       [[email protected] ~]# vi cpu1128.log

  cpu1128.log         6.分析原因
            看日誌,很明顯是org.hibernate.exception.ExceptionUtils.getCauseUsingWellKnowTypes(...)這裡“卡住”了。這個執行緒是"RUNABLE"狀態的,難道在這裡發生了死迴圈?後來花了很多時間在debug狀態下把這個問題重現了(Hibernate 3.3.1.GA版本,通過hessian呼叫遠端伺服器報SQLGrammarException異常,就會出現這個問題)。跟蹤到hibernate原始碼裡發現了問題:

Java程式碼  收藏程式碼
  1. public static int
     getThrowableCount(Throwable throwable) {  
  2.         int count = 0;  
  3.         while ( throwable != null ) {  
  4.             count++;  
  5.             throwable = ExceptionUtils.getCause( throwable );  
  6.         }  
  7.         return count;  
  8. }  

         這個方法裡,throwable和它的cause引用的同一個SQLGrammarException物件,導致在while這裡產生了死迴圈。這肯定是hibernate的bug了。於是把hibernate升級到3.3.2.GA(原來是3.3.1.GA,不敢升太多)問題解決。

相關推薦

Java專案伺服器cpu佔用100%解決辦法

 專案上線後執行一段時間,突然發現cpu 8個邏輯核心都佔用100%,心情很緊張,然後就在網上找了一些解決方法,具體如下:         1.查詢哪些程序在耗cpu          進入伺服器,top 命令看一下,發現程序6633佔用了800%         [[e

java web伺服器cpu佔用過高的處理

平時專案中有時遇到cpu過高的情況,在此基於自己有限的經驗寫個分享,此處的伺服器都是基於linux平臺。 cpu的佔有執行緒型別總的來說分為兩種: us :使用者空間佔用CPU百分比 sy :核心空間佔用CPU百分比 一般來講CPU us高的解決方法: CPU us

Java項目服務器cpu占用100%解決辦法

java項目服務器cpu占用100%解決辦法服務器cpu占用100% 項目上線後運行一段時間,突然發現cpu 8個邏輯核心都占用100%,心情很緊張,然後就在網上找了一些解決方法,具體如下: 1.查找哪些進程在耗cpu 進入服務器,top 命令看一下,發現進程663

Java應用CPU佔用100%原因分析

在linux環境下部署的應用,有時候出於各種原因,出現cpu佔用100%的情況。這時候,就需要快速分析定位cpu佔用的原因。 通常,通過linux系統的top命令,可以看出具體哪個程序佔用了過多的cpu資源。但如果發現是java程序,那麼就需要進一步分析是java程序中的具體哪個執行

Java應用CPU佔用100%原因分析(轉載)

在linux環境下部署的應用,有時候出於各種原因,出現cpu佔用100%的情況。這時候,就需要快速分析定位cpu佔用的原因。 通常,通過linux系統的top命令,可以看出具體哪個程序佔用了過多的cpu資源。但如果發現是java程序,那麼就需要進一步分析是java程序中的具

網站系統卡頓(mysql 佔用記憶體超過100%)解決辦法

一.今天,運營突然反應網站特別卡,於是上伺服器使用top檢視如下: 可以看到伺服器負載很高,,mysql CPU使用已達到接近400%(因為是四核,所以會有超過100%的情況)。 登入mysql後使用show processlist;命令檢視如下: 發現Send

VMware執行後,CPU佔用100%的問題解決

1.虛擬機器的記憶體引數過大,高於實體記憶體 http://www.51testing.com/?uid-166582-action-viewspace-itemid-145093 http://www.51testing.com/?uid-166582-action-vie

IDEA啟動Tomcat伺服器時某些埠(如1099埠)被佔用解決辦法

啟動Tomcat伺服器時,出現1099埠被其它程序佔用了 解決辦法:   1、找出佔用1099埠的程序,進入windows命令,檢視什麼程序佔用了1099埠,使用命令:netstat -aon|findstr 1099 找出佔用1099埠的程序,如下圖所示:

MyEclipse環境下的JavaWeb專案打包成war包部署到tomcat伺服器發生jstl錯誤解決辦法

在MyEclipse環境下的一個JavaWeb專案打包成war包,然後單獨部署到tomcat伺服器會發生jstl錯誤,前提是jsp中使用了jstl。 比如把一個專案部署到Linux系統中的tomcat伺服器上: 重啟tomcat伺服器, 然後訪問使用了

解決MySQL CPU佔用100%的經驗總結

朋友主機 (Windows 2003 + IIS + PHP + MySQL) 近來 MySQL 服務程序 (MySQLd-nt.exe) CPU 佔用率總為 100% 高居不下。此主機有10個左右的 database,分別給十個網站呼叫。據朋友測試,導致 MySQLd-n

解決SQLServer CPU佔用100%的問題

建索引的方法:ALTER INDEX ALL ON DOA REORGANIZE sp_who active  --看看哪個引起的阻塞, blk sp_lock  --看看鎖住了那個資源id, objid , select object_name(objid) 得到 dbc

java cpu佔用100%分析

主要思路是通過ps分析java程序及相應的佔用高cpu的java執行緒,然後看該執行緒在哪裡一直執行佔用cpu  1:列印使用者、程序id、父程序id、執行緒id(對於此次很重要)、執行時間、CPU使用率、啟動命令並按CPU使用率排序。 ps H -eo user,pid

Tomcat 的埠被佔用解決辦法

 在dos下,輸入  netstat   -ano|findstr  8080 //說明:檢視佔用8080埠的程序顯示佔用埠的程序taskkill  /pid  6856 

vue專案打包之後頁面空白解決辦法

之前專案遇到個情況,npm run build打包之後上傳到伺服器後,index.html開啟一片空白,資源都載入了,但是就是不顯示。 然後百度找了原因,修改了兩處地方 一、修改 assetsPublicPath  在config/index.js裡面,有個 assetsPublicPath

tomcat占用cpu過高解決辦法

title 情況 處理 顯示 pri grep tar jstack 16進制 在工作中經常遇到tomcat占用cpu居高不下,針對這種情況有以下處理辦法進行排查。 jps --> 查看java的進程 top -Hp pid --> 根據jps得到的進程

伺服器報的漏洞解決辦法

RHSA-2016:2674: libgcrypt security update (Moderate):yum update libgcrypt RHSA-2017:1372: kernel security and bug fix update (Moderate):yum

linux cpu佔用100%排查

某伺服器上部署了若干tomcat例項,即若干垂直切分的Java站點服務,以及若干Java微服務,突然收到運維的CPU異常告警。 問:如何定位是哪個服務程序導致CPU過載,哪個執行緒導致CPU過載,哪段程式碼導致CPU過載? 步驟一、找到最耗CPU的程序 工具:top 方法:

java httpclinet請求https地址報java.io.IOException: Invalid keystore format 解決辦法

=這又是一次生產問題協查,痛苦的協查。起因是合作方呼叫地址變更,變更後的地址是https協議地址,對方新增了一個.jks的證書庫要載入 程式碼寫完後,一上線發https請求就報錯,因為合作方封裝了一個sdk的包,報錯堆疊資訊沒有向上返回,是返回了一個“加密失敗”,哎。。。。 這裡只能把s

匯入maven專案缺少jar包,解決辦法

在匯入maven專案時,應本地沒有生成對應的jar包,導致專案報錯, 怎麼辦呢? 解決辦法: 進入專案的根目錄(即 pom.xml檔案所在的目錄) 然後在當前目錄按住Shift鍵,同時點選右鍵,選擇“在此處開啟命令視窗”。然後在命令視窗內輸入命令: 執行:mvn depende

關於埠被佔用而又埠又沒被佔用解決辦法

在使用sts裡Pivotal tc Server Developer Edition v3.2時經常碰到埠被佔用, 網上經常出現的兩種解決辦法 一是修改伺服器裡的埠。開啟servers裡的伺服器,雙擊出現視窗