成人国产在线小视频_日韩寡妇人妻调教在线播放_色成人www永久在线观看_2018国产精品久久_亚洲欧美高清在线30p_亚洲少妇综合一区_黄色在线播放国产_亚洲另类技巧小说校园_国产主播xx日韩_a级毛片在线免费

資訊專(zhuān)欄INFORMATION COLUMN

系統(tǒng)優(yōu)化怎么做-JVM優(yōu)化之開(kāi)篇

gecko23 / 1098人閱讀

摘要:幾個(gè)死鎖場(chǎng)景兩個(gè)線程相互調(diào)用導(dǎo)致互相等待同步結(jié)束。線程為了檢測(cè)死鎖,它需要遞進(jìn)地檢測(cè)所有被請(qǐng)求的鎖。思考題線程有哪些狀態(tài)這些線程大多處于什么樣的狀態(tài)分布我們可以稱(chēng)系統(tǒng)運(yùn)行是健康的。

前言

在上一期Tomcat優(yōu)化中,針對(duì)JVM相關(guān)主要參數(shù)做過(guò)一定說(shuō)明,這一期主要介紹進(jìn)行一些概念及經(jīng)驗(yàn)。后面分章節(jié)去講述相關(guān)工具的基本使用。

優(yōu)化優(yōu)先級(jí)

整體來(lái)講,系統(tǒng)優(yōu)化應(yīng)先優(yōu)化架構(gòu)及代碼,來(lái)解決具體功能點(diǎn)效率問(wèn)題。最后通過(guò)JVM監(jiān)控工具來(lái)發(fā)現(xiàn)一些隱藏較為深入的問(wèn)題。

相關(guān)情形

內(nèi)存占用并不斷增加, 系統(tǒng)壓力大情況下Full GC頻繁,系統(tǒng)出現(xiàn)卡頓

線程出現(xiàn)大量等待及死鎖, CPU使用率過(guò)高, 系統(tǒng)響應(yīng)慢

堆(heap)內(nèi)存不足或類(lèi)加載導(dǎo)致JVM Crash,系統(tǒng)宕機(jī)

出現(xiàn)以上情況,就得使用工具分析JVM來(lái)確定問(wèn)題
JVM內(nèi)存模型

JDK1.7及以下

JDK1.8下,PermGen替換成Vm MetaSpace
Heap域

全局被所有線程分享

存所有對(duì)象及集合對(duì)象

方法域

全局被所有線程分享

存所有類(lèi)的結(jié)構(gòu)定義包含屬性,方法及構(gòu)造函數(shù)等

Thread1.N

本地私有棧,一個(gè)線程一個(gè)棧

保持著所有在Heap域的對(duì)象引用(4byte長(zhǎng)度)

存儲(chǔ)本地局部變量的存儲(chǔ)(基礎(chǔ)數(shù)據(jù)類(lèi)型),程序運(yùn)行狀態(tài),方法返回值

內(nèi)存泄漏的分類(lèi)

堆內(nèi)存泄漏 - 比較常見(jiàn)

持久代內(nèi)存泄漏

棧內(nèi)存泄漏

系統(tǒng)資源內(nèi)存泄漏 -比較常見(jiàn)

線程相關(guān)知識(shí)

JVM線程狀態(tài)遷移

線程狀態(tài)

初始化(New):初期創(chuàng)建,啟動(dòng)后則進(jìn)入可執(zhí)行狀態(tài)

可執(zhí)行狀態(tài)(Runnable): 只要獲取CPU時(shí)間,則開(kāi)始執(zhí)行

運(yùn)行狀態(tài)(Running): 正在使用CPU執(zhí)行

阻塞狀態(tài)(Bloked)

等待阻塞(wait)

同步阻塞(synchronized)

睡眠阻塞(sleep)

Join阻塞: 等待join子線程結(jié)束后,主線程才能執(zhí)行,將異步執(zhí)行的線程合并為同步的線程

結(jié)束狀態(tài): 線程執(zhí)行完畢或者異常退出

性能監(jiān)控關(guān)注點(diǎn)

系統(tǒng)線程總數(shù)

死鎖線程 需要優(yōu)先解決

線程Bloked總數(shù)數(shù)量

線程Bloked多的情況下,考慮對(duì)待處理數(shù)據(jù)進(jìn)行分片,進(jìn)行多通道,多線程處理提高系統(tǒng)性能
如果系統(tǒng)處理慢,但CPU占用一直很低,就需要梳理系統(tǒng)處理流程,串行處理該并行處理,并行處理流程提高并發(fā)來(lái)解決。

線程死鎖

當(dāng)兩個(gè)或者多個(gè)線程嘗試獲取其他資源的鎖,而每個(gè)線程又陷入無(wú)限等待其他資源鎖的釋放(相互等待),除非一個(gè)用戶的進(jìn)程被終止。

幾個(gè)死鎖場(chǎng)景

兩個(gè)線程相互調(diào)用Thread.join(), 導(dǎo)致互相等待同步結(jié)束。

慎用線程join操作

