Java High CPU故障排除指南–第1部分

本文是該系列的第1部分,它將為您提供有關如何進行故障排除和識別Java高CPU問題根本原因的綜合指南。

該指南也適用于獨立的Java程序,但旨在幫助涉及Java EE企業日常生產支持的個人。 它還將包括最常見的高級CPU問題列表以及高級解決方案。

生產問題解決心態審查

在我們進行下一步之前,重要的是要檢查您的生產問題解決思路。 在我與Java EE生產支持團隊的經驗中,最常見的“反應”之一就是Java VM /中間件重啟通常是執行的第一個恢復操作。 雖然過早重啟可以快速消除業務影響,但也可能使您無法獲取所有技術事實。 降低了識別根本原因的能力,并使平臺在以后再次出現該問題。

在拉動觸發器并關閉Java VM進程之前,請問自己以下問題:我是否擁有所有可用數據以在重啟后執行根本原因分析? 如果答案是否定的,那么我對您的建議是查看并改進您當前的平臺監視和/或故障排除方法。 在出現高CPU問題之前和期間正確收集性能數據至關重要。

Java高CPU –究竟是什么?

現在回到我們的原始主題,一個高CPU問題是通過觀察一個或多個Java VM進程消耗了來自物理主機的過多CPU利用率來定義的。 過多的CPU也可以通過異常高的CPU使用率與已知和已建立的基準來描述。 例如:如果Java VM在峰值負載情況下的平均CPU利用率為40%,則可以將過多的CPU閾值設置為80%左右。

一個典型的Java VM進程包含多個Java線程,其中一些正在等待工作,而另一些正在執行任務。 如果只有一個Java程序,線程數可能會非常低,而對于處理大量并發事務的Java EE企業平臺,線程數可能會非常高。

為了了解和識別一個或多個Java進程的高CPU資源,您將需要了解并執行Java VM的所有線程的完整分解,以便您找出最大的貢獻者。 該分析練習可以按照下圖顯示。

了解您的平均CPU使用率

正如我在前面的部分中提到的,了解當前的平均CPU使用率(稱為基準)非常重要。 這是至關重要的數據,作為全面而持續的平臺容量規劃策略的一部分,需要定期對其進行監視。

正確理解和跟蹤從Java VM進程中觀察到的平均和“健康” CPU利用率,將使您能夠快速檢測異常CPU高峰情況,并與可能的根本原因(項目引入的問題,意外的負載增加等)相關聯。 最后,這將為您提供適當的閾值,以使用您選擇的監視工具來配置與CPU相關的主動警報。

了解您的生產環境和可用工具

作為中間件和/或應用程序支持的主要部分,您確實需要了解您的生產環境,包括可用于執行低級故障排除任務的現成工具。 對于某些人來說,這可能是微不足道的,但是如果您剛開始為新客戶使用新的Java或Java EE平臺,我的建議是您應該花足夠的時間了解客戶的環境規格和業務狀況,如下所示:

  • 物理和虛擬主機配置和容量(分配的CPU內核,RAM等的總數)
  • 操作系統供應商,版本和補丁程序級別
  • 中間件供應商,版本和補丁程序級別
  • Java供應商和版本(包括32位和64位); 包括補丁級別
  • Java或Java EE應用程序中使用的第三方API
  • 您可以利用其進行歷史數據和趨勢分析的現有監視工具
  • 環境歷史,已知問題,資源利用等
  • 每個應用程序的業務流量細分以及平臺的平均和峰值流量水平; 包括營業高峰期

收集上述所有正確的事實,絕對可以幫助您進行根本原因分析。 包括與CPU相關的問題。

跳到第二部分之前的功課

在我們跳至本CPU故障排除指南的第2部分之前,強烈建議您學習并理解以下各篇文章。 專注于適用于您的環境的環境。 這些文章中的每一篇都會為您提供有關如何對Java VM的每個線程分解CPU的技術方面的逐步指導。 為了調查與Java CPU相關的問題而獲得的關鍵故障排除技能。 該技術在某些方面很常見,具體取決于操作系統。

#Solaris上每個線程的CPU分析
http://javaeesupportpatterns.blogspot.com/2011/12/prstat-solaris-pinpoint-high-cpu-java.html

#Linux上每個線程的CPU分析
http://javaeesupportpatterns.blogspot.com/2012/02/prstat-linux-how-to-pinpoint-high-cpu.html

