降低Java占用_如何减少JAVA应用程序的CPU使用率?
Linux機(jī)器上有兩個(gè)Java進(jìn)程(A,B)(CentOS 6.5 64位). A使用套接字向B發(fā)送大量二進(jìn)制數(shù)據(jù). B將數(shù)據(jù)寫入磁盤.每秒將50-100MB數(shù)據(jù)寫入磁盤.在四核處理器上,CPU幾乎100%使用.以前我們運(yùn)行類似的應(yīng)用程序但是由C編寫,只使用了25%的CPU.
我們做了很多調(diào)整.我們了解到有一些epoll錯(cuò)誤,然后我們將JDK版本升級(jí)到1.8.我們還做了一些JVM調(diào)優(yōu).現(xiàn)在總CPU使用率比以前低,但我們不滿意.我們認(rèn)為我們可以減少它.
有很多數(shù)據(jù)寫入磁盤.我們認(rèn)為磁盤不是瓶頸.因?yàn)槲覀兪褂么笮蚏AID.我們之前運(yùn)行了由C編寫的類似應(yīng)用程序,磁帶帶寬更多,一切正常.
但我們也發(fā)現(xiàn)了一個(gè)問題.當(dāng)內(nèi)核將臟數(shù)據(jù)刷新到磁盤時(shí),CPU使用率將非常高.所以我們?cè)黾? proc / sys / vm / dirty_background_ratio以便盡可能地進(jìn)行異步刷新.在我們更改了值之后,它似乎可以正常工作,但過了一段時(shí)間,然后又出現(xiàn)了高CPU問題.
我們能否為具有高IO帶寬的Java應(yīng)用程序進(jìn)行更多性能調(diào)整?
解決方法:
在進(jìn)行性能調(diào)優(yōu)之前,您需要找出主導(dǎo)CPU時(shí)間的因素.
這是一個(gè)多方面的主題,您將不得不看看內(nèi)核正在做什么,以什么速度發(fā)出哪些系統(tǒng)調(diào)用,您的訪問模式是什么,文件系統(tǒng)和其他存儲(chǔ)層如何影響各種文件的特征系統(tǒng)操作等
Netflix最近提出了一種方法到get full kernel/userspace/java stacks,這可能是一個(gè)有用的起點(diǎn),但還有許多其他的東西需要監(jiān)控.
標(biāo)簽:java,linux,jvm,performance
來源: https://codeday.me/bug/20190706/1399355.html
總結(jié)
以上是生活随笔為你收集整理的降低Java占用_如何减少JAVA应用程序的CPU使用率?的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: java中ra怎么解释_JAVA个人相关
- 下一篇: java中求立方根_求解立方根