ÄÚ´æÕ»ºÍ¶Ñ£¨¶ÑÍâÄÚ´æ»ØÊÕ»úÖÆ£©
µçÄÔÄÚ´æÊ¹ÓÃÂʸßÔõô½â¾ö ¡°¶ÑÄÚ´æ³ÖÐøÕ¼ÓÃ¸ß ÇÒ ygc»ØÊÕЧ¹û²»¼Ñ¡± ÅŲ鴦Àíʵ¼ù
×÷Õß¾©¶«ÁãÊÛ Íõ½²¨
˵Ã÷²¿·ÖËØ²ÄÀ´Ô´ÓÚ £¬Êý¾Ý·ÖÎöÈ«ÎªÕæÊµÊý¾Ý¡£
Ò»¡¢ ÎÊÌâ±³¾°
×Ô½¨µÄÁ½Ì×¹¤¾ß£¬ÔËÐÐÒ»¶Îʱ¼äºó¾ù³öÏÖ ÄÚ´æÕ¼Óøߴ¥·¢±¨¾¯£¬Æµ·±young gcÇÒЧ¹û²»¼Ñ¡£Ôø¾³¢ÊÔ¶à´Î½â¾ö£¬Òò¸÷ÖÖÔÒòµ¢¸é£¬×î½ü϶¨¾öÐÄ´¦Àí´ËÎÊÌâ¡£
¶þ¡¢ ÎÊÌâÃèÊö
Q¶ÑÄÚ´æ1018M£¬Ê¹Óôﵽ950M×óÓÒ´¥·¢Ò»´Îyoung gc£¬ygcÖ®ºóÄÚ´æÕ¼ÓÃ630M£¬Î´·¢Éúfull gc
Èý¡¢ ÈÝÆ÷ÅäÖÃ
ÒÑ´¦Àí¹Ø¼üÐÅÏ¢
?Ö÷»úÃû xxx
?ʵÀýID xxx
?ip
?²Ù×÷ϵͳÃû³ÆLinux
?²Ù×÷ϵͳÌåϵ½á¹¹amd64
?CPU¸öÊý2
?JRE°æ±¾1.8.091
?JVMÆô¶¯Ê±¼ä2023-02-18 17:14:10.873
?Æô¶¯Â·¾¶/export/App
?Full GCPS MarkSweep
?Young GCPS Scavenge
?½ø³ÌID115135
?ÎïÀíÄÚ´æ´óС251.4GB(269888389120Byte)
?½»»»Çø´óС0.0GB(0Byte)
?ÐéÄâÄÚ´æ´óС12.5GB(13368197120Byte)
?Ó¦Ó÷¾¶/export/App/lib/tp-center-web.jar!/BOOT-INF/lib/
?JVMÆô¶¯²ÎÊý-javaagent:/export/xxx/lib/pfinder-profiler-agent-1.0.8-20210322032622-6f12bda2.jar -Ddeploy.app.name=xxx -Ddeploy.app.id=xxx -Ddeploy***stance.id=0 -Ddeploy***stance.name=server1 -DJDOS_DATACENTER=HT -Dloader.path=./conf -Dspring.profiles.active=pre -Xms1024m -Xmx1024m -Xmn384m -XX:MetaspaceSize=64m -XX:CMSInitiatingOccupancyFraction=70 -XX:+UseCMSInitiatingOccupancyOnly -XX:ParallelGCThreads=2 -XX:CICompilerCount=2 -XX:MaxDirectMemorySize=128m -Duser.timezone=Asia/Shanghai -Dcom.sun.management.jmxremote -Dcom.sun.management.jmxremote.port=xxx -Dcom.sun.management.jmxremote.authenticate=false -Dcom.sun.management.jmxremote.ssl=false -Djava.rmi.server.hostname=xxx
ËÄ¡¢ ÎÊÌâ·ÖÎö
1¡¢ young gcµÄʱ»ú£¿
RygcÔÚÐÂÉú´úµÄedenÇøÂúÁËÖ®ºó¾Í»á´¥·¢£¬²ÉÓø´ÖÆËã·¨»ØÊÕÐÂÉú´úµÄÀ¬»ø¡£
2¡¢ ΪºÎyoung gcºó¶ÑÄÚ´æÊ¹ÓÃÂÊÈÔÈ»ºÜ¸ß£¿
RÐÂÉú´ú¹ýС£¬´ó¶ÔÏóÖ±½Ó½øÈëÀÏÄê´ú£¬±àÂëʱҪ¾¡Á¿¼õÉÙ´ó¶ÔÏóµÄʹÓá£
3¡¢ full gc µÄʱ»ú£¿
RHotSpot VMÀ³ýÁËCMSÖ®Í⣬ÆäËüÄÜÊÕ¼¯ÀÏÄê´úµÄGC¶¼»áÊÕ¼¯Õû¸öGC¶Ñ£¬°üÀ¨ÐÂÉú´ú
1£© ·¢Éúfgc֮ǰ½øÐмì²é£¬Èç¹û ÀÏÄê´ú¿ÉÓõÄÁ¬ÐøÄÚ´æ¿Õ¼ä lt ÐÂÉú´úÀú´ÎygcºóÉýÈëÀÏÄê´úµÄ¶ÔÏó×ÜºÍµÄÆ½¾ù´óС£¬´ËʱÏÈ´¥·¢old gc£¬È»ºóÖ´ÐÐygc
2£© Ö´ÐÐygcÖ®ºóÓÐÒ»Åú¶ÔÏóÐèÒª·ÅÈëÀÏÄê´ú£¬´ËʱÀÏÄê´úûÓÐ×ã¹»¿Õ¼ä´æ·Å¶ÔÏ󣬱ØÐë´¥·¢Ò»´Îogc
3£© ÀÏÄê´úÄÚ´æÊ¹ÓÃÂʳ¬¹ýãÐÖµ£¬Ò²Òª´¥·¢ogc
4£© Ôª¿Õ¼ä²»×ãʱҲ»á´¥·¢Ò»´Î
4¡¢ ʲôÔÒòµ¼ÖÂÄÚ´æÕ¼Óøߣ¿
Rheap dump·ÖÎö¡¢gcÈÕÖ¾
Îå¡¢ »ØÊÕÆ÷
?ÍÌÍÂÁ¿ÓÅÏÈ£¨Parallel Scavenge£©ÐÂÉú´úÊÕ¼¯Æ÷£¬²àÖØÓÚÍÌÍÂÁ¿£¨ÍÌÍÂÁ¿=ÔËÐÐÓû§´úÂëʱ¼ä/(ÔËÐÐÓû§´úÂëʱ¼ä+ÔËÐÐÀ¬»øÊÕ¼¯Ê±¼ä)£©µÄ¿ØÖÆ¡£
?Serial OldSerial OldÊÇSerialÊÕ¼¯Æ÷µÄÀÏÄê´ú°æ±¾£¬ ËüͬÑùÊÇÒ»¸öµ¥Ïß³ÌÊÕ¼¯Æ÷£¬ ʹÓñê¼Ç-ÕûÀíËã·¨ÓÉÓÚÀÏÄê´ú Serial Old ÊÕ¼¯Æ÷ÔÚ·þÎñ¶ËÓ¦ÓÃÐÔÄÜÉϵġ°ÍÏÀÛ¡±, ʹÓÃParallel Scavenge ÊÕ¼¯Æ÷Ҳδ±ØÄÜÔÚÕûÌåÉÏ»ñµÃÍÌÍÂÁ¿¸ü´ó»¯µÄЧ¹û¡£ÓÉÓÚµ¥Ï̵߳ÄÀÏÄê´úÊÕ¼¯ÖÐÎÞ·¨³ä·ÖÀûÓ÷þÎñÆ÷¶à´¦ÀíÆ÷µÄ²¢Ðд¦ÀíÄÜÁ¦, ÔÚÀÏÄê´úÄÚ´æ¿Õ¼äºÜ´ó¶øÇÒÓ²¼þ¹æ¸ñ±È½Ï¸ß¼¶µÄÔËÐл·¾³ÖÐ, ÕâÖÖ×éºÏµÄ×ÜÍÌÍÂÁ¿ÉõÖÁ²»Ò»¶¨±ÈParNew¼ÓCMSµÄ×éºÏÀ´µÃÓÅÐã¡£
?Parallel Old ÊÇ Parallel Scavenge ÊÕ¼¯Æ÷µÄÀÏÄê´ú°æ±¾, Ö§³Ö¶àÏ̲߳¢·¢ÊÕ¼¯, »ùÓÚ±ê¼Ç-ÕûÀíË㷨ʵÏÖ. Õâ¸öÊÕ¼¯Æ÷ÊÇÖ±µ½ JDK 6 ʱ²Å¿ªÊ¼ÌṩµÄ, ÔÚ´Ë֮ǰ, ÐÂÉú´úµÄ Parallel ScavengeÊÕ¼¯Æ÷Ò»Ö±´¦ÓÚÏ൱ÞÏÞεÄ״̬, ÔÒòÊÇÈç¹ûÐÂÉú´úÑ¡ÔñÁË Parallel Scavenge ÊÕ¼¯Æ÷, ÀÏÄê´ú³ýÁË Serial Old(PS MarkSweep)ÊÕ¼¯Æ÷ÒÔÍâ±ðÎÞÑ¡Ôñ
UseParallelGC: JDK9 ֮ǰÐéÄâ»úÔËÐÐÔÚ Server ģʽϵÄĬÈÏÖµ, ʹÓà ParallelScavenge + Serial Old(PS MarkSweep)µÄÊÕ¼¯Æ÷×éºÏ½øÐÐÄÚ´æ»ØÊÕ¡£
UseParallelOldGC: ´ò¿ª´Ë¿ª¹Øºó, ʹÓà Parallel Scavenge + Parallel Old µÄÊÕ¼¯Æ÷×éºÏ½øÐÐÄÚ´æ»ØÊÕ¡£
?ParNewÊÕ¼¯Æ÷ÓëParallelÊÕ¼¯Æ÷ÀàËÆ´ËÊÕ¼¯Æ÷ÊÇÐí¶àÔËÐÐÔÚServerģʽϵÄÐéÄâ»úµÄÊ×Ñ¡£¬³ýÁËSerialÊÕ¼¯Æ÷Í⣬ֻÓÐËüÄÜÓëCMSÊÕ¼¯Æ÷ÅäºÏ¹¤×÷
?²¢·¢±ê¼ÇÇå³ý£¨CMS£©»ØÊÕÆ÷ÊÇÒ»ÖÖÒÔ»ñÈ¡×î¶Ì»ØÊÕÍ£¶Ùʱ¼äΪĿ±êµÄ»ØÊÕÆ÷£¬¸Ã»ØÊÕÆ÷ÊÇ»ùÓÚ¡°±ê¼Ç-Çå³ý¡±Ë㷨ʵÏֵġ£×¢ÖØ»ØÊÕʱ²úÉúµÄÍ£¶Ùʱ¼ä£¬ÊÇÍ£¶Ùʱ¼ä×î¶ÌµÄÊÕ¼¯Æ÷¡£·Ç³£ÊʺÏ×¢ÖØÓû§ÌåÑéµÄÓ¦ÓÃÉÏ£¬ÊÇHotspotÐéÄâ»úÖ®Ò»¿îÕæÕýÒâÒåÉϵIJ¢·¢ÊÕ¼¯Æ÷£¬Ö®Ò»´ÎʵÏÖÁËÈÃÀ¬»øÊÕ¼¯Ïß³ÌÓëÓû§Ï̼߳¸ºõÔËÐÐ
Áù¡¢ ÓÅ»¯²ßÂÔ
1¡¢ ¼ÓgcÈÕÖ¾
-XX:+PrintGCDetails // ´´½¨ÏêϸµÄgcÈÕÖ¾
-XX:+PrintGCTimeSts
-Xloggc:/export/Logs/com/gc.log // gcÈÕÖ¾ÎļþÃû
-XX:+UseGCLogFileRotation // ÏÞÖÆ±£´æÔÚgcÈÕÖ¾ÖеÄÊý¾ÝÁ¿
-XX:GCLogFileSize=10M // ÈÕÖ¾Îļþ´óС
-XX:NumberOfGCLogFiles=10 // ÈÕÖ¾Îļþ¸öÊý
-XX:+HeapDumpAfterFullGC // fullgcǰdumpÎļþ±£´æ
-XX:HeapDumpPath=/export/Logs/com/fgcdump.log // dumpÎļþ±£´æÂ·¾¶
-XX:+HeapDumpOnOutOfMemoryError
-XX:HeapDumpPath=Ŀ¼ // oomʱÉú³ÉdumpÎļþ
// ================================= ¸½¼Ó²ÎÊýÈçÏ =============================================
// ¿ÉÒÔʹÓÃ-XX:DisableExplicitGCÑ¡Ïî½ûÓÃÏÔʾµ÷ÓÃFull gc£¨system.gcÔÚcms gcÏÂÎÒÃÇͨ¹ý-XX:+ExplicitGCInvokesConcurrentÀ´×öÒ»´ÎÉÔ΢¸ßЧµãµÄGC(Ч¹û±ÈFull GCÒªºÃЩ)£©
-XX:+UnlockExperimentalVMOptions // ½âËøÊµÑé²ÎÊý£¬ÔÊÐíʹÓÃʵÑéÐÔ²ÎÊý£¬JVMÖÐÓÐЩ²ÎÊý²»ÄÜͨ¹ý-XXÖ±½Ó¸´ÖÆÐèÒªÏȽâËø£¬±ÈÈçҪʹÓÃijЩ²ÎÊýµÄʱºò£¬¿ÉÄܲ»»áÉúЧ£¬ÐèÒªÉèÖÃÕâ¸ö²ÎÊýÀ´½âËø
-XX:+UseParNewGC // ÕæÕýµÄ²¢·¢ÊÕ¼¯Æ÷£¬ÓëCMS´îÅäʹÓã¨ParNewÊÕ¼¯Æ÷ÊÇSerialÊÕ¼¯Æ÷µÄ¶àḬ̈߳汾£¬Ê¹ÓÃÕâ¸ö²ÎÊýºó»áÔÚÐÂÉú´ú½øÐв¢ÐлØÊÕ£¬ÀÏÄê´úÈÔ¾ÉʹÓô®ÐлØÊÕ¡£ÐÂÉú´úSÇøÈÎȻʹÓø´ÖÆËã·¨£©
-XX:+UseConcMarkSweepGC // ºÍÓ¦ÓóÌÐòÏß³ÌÒ»ÆðÖ´ÐУ¬Ïà¶ÔÓÚStop The WorldÀ´ËµÐéÄâ»úÍ£¶Ùʱ¼ä½ÏÉÙ¡£Í£¶Ù¼õÉÙ£¬ÍÌÍÂÁ¿»á½µµÍ¡£ËüʹÓõÄÊÇ ±ê¼ÇÇå³ýËã·¨£¬ÔË×÷¹ý³ÌΪËĸö²½Ö裬·Ö±ðÊÇ ³õʼ±ê¼Ç¡ª²¢·¢±êʶ¡ªÖØÐ±ê¼Ç¡ª²¢·¢Çå³ý¡£ËüÊÇÀÏÄê´úµÄÊÕ¼¯Ëã·¨£¬ÐÂÉú´úʹÓÃParNewÊÕ¼¯Ëã·¨¡£Ä¬ÈϹرÕ
CMSÊÕ¼¯Æ÷µÄȱµãÊǶԷþÎñÆ÷CPU×ÊÔ´½ÏΪÃô¸Ð£¬ÔÚ²¢·¢±ê¼Çʱ»á½µµÍÍÌÍÂÁ¿¡£ËüʹÓõıê¼ÇÇå³ýËã·¨Ò²»á²úÉú´óÁ¿¿Õ¼äË鯬£¬¿Õ¼äË鯬µÄ´æÔÚ»á¼Ó´óFull GCµÄƵÂÊ£¬ËäÈ»ÀÏÄê´ú»¹ÓÐ×ã¹»µÄÄڴ棬ÒòΪÄÚ´æ¿Õ¼ä²»Á¬Ðø£¬²»µÃ²»½øÐÐFull GC
-XX:CMSInitiatingOccupancyFraction=75 // ÔÊÐí¸ü´óÕ¼ÓÃÕ¼ÓÃÂÊ -XX:+UseCMSInitiatingOccupancyOnly // Ö»ÓÃÉ趨µÄ»ØÊÕãÐÖµ,Èç¹û²»Ö¸¶¨,JVM½öÔÚÖ®Ò»´ÎʹÓÃÉ趨ֵ,ºóÐøÔò×Ô¶¯µ÷Õû
-XX:+ExplicitGCInvokesConcurrent // ExplicitGCInvokesConcurrentÕâ¸ö²ÎÊýÊÇÅäºÏCMSʹÓõģ¬¿ªÆôºóSystem.gc()»¹Êǻᴥ·¢Full GC£¬²»¹ý²¢²»ÊÇÒ»¸öÍêÈ«µÄstop-the-worldµÄFull GC£¬¶øÊDz¢·¢µÄCMS GC
-XX:+ParallelRefProcEnabled // ¿ÉÒÔÓÃÀ´²¢Ðд¦Àí Reference£¬ÒÔ¼Ó¿ì´¦ÀíËÙ¶È£¬Ëõ¶ÌºÄʱ -XX:+CMSParallelRemarkEnabled // ÔÚCMS GCǰÆô¶¯Ò»´Îygc£¬Ä¿µÄÔÚÓÚ¼õÉÙold gen¶Ôygc genµÄÒýÓ㬽µµÍremarkʱµÄ¿ªÏú-----Ò»°ãCMSµÄGCºÄʱ 80%¶¼ÔÚremark½×¶Î
// ÇмÇÒÔϲÎÊý²»ÒªÂÒ¼Ó
-XX:+UseCMSCompactAtFullCollection // Full GCºó£¬½øÐÐÒ»´ÎÕûÀí£¬ÕûÀí¹ý³ÌÊǶÀÕ¼µÄ£¬»áÒýÆðÍ£¶Ùʱ¼ä±ä³¤¡£½öÔÚʹÓÃCMSÊÕ¼¯Æ÷ʱÉúЧ¡£
-XX:CMSFullGCsBeforeCompaction // ĬÈÏΪ 0£¬¾ÍÊÇÿ´ÎFullGC¶¼¶ÔÀÏÄê´ú½øÐÐË鯬ÕûÀíѹËõ£¬½¨Òé±£³ÖĬÈÏ
2¡¢ gcÈÕÖ¾Ö¸±ê
S0: ÐÂÉú´úÖÐSurvivor space 0ÇøÒÑʹÓÿռäµÄ°Ù·Ö±È
S1: ÐÂÉú´úÖÐSurvivor space 1ÇøÒÑʹÓÿռäµÄ°Ù·Ö±È E: ÐÂÉú´úÒÑʹÓÿռäµÄ°Ù·Ö±È O: ÀÏÄê´úÒÑʹÓÿռäµÄ°Ù·Ö±È M: Ôª¿Õ¼äÒÑʹÓÿռäµÄ°Ù·Ö±È
CCS: ѹËõÀà¿Õ¼äÀûÓÃÂÊ°Ù·Ö±È YGC: ´ÓÓ¦ÓóÌÐòÆô¶¯µ½µ±Ç°£¬·¢ÉúYang GC µÄ´ÎÊý
YGCT: ´ÓÓ¦ÓóÌÐòÆô¶¯µ½µ±Ç°£¬Yang GCËùÓõÄʱ¼ä¡¾µ¥Î»Ãë¡¿ FGC: ´ÓÓ¦ÓóÌÐòÆô¶¯µ½µ±Ç°£¬·¢ÉúFull GCµÄ´ÎÊý FGCT: ´ÓÓ¦ÓóÌÐòÆô¶¯µ½µ±Ç°£¬Full GCËùÓõÄʱ¼ä GCT: ´ÓÓ¦ÓóÌÐòÆô¶¯µ½µ±Ç°£¬ÓÃÓÚÀ¬»ø»ØÊÕµÄ×Üʱ¼ä¡¾µ¥Î»Ãë¡¿
3¡¢ ¸ü´óÏß³ÌÊý
ϵͳ¿É´´½¨¸ü´óÏß³ÌÊý = £¨»úÆ÷±¾Éí¿ÉÓÃÄÚ´æ - JVM·ÖÅäµÄ¶ÑÄÚ´æ - JVMÔªÊý¾ÝÇø£©/ Ïß³ÌÕ»´óС
4¡¢ ÄÚ´æ·ÖÎö
4.1 ³£ÓÃÃüÁî
4.1.1 jstack
// Java¶ÑÕ»¸ú×Ù¹¤¾ß£¬ËüÓÃÓÚ´òÓ¡³ö¸ø¶¨µÄjava½ø³ÌID¡¢core file¡¢Ô¶³Ìµ÷ÊÔ·þÎñµÄJava¶ÑÕ»ÐÅÏ¢.
jstackÃüÁîÓÃÓÚÉú³ÉÐéÄâ»úµ±Ç°Ê±¿ÌµÄÏ߳̿ìÕÕÏ߳̿ìÕÕÊǵ±Ç°ÐéÄâ»úÄÚÿһÌõÏß³ÌÕýÔÚÖ´ÐÐµÄ ¶ÑÕ»µÄ £¬Ê¹ÓÃÆäÖ÷ҪĿµÄÊǶ¨Î»Ï̳߳öÏÖ³¤Ê±¼äÍ£¶ÙµÄÔÒò£¬ÈçÏ̼߳äËÀËø¡¢ËÀÑ»·¡¢ÇëÇóÍⲿ×ÊÔ´µ¼Ö³¤Ê±¼äµÈ´ýµÈÎÊÌâÏ̳߳öÏÖÍ£¶ÙµÄʱºòͨ¹ýjstackÀ´²é¿´Ï̵߳ĵ÷ÓöÑÕ»£¬¾Í¿ÉÒÔÖªµÀûÓÐÏìÓ¦µÄÏ̵߳½µ×ÔÚ×öʲôÊ£¬»òÕߵȴýʲô×ÊÔ´Èôjava³ÌÐò±ÀÀ£Éú³ÉcoreÎļþ£¬jstack¿ÉÓÃÀ´»ñµÃcoreÎļþµÄjava stackºÍnative stackµÄÐÅÏ¢
»¹¿É¸½Êôµ½ÕýÔÚÔËÐеÄjava³ÌÐòÉÏ£¬¿´µ½µ±Ç°ÔËÐеÄjava³ÌÐòµÄjava stackºÍnative stackÐÅÏ¢£¬Èô³ÊÏÖhung״̬£¬jstackºÜÓÐÓÃ
Ó¦ÓÃjstack [option] ltpidgt // ´òӡij¸ö½ø³ÌµÄ¶ÑÕ»ÐÅÏ¢
?Ïß³Ì״̬
?Monitor¼àÊ***ø
item1ʵս°¸Àý1 jstack·ÖÎöËÀËøÎÊÌâ
ËÀËøÖ¸µÄÊÇÁ½¸ö»òÁ½¸öÒÔÉϵÄÏß³ÌÔÚÖ´Ðйý³ÌÖУ¬ÒòÕù¶á×ÊÔ´¶øÔì³ÉµÄÒ»ÖÖ»¥ÏàµÈ´ýµÄÏÖÏó£¬ÈôÎÞÍâÁ¦×÷Ó㬽«ÎÞ·¨¼ÌÐø½øÐÐ
jpsÖÕ¶ËÖÐÊäÈëjsp²é¿´µ±Ç°ÔËÐеÄjava³ÌÐò
8896
5684 JUnitStarter
17836 Jps
19804 Launcher
Îļþ·ÖÎö¡¾***¼þδËÀËø£¬½öÓÃÓÚ·ÖÎö£¬ËÀËøÊ±»á³öÏÖ Ïß³Ì1³ÖÓÐAµÈB£¬Ïß³Ì2³ÖÓÐBµÈA¡¿
#34consumer_monitor_report_tp_pre677132947525#34 #7851 daemon prio=5 os_prio=0 tid=0x00007f8d2001b000 nid=0x31c8c waiting on condition [0x00007f8ceeeef000] java.lang.Thread.State: TIMED_WAITING (parking) at sun.misc.Unsafe.park(Native Method) - parking to wait for lt0x00000000fad6df60gt (a java.util.concurrent.CountDownLatch$Sync) ... Locked ownable synchronizers: - None
// consumer_monitor_report_tp_pre677132947525 µÄÏ̴߳¦ÓÚTIMED_WAITING״̬£¬³ÖÓÐ - None Ëø£¨ÎÞËø£©£¬µÈ´ý 0x00000000fad6df60 µÄËø
item2ʵս°¸Àý2 jstack·ÖÎöcp¹ý¸ßÎÊÌâ
?ͨ¹ý top ÃüÁî²é¿´¸÷¸ö½ø³ÌcpuʹÓÃÇé¿ö£¬Ä¬Èϰ´cpuʹÓÃÂʸߵ½µÍÅÅÐò
?ͨ¹ý top -Hp pid ²é¿´¸Ã½ø³ÌÏ£¬¸÷¸öÏ̵߳ÄcpuʹÓÃÇé¿ö
?¶¨Î»µ½cpuÕ¼ÓÃÂʸߵÄÏß³ÌÖ®ºó£¬Ê¹Óà jstack pid ÃüÁî²é¿´µ±Ç°java½ø³ÌµÄ¶Ñջ״̬
?nid=0x31c8b ½øÖÆ×ª»»£¬ÎļþÖУ¬Ã¿¸öÏ̶߳¼ÓÐÒ»¸önid£¬²é¿´×´Ì¬
4.1.2 jstat
// javaÐéÄâ»úͳ¼ÆÐÅÏ¢¹¤¾ß£¬ÀûÓÃJVMÄÚ½¨µÄÖ¸Áî¶ÔJavaÓ¦ÓóÌÐòµÄ×ÊÔ´ºÍÐÔÄܽøÐÐʵʱµÄÃüÁîÐÐµÄ¼à¿Ø
Ô¶³Ì¼à¿Øjstat -gcutil port@ip
S0 S1 E O M CCS YGC YGCT FGC FGCT GCT 0.00 81.75 24.57 94.43 95.36 92.41 5649 82.696 2 0.649 83.346 0.00 81.75 26.15 94.43 95.36 92.41 5649 82.696 2 0.649 83.346 0.00 81.75 27.19 94.43 95.36 92.41 5649 82.696 2 0.649 83.346 0.00 81.75 28.81 94.43 95.36 92.41 5649 82.696 2 0.649 83.346 0.00 81.75 29.91 94.43 95.36 92.41 5649 82.696 2 0.649 83.346
˵Ã÷GCT = YGCT + FGCT
4.1.3 jmap-histo
// ²é¿´¶ÑÄÚ´æÖеĶÔÏóÊýÄ¿¡¢´óСͳ¼ÆÖ±·½Í¼£¬Èç¹û´øÉÏliveÔòֻͳ¼Æ»î¶ÔÏó
°üÀ¨¶Ô Heap size ºÍ À¬»ø»ØÊÕ×´¿öµÄ¼à¿Ø
4.1.4 jmqp-heap
// ²é¿´½ø³Ì¶ÑÄÚ´æÊ¹ÓÃÇé¿ö£¬°üÀ¨Ê¹ÓõÄGCËã·¨¡¢¶ÑÅäÖòÎÊýºÍ¸÷´úÖжÑÄÚ´æÊ¹ÓÃÇé¿ö
4.1.5 jmqp-dump
// Éú³É¶Ñ¿ìÕÕ£¨Ë²Ê±£©
ÀûÓÃjvisualvm·ÖÎöÄÚ´ædumpÎļþµã»÷Îļþ-gt×°Èë-gtÎļþÀàÐÍÑ¡¡°¶Ñ¡±
Visual VMµÄOQLÓïÑÔÊǶÔHeapDump½øÐвéѯ£¬ÀàËÆÓÚSQLµÄ²éѯÓïÑÔ£¬ËüµÄ»ù±¾Óï·¨ÈçÏÂ
select ltJavaScript expression to selectgt
[ from [instanceof] ltclass namegt ltidentifiergt
[ where ltJavaScript boolean expression to filtergt ] ]
OQLÓÉ3¸ö²¿·Ö×é³Éselect×Ӿ䡢from×Ó¾äºÍwhere×Ӿ䡣select×Ó¾äÖ¸¶¨²éѯ½á¹ûÒªÏÔʾµÄÄÚÈÝ¡£from×Ó¾äÖ¸¶¨²éѯ·¶Î§£¬¿ÉÖ¸¶¨ÀàÃû£¬Èçjava.lang.String¡¢char[]¡¢[Ljava.io.File£¨FileÊý×飩¡£where×Ó¾äÓÃÓÚÖ¸¶¨²éѯÌõ¼þ¡£
4.2 ¼ÓÈÕÖ¾ºó
¼ûµ÷ÓÅ·½°¸
Æß¡¢ µ÷ÓÅ·½°¸1Ôö´óÐÂÉú´ú
1¡¢ ***gcÈÕÖ¾
Ôª¿Õ¼ä·ÖÅä64M£¨²»×ã×Ô¶¯µ÷ÕûÁË£©£¬ÐÂÉú´ú¸ÄΪ480m
?25.939: [Full GC (Metadata GC Threshold) [PSYoungGen: 4133K-gt0K(461312K)] [ParOldGen: 34773K-gt36327K(557056K)] 38907K-gt36327K(1018368K), [Metaspace: 62967K-gt62967K(1105920K)], 0.3564880 secs] [Times: user=0.72 sys=0.02, real=0.36 secs]
25.939
Full GC (Metadata GC Threshold)
GC (Allocation Failure)
GC (GCLocker Initiated GC)
PSYoungGen: 4133K-gt0K(461312K)
ParOldGen: 34773K-gt36327K(557056K)
38907K-gt36327K(1018368K)
Metaspace: 62967K-gt62967K(1105920K)
0.3564880 secs
user=0.72
sys=0.02
real=0.36 secs
ÈÝÆ÷ÒÑÆô¶¯Ê±¼ä
·¢ÉúÒ»´Î fgc£¨Ôª¿Õ¼ä²»¹»Óõ¼Ö£©
ÄêÇá´úÎÞ×ã¹»¿Õ¼ä
openJDKµÄÒ»¸öbug£¬Ö»ÊÇһֱû±»ÐÞ¸´£¨https://bugs.openjdk***/browse/JDK-8048556£©£¬²»ÓùýÓÚ¹Ø×¢
ĬÈÏ×ÜÈÝÁ¿Îª 0.9ÐÂÉú´ú
Êý¾Ý±ä´óÒòΪÐÂÉú´úµÄÀ¬»ø½øÀ´ÁË
GCǰ¶ÑÄÚ´æÒÑʹÓÃÈÝÁ¿¡úGC¶ÑÄÚ´æÈÝÁ¿£¨¶ÑÄÚ´æ×ÜÈÝÁ¿ = 0.9ÐÂÉú´ú + ÀÏÄê´ú£©
Ôª¿Õ¼äδ»ØÊÕ
Õû¸öGC»¨·Ñʱ¼ä
CPU¹¤×÷ÔÚÓû§Ì¬Ê±¼ä
CPU¹¤×÷ÔÚÄÚºË̬ʱ¼ä
GC×Üʱ¼ä
°Ë¡¢ µ÷ÓÅ·½°¸2Ôö´óÔª¿Õ¼ä + CMS PNEW
ÒÔÏ·½°¸ÔÝʱûɶÎÊÌâ
¾Å¡¢ ÁÙʱ·½°¸ÒÔ¹ÛºóЧ
˵Ã÷È¥ÅúÁ¿´¦Àí£¬½µµÍ¶ÔÏó´óС£¬Ò²ÐíÒ²ÊÇÒ»¸ö²»´íµÄ·½°¸£¬´ýÑéÖ¤¡£
²¿ÊðÎȶ¨ºójvm¼à¿ØÍ¼±íÈçÏÂ
¶ÑÍâÄÚ´æ»ØÊÕ»úÖÆ ÔõôÍêÈ«Çå³ýÄÚ´æÖжѺÍÕ»µÄÊý¾Ý
°×ñ°·çÖ¢×´
- ÀøÖ¾µÄ»°¼ò¶Ì°ÔÆø
- ´Ó»¯ÕÐÆ¸ÍøÕÐÆÕ¹¤
- н®Öп¼³É¼¨Ê²Ã´Ê±ºò³öÀ´2021
- ÒÁÀ³Ò®Ë¹ ¼Ó±´¶û
- ¶ùͯ·þ×°ÔÓÖ¾¹ÙÍøµÇ¼Èë¿Ú
- 2021Öп¼³É¼¨²éѯÈë¿ÚÍøÕ¾
- ÓàÒôÈÆÁºÈýÈÕ²»¾ø
- ¶ç½·ÓãÍ·ÊÇʲôµØ·½µÄ²Ë
- ¼ÆËã»úµÈ¼¶¿¼ÊÔÕæÌâ
- ¸¸Ç׸ø¶ù×Ó¿ÄÍ·
- ÔÙµ±·ë¸¾ÊÇʲôÉúФ
- Õã½Îª¿¼ÑÐÉúµ÷¾í
- ÀîÁ¬½ÜÊÇÁÖÁ¢¹ûµÄ
- ÂäÈÕɱÉñµçÓ°¸ßÇå1080P
- the shy¼ÓÈëÖйú¹ú¼®
- ÈðÉù´ïÖúÌýÆ÷רÂôµêµØÖ·