當(dāng)兩個(gè)線程使用嵌套的同步塊時(shí),一個(gè)線程占用了另一個(gè)線程的必需的鎖,互相等待時(shí)被阻塞,就有可能出現(xiàn)死鎖。 也可能多個(gè)線程形成環(huán)狀鎖,比如線程A等待線程B,線程B等待線程C,線程C等待線程A。線程A為了檢測(cè)死鎖,它需要遞進(jìn)地檢測(cè)所有被B請(qǐng)求的鎖。從線程B所請(qǐng)求的鎖開(kāi)始,線程A找到了線程C,發(fā)現(xiàn)線程C請(qǐng)求的鎖被線程A自己持有著。這是它就知道發(fā)生了死鎖。

MySql死鎖

MySql中兩個(gè)線程同時(shí)對(duì)兩條記錄做先讀后寫(xiě)操作
避免死鎖

安全狀態(tài)

找到一個(gè)分配資源的序列能讓所有進(jìn)程都順利完成

銀行家算法

采用預(yù)分配策略檢查分配完成時(shí)系統(tǒng)是否處在安全狀態(tài)
檢測(cè)死鎖

VisualVM(或其他工具)

監(jiān)控線程狀態(tài),如果出現(xiàn)死鎖得到相關(guān)代碼位置

死鎖定理化間資源分配圖

利用死鎖定理化間資源分配圖來(lái)分析死鎖的存在
參見(jiàn)以下資料:
https://www.coursera.org/lect...
總結(jié)

本章主要講了一些核心知識(shí),主要為了讓大家了解系統(tǒng)優(yōu)化到底優(yōu)化和解決什么問(wèn)題,什么是優(yōu)化的目標(biāo)。后續(xù)章節(jié)會(huì)講到tomcat的JMX配置,VisualVM,Tprofile等工具的使用。

思考題

JVM線程有哪些狀態(tài),這些線程大多處于什么樣的狀態(tài)分布, 我們可以稱(chēng)系統(tǒng)運(yùn)行是健康的。

文章版權(quán)歸作者所有,未經(jīng)允許請(qǐng)勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。

轉(zhuǎn)載請(qǐng)注明本文地址:http://systransis.cn/yun/76806.html

相關(guān)文章

  • 系統(tǒng)優(yōu)化怎么-開(kāi)篇

    摘要:前言系統(tǒng)優(yōu)化是一個(gè)系統(tǒng)工程需要長(zhǎng)期監(jiān)控長(zhǎng)期及時(shí)解決的事情。主要從兩個(gè)方面來(lái)討論新系統(tǒng)上線前需要做些什么老系統(tǒng)優(yōu)化有哪些途徑新系統(tǒng)系統(tǒng)在設(shè)計(jì)時(shí)要考慮系統(tǒng)最大的等指標(biāo)系統(tǒng)整個(gè)至少能支持業(yè)務(wù)最高峰來(lái)設(shè)計(jì)系統(tǒng)。 前言 系統(tǒng)優(yōu)化是一個(gè)系統(tǒng)工程, 需要長(zhǎng)期監(jiān)控長(zhǎng)期及時(shí)解決的事情。我一直在開(kāi)發(fā)的一線,積累了一些經(jīng)驗(yàn),開(kāi)這個(gè)專(zhuān)欄。歡迎大家一起討論,互相學(xué)習(xí)及進(jìn)步。 主要從兩個(gè)方面來(lái)討論 新系統(tǒng)上線前...

    jsummer 評(píng)論0 收藏0
  • 【轉(zhuǎn)】成為Java頂尖程序員 ,看這10本書(shū)就夠了

    摘要:實(shí)戰(zhàn)高并發(fā)程序設(shè)計(jì)這本書(shū)是目前點(diǎn)評(píng)推薦比較多的書(shū),其特色是案例小,好實(shí)踐代碼有場(chǎng)景,實(shí)用。想要學(xué)習(xí)多線程的朋友,這本書(shū)是我大力推薦的,我的個(gè)人博客里面二十多篇的多線程博文都是基于此書(shū),并且在這本書(shū)的基礎(chǔ)上進(jìn)行提煉和總結(jié)而寫(xiě)出來(lái)的。 學(xué)習(xí)的最好途徑就是看書(shū),這是我自己學(xué)習(xí)并且小有了一定的積累之后的第一體會(huì)。個(gè)人認(rèn)為看書(shū)有兩點(diǎn)好處:showImg(/img/bVr5S5);  1.能出版出...

    DTeam 評(píng)論0 收藏0
  • 系統(tǒng)優(yōu)化怎么-Tomcat優(yōu)化

    摘要:運(yùn)行模式分種模式一般使用模式效率低對(duì)系統(tǒng)配置有一些比較高的要求確認(rèn)的運(yùn)行模式配置文件關(guān)鍵配置最大線程數(shù)默認(rèn)是最小活躍線程數(shù)默認(rèn)是最大的等待隊(duì)列個(gè)數(shù),超過(guò)則請(qǐng)求拒絕默認(rèn)值是,一般不改變。 前言 Tomcat作為Web應(yīng)用的服務(wù)器,目前絕大多數(shù)公司都是用其作為應(yīng)用服務(wù)器的,應(yīng)用服務(wù)器的執(zhí)行效率會(huì)影響系統(tǒng)執(zhí)行,這里會(huì)講Tomcat怎樣進(jìn)行配置能提高處理性能。另外必須提到對(duì)應(yīng)的JVM參數(shù)的優(yōu)化...

    gghyoo 評(píng)論0 收藏0

發(fā)表評(píng)論

0條評(píng)論

最新活動(dòng)
閱讀需要支付1元查看
<