#AIX上每個線程分析的CPU
http://javaeesupportpatterns.blogspot.com/2011/12/prstat-aix-how-to-pinpoint-high-cpu.html

#Windows上每個線程的CPU分析
http://javaeesupportpatterns.blogspot.com/2012/04/java-thread-cpu-analysis-on-windows.html

我希望本文為Java CPU問題提供了一個很好的起點。 第2部分將為您提供故障排除指南,其中包括流程圖,可讓您根據問題情況選擇正確的調查路徑。

參考: Java High CPU故障排除指南–第1部分,來自我們的JCG合作伙伴 Pierre-Hugues Charbonneau,位于Java EE支持模式和Java教程博客上。


翻譯自: https://www.javacodegeeks.com/2012/05/java-high-cpu-troubleshooting-guide.html

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/372968.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/372968.shtml
英文地址,請注明出處:http://en.pswp.cn/news/372968.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

PHP數據結構之三 線性表中的單鏈表的PHP實現

線性表的鏈式存儲:用一組任意的存儲單元存儲線性表中的數據元素。用這種方法存儲的線性表簡稱線性鏈表。 鏈式存儲線性表的特點:存儲鏈表中結點的一組任意的存儲單元可以是連續的,也可以是不連續的,甚至是零散分布在內存中的任意位…

php進程間通信 yoc_swoole的process模塊創建和使用子進程

swoole中為我們提供了一個進程管理模塊 Process,替換PHP的 pcntl 擴展,方便我們創建進程,管理進程,和進程間的通信。swoole提供了2種進程間的通信:1、基于 unix socket 的管道 pipe。2、基于 sysvmsg 的消息隊列。我們…

ajax回復留言,Ajax 留言板模擬

這一節我們利用 Ajax 制作一個留言板模擬,之所以叫模擬,是由于沒有將留言內容存入數據庫,而只是假像地處理,因為這里著重討論 Ajax,暫時就不涉及數據庫操作。這里我們模擬了留言失敗的情況,每次提交有 50% …

RabbitMQ:計劃郵件傳遞

本月初,我在ComoRichWeb上的RabbitMQ上做了一個演講,與會人員提出的一個問題是“是否可以發布一條消息供以后使用?” 我回答說,就我所知,這是不可能的,但是可能會有一些技巧來實現它。 好吧,今天…

mysqls壓力測試怎么用_阿里研究員:測試穩定性三板斧,我怎么用?

阿里妹導讀:如何治理測試穩定性問題?很多人會說:環境、流程管控、監控、工具化、加機器、專人負責、等等。這些都是對的。不過這些都是解決方案層面的,而不是方法論和理論體系層面的。今天,阿里研究員鄭子穎來說說測試…

HttpModule與HttpHandler詳解

ASP.NET對請求處理的過程:當請求一個*.aspx文件的時候,這個請求會被inetinfo.exe進程截獲,它判斷文件的后綴(aspx)之后,將這個請求轉交給 ASPNET_ISAPI.dll,ASPNET_ISAPI.dll會通過http管道&…

【iOS開發】---- 強大的UI修改工具 UIAppearance-有圖片效果

iOS5及其以后提供了一個比較強大的工具UIAppearance&#xff0c;可以輕松的統一你的界面&#xff0c;它提供如下兩個方法&#xff1a; (id)appearance (id)appearanceWhenContainedIn:(Class <>)ContainerClass,... 第一個方法是統一全部改&#xff0c;比如你設置UINav…

7月9日王者榮耀服務器維護,王者榮耀 7月9日體驗服停機更新公告

親愛的召喚師&#xff1a;為了增加版本的穩定性&#xff0c;我們計劃在2021年7月9日16:00-17:00對《王者榮耀》體驗服進行停機維護。【更新時間】7月9日16:00-17:00(15:30關閉PVP)【更新方式】停機更新【更新范圍】王者榮耀修煉之地體驗服【下載地址】體驗服更新完畢后&#xf…

使用Jetty設置JNDI(嵌入式)

我在開發工作區上運行嵌入式Jetty&#xff0c;從而節省了一些編譯和部署惡性循環的時間。 我與Jetty的合作不多&#xff0c;易用性使我著迷于它。 我需要設置JNDI才能檢索與數據庫相關的活動的連接池。 盡管某些地方有完整的文檔&#xff0c;但大多數都是分散的。 因此&#xf…

交華為換機access配置_華為交換機Hybrid接口及基礎配置

