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]
一大片佔用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
6.分析原因
看日誌,很明顯是org.hibernate.exception.ExceptionUtils.getCauseUsingWellKnowTypes(...)這裡“卡住”了。這個執行緒是"RUNABLE"狀態的,難道在這裡發生了死迴圈?後來花了很多時間在debug狀態下把這個問題重現了(Hibernate 3.3.1.GA版本,通過hessian呼叫遠端伺服器報SQLGrammarException異常,就會出現這個問題)。跟蹤到hibernate原始碼裡發現了問題:
-
public static int
- int count = 0;
- while ( throwable != null ) {
- count++;
- throwable = ExceptionUtils.getCause( throwable );
- }
- return count;
- }
這個方法裡,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裡的伺服器,雙擊出現視窗