免费视频淫片aa毛片_日韩高清在线亚洲专区vr_日韩大片免费观看视频播放_亚洲欧美国产精品完整版

打開APP
userphoto
未登錄

開通VIP,暢享免費電子書等14項超值服

開通VIP
游戲服務器JVM性能調優(yōu)


最近開始優(yōu)化頁游服務端的性能,一些心得總結一下?,F在的服務器硬件越來越好,幾十G內存,十幾個CPU。當硬件不是瓶頸的時候,如果讓程序發(fā)揮最大效用就成了我們需要考慮的問題。就游戲服務器來說,得滿足幾個要求,高負載,低延時。特別是在開服當天,大量用戶會涌進來,可能給服務器造成壓力。使用Java作為服務器語言,除了程序本身的性能外,JVM的配置也直接影響到系統性能。

參數調優(yōu)

入門級別的配置一般是:java -server -Xmx5000m Xms5000m

服務器端的jvm運行程序記得都最好加上 -server 很多默認參數都會根據這個運行模式來優(yōu)化。這里設置了最大內存和最小內存,一般都是配置成相同的,可以減少內存申請和伸縮帶來的性能損耗

加入垃圾回收算法的配置:java -server -Xmx5000m -Xms5000m -XX:+UseConcMarkSweepGC -XX:+UseParNewGC

關于垃圾回收的具體算法介紹我這里就不詳細描述了,可以參考我以前的文章 我們都有一個常識,就是盡量減少JVMfull gc的次數和時間,因為full gc 會導致整個系統的暫停(stop the world).為此,我們?yōu)槔夏甏x擇了UseConcMarkSweepGC 選擇了并發(fā)gc算法,也為新生代選擇了多線程的并行gc算法UseParNewGC。

設置新生代的內存大小 java -server -Xmx5000m -Xms5000m -Xmn800m -XX:+UseConcMarkSweepGC -XX:+UseParNewGC

Xmn是新生代的內存大小,包括(eden+ 2 survivor space)。這個參數設置直接影響系統的響應速度。在java程序中new一個對象,首先是放在eden區(qū)域,eden滿了后,觸發(fā)gc,存活下來的對象被拷貝到survivor區(qū)。經過若干次yong gc后,如果依然存活下來,就會進入老年代。新生代設置大了,會導致一次yong gc的時間消耗大,設置小了,又會很快滿了,導致yong gc的頻率過高。新生代不宜設置過大,因為新生代大了,老年代的內存就小了,老年代內存小,會導致full gc發(fā)生的頻率變大。Xmn也沒有一個確切的算法,根據你自身的業(yè)務系統決定的。我在設置的游戲服務器的時候,一般采用模擬大量并發(fā)用戶的行為,調整Xmn的大小,同時監(jiān)控gc的時間和頻率,選擇一個合適的大小。下面我會提到怎么用工具來監(jiān)控gc。

設置一些額外的高級參數 java -server -Xmx5000m -Xms5000m -Xmn800m -XX:+UseConcMarkSweepGC -XX:+UseParNewGC -XX:+UseCMSCompactAtFullCollection -XX:CMSInitiatingOccupancyFraction=70

使用CMS進行老年代gc,會容易導致一些內存碎片,導致內存利用率降低,為此,加入 UseCMSCompactAtFullCollection 可以保證在full gc時進行內存壓縮,減少內存碎片。CMSInitiatingOccupancyFraction=70 表示老年代內存達到70%時觸發(fā)。這個參數要特別小心,設置得過小會導致full gc沒有完成,yong gc的對象遷移過來,導致整個老年代內存都滿了

工具

§ jstat 用來實時查看gc的狀態(tài),

用法:jstat -gcutil 進程號 時間(毫秒)。結果如下:

里面列出每個區(qū)間的內存大小,新生代gc的次數和時間,老年代gc的次數和時間。這里都能反映出你的JVM的運行狀況

§ jmap 用于查看java進程的對象狀況

用法:jmap -histo:live 進程id ??梢源蛴∶總€類的實例數量,內存大小

用法:jmap -dump:format=b,file=log.bin 進程id 這個命令特別有用,可以將jvm的整個內存鏡像拷貝下來,用于分析每個對象占用的內存狀況。當你的java進程崩潰了,用這個方法,可以分析出哪些對象是罪魁禍首

§ jstack 用于查看java進程id的堆棧信息

用法:jstack 進程id 這個工具對于查看死循環(huán)的線程很有效,可以直接找出是哪個線程在哪個方法內死循環(huán)了

總結

JVM的參數有很多,大部分我們都不需要去設置和優(yōu)化。如果你的程序沒有問題,就不要去折騰。如果你要優(yōu)化,一定要有相應的測試流程來支撐。希望能與大家交流多一些JVM方面的優(yōu)化,尤其是實戰(zhàn)方面遇到的問題。我的郵件 ken@iamcoding.com

(轉載本站文章請注明作者和出處 ken – www.iamcoding.com ,請勿用于商業(yè)用途)

參考資料

§ JVM參數 http://www.oracle.com/technetwork/java/javase/tech/vmoptions-jsp-140102.html

§ JVM參數設置、分析 http://www.cnblogs.com/redcreen/archive/2011/05/04/2037057.html

本站僅提供存儲服務,所有內容均由用戶發(fā)布,如發(fā)現有害或侵權內容,請點擊舉報。
打開APP,閱讀全文并永久保存 查看更多類似文章
猜你喜歡
類似文章
Tomcat 調優(yōu)及 JVM 參數優(yōu)化
JVM優(yōu)化配置(轉)
JVM參數調優(yōu)八大技巧
Tomcat中JVM內存溢出及合理配置及maxThreads如何配置
JVM運行原理詳解
合理配置RESIN內存
更多類似文章 >>
生活服務
分享 收藏 導長圖 關注 下載文章
綁定賬號成功
后續(xù)可登錄賬號暢享VIP特權!
如果VIP功能使用有故障,
可點擊這里聯系客服!

聯系客服