一、回顧VLANVLAN基本概念VLAN即虛擬局域網&#xff0c;是將一個物理的LAN在邏輯上劃分成多個廣播域(多個VLAN)的通信技術。VLAN內的主機間可以直接通信&#xff0c;而VLAN間不能直接互通&#xff0c;從而將廣播報文限制在一個VLAN內。由于VLAN之間的隔離&#xff0c;所以一些類…

HttpClient使用之下載遠程服務器中的文件(注意目錄遍歷漏洞)

參考文獻&#xff1a; http://bbs.csdn.net/topics/390952011 http://blog.csdn.net/ljj_9/article/details/53306468 1.下載地址 http://hc.apache.org/downloads.cgi Apache-》Projects-》HttpComponents 2.DownloadServlet 1 package com.servlet;2 3 import java.io.Buffer…

HDOJ-1263

水果 Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/32768 K (Java/Others)Total Submission(s): 5303 Accepted Submission(s): 2022 Problem Description夏天來了~~好開心啊,呵呵,好多好多水果~~Joe經營著一個不大的水果店.他認為生存之道就是經營最受顧…

django ajax form表單,Django學習系列之Form表單和ajax(示例代碼)

昵 稱&#xff1a;生 日&#xff1a;性 別&#xff1a; 男 女地 址&#xff1a;手 機 號&#xff1a;郵 箱&#xff1a;[修改]{% csrf_token %}$(\#jsEditUserBtn\).on(\click\, function(){var _self $(this),$jsEditUserForm $(\#…

git push 的符號筆有什么用_如何同步多個 git 遠程倉庫

點擊上方“后端技術精選”&#xff0c;選擇“置頂公眾號”技術文章第一時間送達&#xff01;作者&#xff1a;taadismy.oschina.net/taadis/blog/3073220題外話&#xff0c;開發中遇到問題或者學習新技術時缺少交流環境&#xff0c;可以點擊加入【后端技術交流群】日常需求以前…

Java EE重新審視設計模式:觀察者

除了以多種語言和許多應用程序實現之外&#xff0c;Observer Pattern自1.0版以來一直是Java的一部分。 觀察者模式也是好萊塢原則的良好實施。 就像好萊塢的特工喜歡回調候選人以代替某個職位&#xff0c;而不是每天被要求詢問可用工作一樣&#xff0c;大多數服務器端資源&…

POI搜索簡介

用戶輸入——用戶輸出-----------------------------------------------------------而POI搜索引擎&#xff0c;需要做的就是拿到輸入條件&#xff0c;給出用戶比較滿意的結果。用戶角度&#xff1a;輸入&#xff1a;盡量簡單&#xff0c;且符合心意輸入時的假設&#xff1a;假…

2、Spring的 IoC詳解(第一個Spring程序)

Spring是為了解決企業應用開發的復雜性而創建的一個輕量級的控制反轉&#xff08;IoC&#xff09;和面向切面&#xff08;AOP&#xff09;的容器框架。在這句話中重點有兩個&#xff0c;一個是IoC&#xff0c;另一個是AOP。今天我們講第一個IoC。 一. IoC理論的背景 我們都知道…

排除服務器簡單系統故障方法,引導CD排除服務器故障方法有哪些?

盡管Linux系統以穩定可靠著稱&#xff0c;但由于硬件問題有時仍會崩潰/或無法引。針對這一問題&#xff0c;最好的解決辦法就是使用Linux系統引導CD。為了方便讀者&#xff0c;筆者在下面列出了安裝Red Hat Linux 8。0的最必須步驟。為安裝過程作筆記在Red Hat Linux系統典型安…

js 獲取father_(原創)Node.JS實戰26:強大的工作池。收藏吧!你一定會用的到。...

在實際項目中&#xff0c;如果遇到需要大計算量的操作&#xff0c;按需fork&#xff08;分叉&#xff09;其實不是一個好的選擇。因為fork的子進程也是V8&#xff08;NodeJS的核心引擎&#xff09;的新實例&#xff0c;每創建一個新實例&#xff0c;需要約30毫秒啟動時間&#…

具有ReadWriteLock的Java并發

編寫多線程Java應用程序并不是小菜一碟。 必須格外小心&#xff0c;因為同步不良會使您的應用程序一s不振。 JVM堆由所有線程共享。 如果多個線程需要同時使用相同的對象或靜態類變量&#xff0c;則必須謹慎管理對共享數據的線程訪問。 從1.5版開始&#xff0c;JSDK中包含了在并…