Äú¿ÉÒÔ¾èÖú£¬Ö§³ÖÎÒÃǵĹ«ÒæÊÂÒµ¡£

1Ôª 10Ôª 50Ôª





ÈÏÖ¤Â룺  ÑéÖ¤Âë,¿´²»Çå³þ?Çëµã»÷Ë¢ÐÂÑéÖ¤Âë ±ØÌî



  ÇóÖª ÎÄÕ ÎÄ¿â Lib ÊÓÆµ iPerson ¿Î³Ì ÈÏÖ¤ ×Éѯ ¹¤¾ß ½²×ù Model Center   Code  
»áÔ±   
   
 
     
   
 ¶©ÔÄ
  ¾èÖú
Java Ó¦ÓÃÐÔÄܵ÷ÓÅʵ¼ù
 
 
  1924  次浏览      30
 2020-10-19 
 
±à¼­ÍƼö:
±¾ÎÄͨ¹ý±ÊÕ߸öÈ˾­Ñ飬½« Java ÐÔÄÜÓÅ»¯·ÖΪ4 ¸ö²ã¼¶£ºÓ¦Óò㡢Êý¾Ý¿â²ã¡¢¿ò¼Ü²ã¡¢JVM ²ã£¬À´·Ö±ð½²½âÈçºÎ½øÐÐÐÔÄܵ÷Óż°Êµ¼ùµÄ¡£
±¾ÎÄÀ´×ÔÓÚIBM£¬ÓÉ»ðÁú¹ûÈí¼þLinda±à¼­¡¢ÍƼö¡£

Java Ó¦ÓÃÐÔÄÜÓÅ»¯ÊÇÒ»¸öÀÏÉú³£Ì¸µÄ»°Ì⣬µäÐ͵ÄÐÔÄÜÎÊÌâÈçÒ³ÃæÏìÓ¦Âý¡¢½Ó¿Ú³¬Ê±£¬·þÎñÆ÷¸ºÔظߡ¢²¢·¢ÊýµÍ£¬Êý¾Ý¿âƵ·±ËÀËøµÈ¡£ÓÈÆäÊÇÔÚ¡±²Ú¿ìÃÍ¡±µÄ»¥ÁªÍø¿ª·¢Ä£Ê½´óÐÐÆäµÀµÄ½ñÌì£¬Ëæ×Åϵͳ·ÃÎÊÁ¿µÄÈÕÒæÔö¼ÓºÍ´úÂëµÄÓ·Ö×£¬¸÷ÖÖÐÔÄÜÎÊÌ⿪ʼ·×ÖÁí³À´¡£Java Ó¦ÓÃÐÔÄܵį¿¾±µã·Ç³£¶à£¬±ÈÈç´ÅÅÌ¡¢ÄÚ´æ¡¢ÍøÂç I/O µÈϵͳÒòËØ£¬Java Ó¦ÓôúÂ룬JVM GC£¬Êý¾Ý¿â£¬»º´æµÈ¡£±ÊÕ߸ù¾Ý¸öÈ˾­Ñ飬½« Java ÐÔÄÜÓÅ»¯·ÖΪ 4 ¸ö²ã¼¶£ºÓ¦Óò㡢Êý¾Ý¿â²ã¡¢¿ò¼Ü²ã¡¢JVM ²ã£¬Èçͼ 1 Ëùʾ¡£

ͼ 1.Java ÐÔÄÜÓÅ»¯·Ö²ãÄ£ÐÍ

ÿ²ãÓÅ»¯ÄѶÈÖð¼¶Ôö¼Ó£¬Éæ¼°µÄ֪ʶºÍ½â¾öµÄÎÊÌâÒ²»á²»Í¬¡£±ÈÈçÓ¦ÓòãÐèÒªÀí½â´úÂëÂß¼­£¬Í¨¹ý Java Ïß³ÌÕ»¶¨Î»ÓÐÎÊÌâ´úÂëÐеȣ»Êý¾Ý¿â²ãÃæÐèÒª·ÖÎö SQL¡¢¶¨Î»ËÀËøµÈ£»¿ò¼Ü²ãÐèÒª¶®Ô´´úÂ룬Àí½â¿ò¼Ü»úÖÆ£»JVM ²ãÐèÒª¶Ô GC µÄÀàÐͺ͹¤×÷»úÖÆÓÐÉîÈëÁ˽⣬¶Ô¸÷ÖÖ JVM ²ÎÊý×÷ÓÃÁËÈ»ÓÚÐØ¡£

Î§ÈÆ Java ÐÔÄÜÓÅ»¯£¬ÓÐÁ½ÖÖ×î»ù±¾µÄ·ÖÎö·½·¨£ºÏÖ³¡·ÖÎö·¨ºÍʺó·ÖÎö·¨¡£ÏÖ³¡·ÖÎö·¨Í¨¹ý±£ÁôÏÖ³¡£¬ÔÙ²ÉÓÃÕï¶Ï¹¤¾ß·ÖÎö¶¨Î»¡£ÏÖ³¡·ÖÎö¶ÔÏßÉÏÓ°Ïì½Ï´ó£¬²¿·Ö³¡¾°£¨ÌرðÊÇÉæ¼°µ½Óû§¹Ø¼üµÄÔÚÏßÒµÎñʱ£©²»Ì«ºÏÊÊ¡£Êºó·ÖÎö·¨ÐèÒª¾¡¿ÉÄܶàÊÕ¼¯ÏÖ³¡Êý¾Ý£¬È»ºóÁ¢¼´»Ö¸´·þÎñ£¬Í¬Ê±Õë¶ÔÊÕ¼¯µÄÏÖ³¡Êý¾Ý½øÐÐʺó·ÖÎöºÍ¸´ÏÖ¡£ÏÂÃæÎÒÃÇ´ÓÐÔÄÜÕï¶Ï¹¤¾ß³ö·¢£¬·ÖÏíËѹ·ÉÌҵƽ̨ÔÚÆäÖеÄһЩ°¸ÀýÓëʵ¼ù¡£

ÐÔÄÜÕï¶Ï¹¤¾ß

ÐÔÄÜÕï¶ÏÒ»ÖÖÊÇÕë¶ÔÒѾ­È·¶¨ÓÐÐÔÄÜÎÊÌâµÄϵͳºÍ´úÂë½øÐÐÕï¶Ï£¬»¹ÓÐÒ»ÖÖÊǶÔÔ¤ÉÏÏßϵͳÌáǰÐÔÄܲâÊÔ£¬È·¶¨ÐÔÄÜÊÇ·ñ·ûºÏÉÏÏßÒªÇó¡£±¾ÎÄÖ÷ÒªÕë¶ÔǰÕߣ¬ºóÕß¿ÉÒÔÓø÷ÖÖÐÔÄÜѹ²â¹¤¾ß£¨ÀýÈç JMeter£©½øÐвâÊÔ£¬²»ÔÚ±¾ÎÄÌÖÂÛ·¶Î§ÄÚ¡£Õë¶Ô Java Ó¦Óã¬ÐÔÄÜÕï¶Ï¹¤¾ßÖ÷Òª·ÖΪÁ½²ã£ºOS ²ãÃæºÍ Java Ó¦ÓòãÃæ£¨°üÀ¨Ó¦ÓôúÂëÕï¶ÏºÍ GC Õï¶Ï£©¡£

OS Õï¶Ï

OS µÄÕï¶ÏÖ÷Òª¹Ø×¢µÄÊÇ CPU¡¢Memory¡¢I/O Èý¸ö·½Ãæ¡£

CPU Õï¶Ï

¶ÔÓÚ CPU Ö÷Òª¹Ø×¢Æ½¾ù¸ºÔØ£¨Load Average£©£¬CPU ʹÓÃÂÊ£¬ÉÏÏÂÎÄÇл»´ÎÊý£¨Context Switch£©¡£

ͨ¹ý top ÃüÁî¿ÉÒԲ鿴ϵͳƽ¾ù¸ºÔØºÍ CPU ʹÓÃÂÊ£¬Í¼ 2 Ϊͨ¹ý top ÃüÁî²é¿´Ä³ÏµÍ³µÄ״̬¡£

ͼ 2.top ÃüÁîʾÀý

ƽ¾ù¸ºÔØÓÐÈý¸öÊý×Ö£º63.66£¬58.39£¬57.18£¬·Ö±ð±íʾ¹ýÈ¥ 1 ·ÖÖÓ¡¢5 ·ÖÖÓ¡¢15 ·ÖÖÓ»úÆ÷µÄ¸ºÔØ¡£°´ÕÕ¾­Ñ飬ÈôÊýֵСÓÚ 0.7*CPU ¸öÊý£¬Ôòϵͳ¹¤×÷Õý³££»Èô³¬¹ýÕâ¸öÖµ£¬ÉõÖÁ´ïµ½ CPU ºËÊýµÄËÄÎå±¶£¬ÔòϵͳµÄ¸ºÔؾÍÃ÷ÏÔÆ«¸ß¡£Í¼ 2 ÖÐ 15 ·ÖÖÓ¸ºÔØÒѾ­¸ß´ï 57.18£¬1 ·ÖÖÓ¸ºÔØÊÇ 63.66£¨ÏµÍ³Îª 16 ºË£©£¬ËµÃ÷ϵͳ³öÏÖ¸ºÔØÎÊÌ⣬ÇÒ´æÔÚ½øÒ»²½Éý¸ßÇ÷ÊÆ£¬ÐèÒª¶¨Î»¾ßÌåÔ­ÒòÁË¡£

ͨ¹ý vmstat ÃüÁî¿ÉÒԲ鿴 CPU µÄÉÏÏÂÎÄÇл»´ÎÊý£¬Èçͼ 3 Ëùʾ£º

ͼ 3.vmstat ÃüÁîʾÀý

ÉÏÏÂÎÄÇл»´ÎÊý·¢ÉúµÄ³¡¾°Ö÷ÒªÓÐÈçϼ¸ÖÖ£º1£©Ê±¼äƬÓÃÍ꣬CPU Õý³£µ÷¶ÈÏÂÒ»¸öÈÎÎñ£»2£©±»ÆäËüÓÅÏȼ¶¸ü¸ßµÄÈÎÎñÇÀÕ¼£»3£©Ö´ÐÐÈÎÎñÅöµ½ I/O ×èÈû£¬¹ÒÆðµ±Ç°ÈÎÎñ£¬Çл»µ½ÏÂÒ»¸öÈÎÎñ£»4£©Óû§´úÂëÖ÷¶¯¹ÒÆðµ±Ç°ÈÎÎñÈóö CPU£»5£©¶àÈÎÎñÇÀÕ¼×ÊÔ´£¬ÓÉÓÚûÓÐÇÀµ½±»¹ÒÆð£»6£©Ó²¼þÖжϡ£Java Ïß³ÌÉÏÏÂÎÄÇл»Ö÷ÒªÀ´×Ô¹²Ïí×ÊÔ´µÄ¾ºÕù¡£Ò»°ãµ¥¸ö¶ÔÏó¼ÓËøºÜÉÙ³ÉΪϵͳƿ¾±£¬³ý·ÇËøÁ£¶È¹ý´ó¡£µ«ÔÚÒ»¸ö·ÃÎÊÆµ¶È¸ß£¬¶Ô¶à¸ö¶ÔÏóÁ¬Ðø¼ÓËøµÄ´úÂë¿éÖоͿÉÄܳöÏÖ´óÁ¿ÉÏÏÂÎÄÇл»£¬³ÉΪϵͳƿ¾±¡£±ÈÈçÔÚÎÒÃÇϵͳÖоÍÔø³öÏÖ log4j 1.x Ôڽϴ󲢷¢Ï´óÁ¿´òÓ¡ÈÕÖ¾£¬³öÏÖÆµ·±ÉÏÏÂÎÄÇл»£¬´óÁ¿Ïß³Ì×èÈû£¬µ¼ÖÂϵͳÍÌÍÂÁ¿´ó½µµÄÇé¿ö£¬ÆäÏà¹Ø´úÂëÈçÇåµ¥ 1 Ëùʾ£¬Éý¼¶µ½ log4j 2.x ²Å½â¾öÕâ¸öÎÊÌâ¡£

Çåµ¥ 1. log4j 1.x ͬ²½´úÂëÆ¬¶Î

for(Category c = this; c != null; c=c.parent) {
// Protected against simultaneous call to addAppender, removeAppender,...
synchronized(c) {
if (c.aai != null) {
write += c.aai.appendLoopAppenders(event);
}
...
}
}

 

Memory

´Ó²Ù×÷ϵͳ½Ç¶È£¬ÄÚ´æ¹Ø×¢Ó¦Óýø³ÌÊÇ·ñ×ã¹»£¬¿ÉÒÔʹÓà free ¨Cm ÃüÁî²é¿´ÄÚ´æµÄʹÓÃÇé¿ö¡£Í¨¹ý top ÃüÁî¿ÉÒԲ鿴½ø³ÌʹÓõÄÐéÄâÄÚ´æ VIRT ºÍÎïÀíÄÚ´æ RES£¬¸ù¾Ý¹«Ê½ VIRT = SWAP + RES ¿ÉÒÔÍÆËã³ö¾ßÌåÓ¦ÓÃʹÓõĽ»»»·ÖÇø£¨Swap£©Çé¿ö£¬Ê¹Óý»»»·ÖÇø¹ý´ó»áÓ°Ïì Java Ó¦ÓÃÐÔÄÜ£¬¿ÉÒÔ½« swappiness Öµµ÷µ½¾¡¿ÉÄÜС¡£ÒòΪ¶ÔÓÚ Java Ó¦ÓÃÀ´Ëµ£¬Õ¼ÓÃÌ«¶à½»»»·ÖÇø¿ÉÄÜ»áÓ°ÏìÐÔÄÜ£¬±Ï¾¹´ÅÅÌÐÔÄܱÈÄÚ´æÂýÌ«¶à¡£

I/O

I/O °üÀ¨´ÅÅÌ I/O ºÍÍøÂç I/O£¬Ò»°ãÇé¿öÏ´ÅÅ̸üÈÝÒ׳öÏÖ I/O Æ¿¾±¡£Í¨¹ý iostat ¿ÉÒԲ鿴´ÅÅ̵ĶÁдÇé¿ö£¬Í¨¹ý CPU µÄ I/O wait ¿ÉÒÔ¿´³ö´ÅÅÌ I/O ÊÇ·ñÕý³£¡£Èç¹û´ÅÅÌ I/O Ò»Ö±´¦ÓںܸߵÄ״̬£¬ËµÃ÷´ÅÅÌÌ«Âý»ò¹ÊÕÏ£¬³ÉΪÁËÐÔÄÜÆ¿¾±£¬ÐèÒª½øÐÐÓ¦ÓÃÓÅ»¯»òÕß´ÅÅ̸ü»»¡£

³ýÁ˳£ÓÃµÄ top¡¢ ps¡¢vmstat¡¢iostat µÈÃüÁ»¹ÓÐÆäËû Linux ¹¤¾ß¿ÉÒÔÕï¶ÏϵͳÎÊÌ⣬Èç mpstat¡¢tcpdump¡¢netstat¡¢pidstat¡¢sar µÈ¡£Brendan ×ܽáÁгöÁË Linux ²»Í¬É豸ÀàÐ͵ÄÐÔÄÜÕï¶Ï¹¤¾ß£¬Èçͼ 4 Ëùʾ£¬¿É¹©²Î¿¼¡£

ͼ 4.Linux ÐÔÄܹ۲⹤¾ß

Java Ó¦ÓÃÕï¶Ï¹¤¾ß

Ó¦ÓôúÂëÕï¶Ï

Ó¦ÓôúÂëÐÔÄÜÎÊÌâÊÇÏà¶ÔºÃ½â¾öµÄÒ»ÀàÐÔÄÜÎÊÌ⡣ͨ¹ýһЩӦÓòãÃæ¼à¿Ø±¨¾¯£¬Èç¹ûÈ·¶¨ÓÐÎÊÌâµÄ¹¦ÄܺʹúÂ룬ֱ½Óͨ¹ý´úÂë¾Í¿ÉÒÔ¶¨Î»£»»òÕßͨ¹ý top+jstack£¬ÕÒ³öÓÐÎÊÌâµÄÏß³ÌÕ»£¬¶¨Î»µ½ÎÊÌâÏ̵߳ĴúÂëÉÏ£¬Ò²¿ÉÒÔ·¢ÏÖÎÊÌâ¡£¶ÔÓÚ¸ü¸´ÔÓ£¬Âß¼­¸ü¶àµÄ´úÂë¶Î£¬Í¨¹ý Stopwatch ´òÓ¡ÐÔÄÜÈÕÖ¾ÍùÍùÒ²¿ÉÒÔ¶¨Î»´ó¶àÊýÓ¦ÓôúÂëÐÔÄÜÎÊÌâ¡£

³£ÓÃµÄ Java Ó¦ÓÃÕï¶Ï°üÀ¨Ï̡߳¢¶ÑÕ»¡¢GC µÈ·½ÃæµÄÕï¶Ï¡£

jstack

jstack ÃüÁîͨ³£ÅäºÏ top ʹÓã¬Í¨¹ý top -H -p pid ¶¨Î» Java ½ø³ÌºÍỊ̈߳¬ÔÙÀûÓà jstack -l pid µ¼³öÏß³ÌÕ»¡£ÓÉÓÚÏß³ÌÕ»ÊÇ˲̬µÄ£¬Òò´ËÐèÒª¶à´Î dump£¬Ò»°ã 3 ´Î dump£¬Ò»°ãÿ´Î¸ô 5s ¾ÍÐС£½« top ¶¨Î»µÄ Java Ïß³Ì pid ת³É 16 ½øÖÆ£¬µÃµ½ Java Ïß³ÌÕ»ÖÐµÄ nid£¬¿ÉÒÔÕÒµ½¶ÔÓ¦µÄÎÊÌâÏß³ÌÕ»¡£

ͼ 5. ͨ¹ý top ¨CH -p ²é¿´ÔËÐÐʱ¼ä½Ï³¤ Java Ïß³Ì

Èçͼ 5 Ëùʾ£¬ÆäÖеÄÏß³Ì 24985 ÔËÐÐʱ¼ä½Ï³¤£¬¿ÉÄÜ´æÔÚÎÊÌ⣬ת³É 16 ½øÖƺó£¬Í¨¹ý Java Ïß³ÌÕ»ÕÒµ½¶ÔÓ¦Ïß³Ì 0x6199 µÄÕ»ÈçÏ£¬´Ó¶ø¶¨Î»ÎÊÌâµã£¬Èçͼ 6 Ëùʾ¡£

ͼ 6.jstack ²é¿´Ï̶߳ÑÕ»

JProfiler

JProfiler ¿É¶Ô CPU¡¢¶Ñ¡¢ÄÚ´æ½øÐзÖÎö£¬¹¦ÄÜÇ¿´ó£¬Èçͼ 7 Ëùʾ¡£Í¬Ê±½áºÏѹ²â¹¤¾ß£¬¿ÉÒÔ¶Ô´úÂëºÄʱ²ÉÑùͳ¼Æ¡£

ͼ 7. ͨ¹ý JProfiler ½øÐÐÄÚ´æ·ÖÎö

GC Õï¶Ï

Java GC ½â¾öÁ˳ÌÐòÔ±¹ÜÀíÄÚ´æµÄ·çÏÕ£¬µ« GC ÒýÆðµÄÓ¦ÓÃÔÝÍ£³ÉÁËÁíÒ»¸öÐèÒª½â¾öµÄÎÊÌâ¡£JDK ÌṩÁËһϵÁй¤¾ßÀ´¶¨Î» GC ÎÊÌ⣬±È½Ï³£ÓõÄÓÐ jstat¡¢jmap£¬»¹ÓеÚÈý·½¹¤¾ß MAT µÈ¡£

jstat

jstat ÃüÁî¿É´òÓ¡ GC ÏêϸÐÅÏ¢£¬Young GC ºÍ Full GC ´ÎÊý£¬¶ÑÐÅÏ¢µÈ¡£ÆäÃüÁî¸ñʽΪ

jstat ¨Cgcxxx -t pid £¬Èçͼ 8 Ëùʾ¡£

ͼ 8.jstat ÃüÁîʾÀý

jmap

jmap ´òÓ¡ Java ½ø³Ì¶ÑÐÅÏ¢ jmap ¨Cheap pid¡£Í¨¹ý jmap ¨Cdump:file=xxx pid ¿É dump ¶Ñµ½Îļþ£¬È»ºóͨ¹ýÆäËü¹¤¾ß½øÒ»²½·ÖÎöÆä¶ÑʹÓÃÇé¿ö

MAT

MAT ÊÇ Java ¶ÑµÄ·ÖÎöÀûÆ÷£¬ÌṩÁËÖ±¹ÛµÄÕï¶Ï±¨¸æ£¬ÄÚÖÃµÄ OQL ÔÊÐí¶Ô¶Ñ½øÐÐÀà SQL ²éѯ£¬¹¦ÄÜÇ¿´ó£¬outgoing reference ºÍ incoming reference ¿ÉÒÔ¶Ô¶ÔÏóÒýÓÃ×·¸ùËÝÔ´¡£

ͼ 9.MAT ʾÀý

ͼ 9 ÊÇ MAT ʹÓÃʾÀý£¬MAT ÓÐÁ½ÁÐÏÔʾ¶ÔÏó´óС£¬·Ö±ðÊÇ Shallow size ºÍ Retained size£¬Ç°Õß±íʾ¶ÔÏó±¾ÉíÕ¼ÓÃÄÚ´æµÄ´óС£¬²»°üº¬ÆäÒýÓõĶÔÏ󣬺óÕßÊǶÔÏó×Ô¼º¼°ÆäÖ±½Ó»ò¼ä½ÓÒýÓõĶÔÏóµÄ Shallow size Ö®ºÍ£¬¼´¸Ã¶ÔÏó±»»ØÊÕºó GC ÊͷŵÄÄÚ´æ´óС£¬Ò»°ã˵À´¹Ø×¢ºóÕß´óС¼´¿É¡£¶ÔÓÚÓÐЩ´ó¶Ñ (¼¸Ê® G) µÄ Java Ó¦Óã¬ÐèÒª½Ï´óÄÚ´æ²ÅÄÜ´ò¿ª MAT¡£Í¨³£±¾µØ¿ª·¢»úÄÚ´æ¹ýС£¬ÊÇÎÞ·¨´ò¿ªµÄ£¬½¨ÒéÔÚÏßÏ·þÎñÆ÷¶Ë°²×°Í¼Ðλ·¾³ºÍ MAT£¬Ô¶³Ì´ò¿ª²é¿´¡£»òÕßÖ´ÐÐ mat ÃüÁîÉú³É¶ÑË÷Òý£¬¿½±´Ë÷Òýµ½±¾µØ£¬²»¹ýÕâÖÖ·½Ê½¿´µ½µÄ¶ÑÐÅÏ¢ÓÐÏÞ¡£

ΪÁËÕï¶Ï GC ÎÊÌ⣬½¨ÒéÔÚ JVM ²ÎÊýÖмÓÉÏ-XX:+PrintGCDateStamps¡£³£ÓÃµÄ GC ²ÎÊýÈçͼ 10 Ëùʾ¡£

ͼ 10. ³£Óà GC ²Î?

¶ÔÓÚ Java Ó¦Óã¬Í¨¹ý top+jstack+jmap+MAT ¿ÉÒÔ¶¨Î»´ó¶àÊýÓ¦ÓúÍÄÚ´æÎÊÌ⣬¿Éν±Ø±¸¹¤¾ß¡£ÓÐЩʱºò£¬Java Ó¦ÓÃÕï¶ÏÐèÒª²Î¿¼ OS Ïà¹ØÐÅÏ¢£¬¿ÉʹÓÃһЩ¸üÈ«ÃæµÄÕï¶Ï¹¤¾ß£¬±ÈÈç Zabbix£¨ÕûºÏÁË OS ºÍ JVM ¼à¿Ø£©µÈ¡£ÔÚ·Ö²¼Ê½»·¾³ÖУ¬·Ö²¼Ê½¸ú×ÙϵͳµÈ»ù´¡ÉèʩҲ¶ÔÓ¦ÓÃÐÔÄÜÕï¶ÏÌṩÁËÓÐÁ¦Ö§³Ö¡£

ÐÔÄÜÓÅ»¯Êµ¼ù

ÔÚ½éÉÜÁËһЩ³£ÓõÄÐÔÄÜÕï¶Ï¹¤¾ßºó£¬ÏÂÃæ½«½áºÏÎÒÃÇÔÚ Java Ó¦Óõ÷ÓÅÖеÄһЩʵ¼ù£¬´Ó JVM ²ã¡¢Ó¦ÓôúÂë²ãÒÔ¼°Êý¾Ý¿â²ã½øÐа¸Àý·ÖÏí¡£

JVM µ÷ÓÅ£ºGC ֮ʹ

Ëѹ·ÉÌÒµÆ½Ì¨Ä³ÏµÍ³ÖØ¹¹Ê±Ñ¡Ôñ RMI ×÷ΪÄÚ²¿Ô¶³Ìµ÷ÓÃЭÒ飬ϵͳÉÏÏߺó¿ªÊ¼³öÏÖÖÜÆÚÐԵķþÎñÍ£Ö¹ÏìÓ¦£¬ÔÝͣʱ¼äÓÉÊýÃëµ½ÊýÊ®Ãë²»µÈ¡£Í¨¹ý¹Û²ì GC ÈÕÖ¾£¬·¢ÏÖ·þÎñ×ÔÆô¶¯ºóÿСʱ»á³öÏÖÒ»´Î Full GC¡£ÓÉÓÚϵͳ¶ÑÉèÖýϴó£¬Full GC Ò»´ÎÔÝÍ£Ó¦ÓÃʱ¼ä»á½Ï³¤£¬Õâ¶ÔÏßÉÏʵʱ·þÎñÓ°Ïì½Ï´ó¡£¾­¹ý·ÖÎö£¬ÔÚÖØ¹¹Ç°ÏµÍ³Ã»ÓгöÏÖ¶¨ÆÚ Full GC µÄÇé¿ö£¬Òò´Ë»³ÒÉÊÇ RMI ¿ò¼Ü²ãÃæµÄÎÊÌ⡣ͨ¹ý¹«¿ª×ÊÁÏ£¬·¢ÏÖ RMI µÄ GDC£¨Distributed Garbage Collection£¬·Ö²¼Ê½À¬»øÊÕ¼¯£©»áÆô¶¯ÊØ»¤Ï̶߳¨ÆÚÖ´ÐÐ Full GC À´»ØÊÕÔ¶³Ì¶ÔÏó£¬Çåµ¥ 2 ÖÐչʾÁËÆäÊØ»¤Ï̴߳úÂë¡£

Çåµ¥ 2.DGC ÊØ»¤Ïß³ÌÔ´´úÂë

<table width="70%" border="0" align="center" id="ccc" cellpadding="7" cellspacing="1" bgcolor="#CCCCCC" class="content" style="text-indent: 0em;">
<tr bgcolor="#FFFFFF">
<td height="25" bgcolor="#f5f5f5"> 1</td>
</tr>
</table>

¶¨Î»ÎÊÌâºó½â¾öÆðÀ´¾Í±È½ÏÈÝÒ×ÁË¡£Ò»ÖÖÊÇͨ¹ýÔö¼Ó-XX:+DisableExplicitGC ²ÎÊý£¬Ö±½Ó½ûÓÃϵͳ GC µÄÏÔʾµ÷Ó㬵«¶ÔʹÓà NIO µÄϵͳ£¬»áÓжÑÍâÄÚ´æÒç³öµÄ·çÏÕ¡£ÁíÒ»ÖÖ·½Ê½ÊÇͨ¹ýµ÷´ó -Dsun.rmi.dgc.server.gcInterval ºÍ-Dsun.rmi.dgc.client.gcInterval ²ÎÊý£¬Ôö¼Ó Full GC ¼ä¸ô£¬Í¬Ê±Ôö¼Ó²ÎÊý-XX:+ExplicitGCInvokesConcurrent£¬½«Ò»´ÎÍêÈ« Stop-The-World µÄ Full GC µ÷ÕûΪһ´Î²¢·¢ GC ÖÜÆÚ£¬¼õÉÙÓ¦ÓÃÔÝͣʱ¼ä£¬Í¬Ê±¶Ô NIO Ó¦ÓÃÒ²²»»áÔì³ÉÓ°Ïì¡£´Óͼ 11 ¿ÉÖª£¬µ÷ÕûÖ®ºóµÄ Full GC ´ÎÊý ÔÚ 3 ÔÂÖ®ºóÃ÷ÏÔ¼õÉÙ¡£

ͼ 11.Full GC ¼à¿ØÍ³¼Æ

GC µ÷ÓŶԸ߲¢·¢´óÊý¾ÝÁ¿½»»¥µÄÓ¦Óû¹ÊǺÜÓбØÒªµÄ£¬ÓÈÆäÊÇĬÈÏ JVM ²ÎÊýͨ³£²»Âú×ãÒµÎñÐèÇó£¬ÐèÒª½øÐÐרÃŵ÷ÓÅ¡£GC ÈÕÖ¾µÄ½â¶ÁÓкܶ๫¿ªµÄ×ÊÁÏ£¬±¾ÎIJ»ÔÙ׸Êö¡£GC µ÷ÓÅÄ¿±ê»ù±¾ÓÐÈý¸ö˼·£º½µµÍ GC ƵÂÊ£¬¿ÉÒÔͨ¹ýÔö´ó¶Ñ¿Õ¼ä£¬¼õÉÙ²»±ØÒª¶ÔÏóÉú³É£»½µµÍ GC ÔÝͣʱ¼ä£¬¿ÉÒÔͨ¹ý¼õÉٶѿռ䣬ʹÓà CMS GC Ë㷨ʵÏÖ£»±ÜÃâ Full GC£¬µ÷Õû CMS ´¥·¢±ÈÀý£¬±ÜÃâ Promotion Failure ºÍ Concurrent mode failure£¨ÀÏÄê´ú·ÖÅä¸ü¶à¿Õ¼ä£¬Ôö¼Ó GC Ïß³ÌÊý¼Ó¿ì»ØÊÕËÙ¶È£©£¬¼õÉÙ´ó¶ÔÏóÉú³ÉµÈ¡£

Ó¦Óòãµ÷ÓÅ£ºÐáµ½´úÂëµÄ»µÎ¶µÀ

´ÓÓ¦Óòã´úÂëµ÷ÓÅÈëÊÖ£¬ÆÊÎö´úÂëЧÂÊϽµµÄ¸ùÔ´£¬ÎÞÒÉÊÇÌá¸ß Java Ó¦ÓÃÐÔÄܵĺܺõÄÊÖ¶ÎÖ®Ò»¡£

ijÉÌÒµ¹ã¸æÏµÍ³£¨²ÉÓà Nginx ½øÐиºÔؾùºâ£©Ä³´ÎÈÕ³£ÉÏÏßºó£¬ÆäÖÐÓм¸Ì¨»úÆ÷¸ºÔؼ±¾çÉý¸ß£¬CPU ʹÓÃÂÊѸËÙ´òÂú¡£ÎÒÃǶÔÏßÉϽøÐÐÁ˽ô¼±»Ø¹ö£¬²¢Í¨¹ý jmap ºÍ jstack ¶ÔÆäÖÐij̨·þÎñÆ÷µÄÏÖ³¡½øÐб£´æ¡£

ͼ 12. ͨ¹ý MAT ·ÖÎö¶ÑÕ»ÏÖ³¡

¶ÑÕ»ÏÖ³¡Èçͼ 12 Ëùʾ£¬¸ù¾Ý MAT ¶Ô dump Êý¾ÝµÄ·ÖÎö£¬·¢ÏÖ×î¶àµÄÄÚ´æ¶ÔÏóΪ byte[] ºÍ java.util.HashMap $Entry£¬ÇÒ java.util.HashMap $Entry ¶ÔÏó´æÔÚÑ­»·ÒýÓᣳõ²½¶¨Î»Ôڸà HashMap µÄ put ¹ý³ÌÖÐÓпÉÄܳöÏÖÁËËÀÑ­»·ÎÊÌ⣨ͼÖÐ java.util.HashMap $Entry 0x2add6d992cb8 ºÍ 0x2add6d992ce8 µÄ next ÒýÓÃÐγÉÑ­»·£©¡£²éÔÄÏà¹ØÎĵµ¶¨Î»ÕâÊôÓÚµäÐ͵IJ¢·¢Ê¹Óõij¡¾°´íÎó (http://bugs.java.com/bugdatabase/view_bug.do?bug_id=6423457) £¬¼òÒªµÄ˵¾ÍÊÇ HashMap ±¾Éí²¢²»¾ß±¸¶àÏ̲߳¢·¢µÄÌØÐÔ£¬ÔÚ¶à¸öÏß³Ìͬʱ put ²Ù×÷µÄÇé¿öÏ£¬ÄÚ²¿Êý×é½øÐÐÀ©ÈÝʱ»áµ¼Ö HashMap µÄÄÚ²¿Á´±íÐγɻ·Ðνṹ£¬´Ó¶ø³öÏÖËÀÑ­»·¡£

Õë¶Ô´Ë´ÎÉÏÏߣ¬×î´óµÄ¸Ä¶¯ÔÚÓÚͨ¹ýÄڴ滺´æÍøÕ¾Êý¾ÝÀ´ÌáÉýϵͳÐÔÄÜ£¬Í¬Ê±Ê¹ÓÃÁËÀÁ¼ÓÔØ»úÖÆ£¬ÈçÇåµ¥ 3 Ëùʾ¡£

Çåµ¥ 3. ÍøÕ¾Êý¾ÝÀÁ¼ÓÔØ´úÂë

private static Map<Long, UnionDomain> domainMap = new HashMap<Long, UnionDomain>();
private boolean isResetDomains() {
if (CollectionUtils.isEmpty(domainMap)) {
// ´ÓÔ¶¶Ë http ½Ó¿Ú»ñÈ¡ÍøÕ¾ÏêÇé
List<UnionDomain> newDomains = unionDomainHttpClient
.queryAllUnionDomain();
if (CollectionUtils.isEmpty(domainMap)) {
domainMap = new HashMap<Long, UnionDomain>();
for (UnionDomain domain : newDomains) {
if (domain != null) {
domainMap.put(domain.getSubdomainId(), domain);
}
}
}
return true;
}
return false;
}

¿ÉÒÔ¿´µ½´Ë´¦µÄ domainMap Ϊ¾²Ì¬¹²Ïí×ÊÔ´£¬ËüÊÇ HashMap ÀàÐÍ£¬ÔÚ¶àÏß³ÌÇé¿öÏ»ᵼÖÂÆäÄÚ²¿Á´±íÐγɻ·Ðνṹ£¬³öÏÖËÀÑ­»·¡£

ͨ¹ý¶Ôǰ¶Ë Nginx µÄÁ¬½ÓºÍ·ÃÎÊÈÕÖ¾¿ÉÒÔ¿´µ½£¬ÓÉÓÚÔÚÏµÍ³ÖØÆôºó Nginx »ýÔÜÁË´óÁ¿µÄÓû§ÇëÇó£¬ÔÚ Resin ÈÝÆ÷Æô¶¯£¬´óÁ¿Óû§ÇëÇóÓ¿ÈëÓ¦ÓÃϵͳ£¬¶à¸öÓû§Í¬Ê±½øÐÐÍøÕ¾Êý¾ÝµÄÇëÇóºÍ³õʼ»¯¹¤×÷£¬µ¼Ö HashMap ³öÏÖ²¢·¢ÎÊÌâ¡£ÔÚ¶¨Î»¹ÊÕÏÔ­Òòºó½â¾ö·½·¨Ôò±È½Ï¼òµ¥£¬Ö÷ÒªµÄ½â¾ö·½·¨ÓУº

£¨1£©²ÉÓà ConcurrentHashMap »òÕßͬ²½¿éµÄ·½Ê½½â¾öÉÏÊö²¢·¢ÎÊÌâ;

£¨2£©ÔÚϵͳÆô¶¯Ç°Íê³ÉÍøÕ¾»º´æ¼ÓÔØ£¬È¥³ýÀÁ¼ÓÔØµÈ£»

£¨3£©²ÉÓ÷ֲ¼Ê½»º´æÌæ»»±¾µØ»º´æµÈ¡£

¶ÔÓÚ»µ´úÂëµÄ¶¨Î»£¬³ýÁ˳£¹æÒâÒåÉϵĴúÂëÉó²éÍ⣬½èÖúÖîÈç MAT Ö®ÀàµÄ¹¤¾ßÒ²¿ÉÒÔÔÚÒ»¶¨³Ì¶È¶ÔϵͳÐÔÄÜÆ¿¾±µã½øÐпìËÙ¶¨Î»¡£µ«ÊÇһЩÓëÌØ¶¨³¡¾°°ó¶¨»òÕßÒµÎñÊý¾Ý°ó¶¨µÄÇé¿ö£¬È´ÐèÒª¸¨Öú´úÂë×߲顢ÐÔÄܼì²â¹¤¾ß¡¢Êý¾ÝÄ£ÄâÉõÖÁÏßÉÏÒýÁ÷µÈ·½Ê½²ÅÄÜ×îÖÕÈ·ÈÏÐÔÄÜÎÊÌâµÄ³ö´¦¡£ÒÔÏÂÊÇÎÒÃÇ×ܽáµÄһЩ»µ´úÂë¿ÉÄܵÄÒ»Ð©ÌØÕ÷£¬¹©´ó¼Ò²Î¿¼£º

£¨1£©´úÂë¿É¶ÁÐԲÎÞ»ù±¾±à³Ì¹æ·¶£»

£¨2£©¶ÔÏóÉú³É¹ý¶à»òÉú³É´ó¶ÔÏó£¬ÄÚ´æÐ¹Â¶µÈ£»

£¨3£©IO Á÷²Ù×÷¹ý¶à£¬»òÕßÍü¼Ç¹Ø±Õ£»

£¨4£©Êý¾Ý¿â²Ù×÷¹ý¶à£¬ÊÂÎñ¹ý³¤;

£¨5£©Í¬²½Ê¹Óõij¡¾°´íÎó;

£¨6£©Ñ­»·µü´úºÄʱ²Ù×÷µÈ¡£

Êý¾Ý¿â²ãµ÷ÓÅ£ºËÀËøØ¬ÃÎ

¶ÔÓÚ´ó²¿·Ö Java Ó¦ÓÃÀ´Ëµ£¬ÓëÊý¾Ý¿â½øÐн»»¥µÄ³¡¾°·Ç³£ÆÕ±é£¬ÓÈÆäÊÇ OLTP ÕâÖÖ¶ÔÓÚÊý¾ÝÒ»ÖÂÐÔÒªÇó½Ï¸ßµÄÓ¦Óã¬Êý¾Ý¿âµÄÐÔÄÜ»áÖ±½ÓÓ°Ïìµ½Õû¸öÓ¦ÓõÄÐÔÄÜ¡£Ëѹ·ÉÌҵƽ̨ϵͳ×÷Ϊ¹ã¸æÖ÷µÄ¹ã¸æ·¢²¼ºÍͶ·Åƽ̨£¬¶ÔÆäÎïÁϵÄʵʱÐÔºÍÒ»ÖÂÐÔ¶¼Óм«¸ßµÄÒªÇó£¬ÎÒÃÇÔÚ¹ØÏµÐÍÊý¾Ý¿âÓÅ»¯·½ÃæÒ²»ýÀÛÁËÒ»¶¨µÄ¾­Ñé¡£

¶ÔÓÚ¹ã¸æÎïÁÏ¿âÀ´Ëµ£¬½Ï¸ßµÄ²Ù×÷Ƶ·±¶È£¨ÌرðÊÇͨ¹ýÅúÁ¿ÎïÁϹ¤¾ß²Ù×÷£©ºÜ¼«Ò×Ôì³ÉÊý¾Ý¿âµÄËÀËøÇé¿ö·¢Éú£¬ÆäÖÐÒ»¸ö±È½ÏµäÐ͵ij¡¾°ÊÇ¹ã¸æÎïÁϵ÷¼Û¡£¿Í»§ÍùÍù»áƵ·±µÄ¶ÔÎïÁϵijö¼Û½øÐе÷Õû£¬´Ó¶ø¼ä½Ó¸øÊý¾Ý¿âϵͳÔì³É½Ï´óµÄ¸ºÔØÑ¹Á¦£¬Ò²¼Ó¾çÁËËÀËø·¢ÉúµÄ¿ÉÄÜÐÔ¡£ÏÂÃæÒÔËѹ·ÉÌҵƽ̨ij¹ã¸æÏµÍ³¹ã¸æÎïÁϵ÷¼ÛµÄ°¸Àý½øÐÐ˵Ã÷¡£

ijÉÌÒµ¹ã¸æÏµÍ³Ä³Ìì·ÃÎÊÁ¿Í»Ôö£¬Ôì³Éϵͳ¸ºÔØÉý¸ßÒÔ¼°Êý¾Ý¿âƵ·±ËÀËø£¬ËÀËøÓï¾äÈçͼ 13 Ëùʾ¡£

ͼ 13. ËÀËøÓï¾ä

ÆäÖУ¬groupdomain ±íÉÏË÷ÒýΪ idx_groupdomain_accountid (accountid)£¬idx_groupdomain_groupid(groupid)£¬primary(groupdomainid) Èý¸öµ¥Ë÷Òý½á¹¹£¬²ÉÓà Mysql innodb ÒýÇæ¡£

´Ë³¡¾°·¢ÉúÔÚ¸üÐÂ×é³ö¼Ûʱ£¬³¡¾°ÖдæÔÚ×Å×é¡¢×éÐÐÒµ£¨groupindus ±í£©ºÍ×éÍøÕ¾£¨groupdomain ±í£©¡£µ±¸üÐÂ×é³ö¼Ûʱ£¬Èô×éÐÐÒµ³ö¼ÛʹÓÃ×é³ö¼Û£¨Í¨¹ý isusegroupprice ±êʾ£¬ÈôΪ 1 ÔòʹÓÃ×é³ö¼Û£©¡£Í¬Ê±Èô×éÍøÕ¾³ö¼ÛʹÓÃ×éÐÐÒµ³ö¼Û£¨Í¨¹ý isuseindusprice ±êʾ£¬ÈôΪ 1 ÔòʹÓÃ×éÐÐÒµ³ö¼Û£©Ê±£¬Ò²ÐèҪͬʱ¸üÐÂÆä×éÍøÕ¾³ö¼Û¡£ÓÉÓÚÿ¸ö×éÏÂÃæ×î´ó¿ÉÒÔÓÐ 3000 ¸öÍøÕ¾£¬Òò´ËÔÚ¸üÐÂ×é³ö¼Ûʱ»á³¤Ê±¼äµÄ¶ÔÏà¹Ø¼Ç¼½øÐÐËø¶¨¡£´ÓÉÏÃæ·¢ÉúËÀËøµÄÎÊÌâ¿ÉÒÔ¿´µ½£¬ÊÂÎñ 1 ºÍÊÂÎñ 2 ¾ùÑ¡ÔñÁË idx_groupdomain_accountid µÄµ¥ÁÐË÷Òý¡£¸ù¾Ý Mysql innodb ÒýÇæ¼ÓËøµÄÌØµã£¬ÔÚÒ»´ÎÊÂÎñÖÐÖ»»áÑ¡ÔñÒ»¸öË÷ÒýʹÓ㬶øÇÒÈç¹ûÒ»µ©Ê¹Óöþ¼¶Ë÷Òý½øÐмÓËøºó£¬»á³¢ÊÔ½«Ö÷¼üË÷Òý½øÐмÓËø¡£½øÒ»²½·ÖÎö¿ÉÖªÊÂÎñ 1 ÔÚÇëÇóÊÂÎñ 2 ³ÖÓеÄidx_groupdomain_accountid¶þ¼¶Ë÷Òý¼ÓËø£¨¼ÓËø·¶Î§¡±space id 5726 page no 8658 n bits 824 index¡±£©£¬µ«ÊÇÊÂÎñ 2 ÒÑ»ñµÃ¸Ã¶þ¼¶Ë÷Òý (¡°space id 5726 page no 8658 n bits 824 index¡±) ÉÏËù¼ÓµÄËø£¬ÔڵȴýÇëÇóËø¶¨Ö÷¼üË÷Òý PRIMARY Ë÷ÒýÉϵÄËø¡£ÓÉÓÚÊÂÎñ 2 µÈ´ýÖ´ÐÐʱ¼ä¹ý³¤»ò³¤Ê±¼ä²»ÊÍ·ÅËø£¬µ¼ÖÂÊÂÎñ 1 ×îÖÕ·¢Éú»Ø¹ö¡£

ͨ¹ý¶Ôµ±Ìì·ÃÎÊÈÕÖ¾¸ú×Ù¿ÉÒÔ¿´µ½£¬µ±ÌìÓпͻ§Í¨¹ý½Å±¾·½Ê½·¢Æð´óÁ¿µÄÐÞ¸ÄÍÆ¹ã×é³ö¼ÛµÄ²Ù×÷£¬µ¼ÖÂÓдóÁ¿ÊÂÎñÔÚÑ­»·µÈ´ýǰһ¸öÊÂÎñÊÍ·ÅËø¶¨µÄÖ÷¼ü PRIMARY Ë÷Òý¡£¸ÃÎÊÌâµÄ¸ùԴʵ¼ÊÉÏÔÚÓÚ Mysql innodb ÒýÇæ¶ÔÓÚË÷ÒýÀûÓÃÓÐÏÞ£¬ÔÚ Oracle Êý¾Ý¿âÖдËÎÊÌâ²¢²»Í»³ö¡£½â¾öµÄ·½Ê½×ÔÈ»ÊÇÏ£Íûµ¥¸öÊÂÎñËø¶¨µÄ¼Ç¼ÊýÔ½ÉÙÔ½ºÃ£¬ÕâÑù²úÉúËÀËøµÄ¸ÅÂÊÒ²»á´ó´ó½µµÍ¡£×îÖÕʹÓÃÁË£¨accountid, groupid£©µÄ¸´ºÏË÷Òý£¬ËõСÁ˵¥¸öÊÂÎñËø¶¨µÄ¼Ç¼ÌõÊý£¬Ò²ÊµÏÖÁ˲»Í¬¼Æ»®ÏµÄÍÆ¹ã×éÊý¾Ý¼Ç¼µÄ¸ôÀ룬´Ó¶ø¼õÉÙ¸ÃÀàËÀËøµÄ·¢Éú¼¸ÂÊ¡£

ͨ³£À´Ëµ£¬¶ÔÓÚÊý¾Ý¿â²ãµÄµ÷ÓÅÎÒÃÇ»ù±¾ÉÏ»á´ÓÒÔϼ¸¸ö·½Ãæ³ö·¢£º

£¨1£©ÔÚ SQL Óï¾ä²ãÃæ½øÐÐÓÅ»¯£ºÂý SQL ·ÖÎö¡¢Ë÷Òý·ÖÎöºÍµ÷ÓÅ¡¢ÊÂÎñ²ð·ÖµÈ£»

£¨2£©ÔÚÊý¾Ý¿âÅäÖòãÃæ½øÐÐÓÅ»¯£º±ÈÈç×Ö¶ÎÉè¼Æ¡¢µ÷Õû»º´æ´óС¡¢´ÅÅÌ I/O µÈÊý¾Ý¿â²ÎÊýÓÅ»¯¡¢Êý¾ÝË鯬ÕûÀíµÈ£»

£¨3£©´ÓÊý¾Ý¿â½á¹¹²ãÃæ½øÐÐÓÅ»¯£º¿¼ÂÇÊý¾Ý¿âµÄ´¹Ö±²ð·ÖºÍˮƽ²ð·ÖµÈ£»

£¨4£©Ñ¡ÔñºÏÊʵÄÊý¾Ý¿âÒýÇæ»òÕßÀàÐÍÊÊÓ¦²»Í¬³¡¾°£¬±ÈÈ翼ÂÇÒýÈë NoSQL µÈ¡£

×ܽáÓ뽨Òé

ÐÔÄܵ÷ÓÅͬÑù×ñÑ­ 2-8 Ô­Ôò£¬80%µÄÐÔÄÜÎÊÌâÊÇÓÉ 20%µÄ´úÂë²úÉúµÄ£¬Òò´ËÓÅ»¯¹Ø¼ü´úÂëʰ빦±¶¡£Í¬Ê±£¬¶ÔÐÔÄܵÄÓÅ»¯Òª×öµ½°´ÐèÓÅ»¯£¬¹ý¶ÈÓÅ»¯¿ÉÄÜÒýÈë¸ü¶àÎÊÌâ¡£¶ÔÓÚ Java ÐÔÄÜÓÅ»¯£¬²»½öÒªÀí½âϵͳ¼Ü¹¹¡¢Ó¦ÓôúÂ룬ͬÑùÐèÒª¹Ø×¢ JVM ²ãÉõÖÁ²Ù×÷ϵͳµ×²ã¡£×ܽáÆðÀ´Ö÷Òª¿ÉÒÔ´ÓÒÔϼ¸µã½øÐп¼ÂÇ£º

1£©»ù´¡ÐÔÄܵĵ÷ÓÅ

ÕâÀïµÄ»ù´¡ÐÔÄÜÖ¸µÄÊÇÓ²¼þ²ã¼¶»òÕß²Ù×÷ϵͳ²ã¼¶µÄÉý¼¶ÓÅ»¯£¬±ÈÈçÍøÂçµ÷ÓÅ£¬²Ù×÷ϵͳ°æ±¾Éý¼¶£¬Ó²¼þÉ豸ÓÅ»¯µÈ¡£±ÈÈç F5 µÄʹÓÃºÍ SDD Ó²Å̵ÄÒýÈ룬°üÀ¨Ð°汾 Linux ÔÚ NIO ·½ÃæµÄÉý¼¶£¬¶¼¿ÉÒÔ¼«´óµÄ´Ù½øÓ¦ÓõÄÐÔÄÜÌáÉý£»

2£©Êý¾Ý¿âÐÔÄÜÓÅ»¯

°üÀ¨³£¼ûµÄÊÂÎñ²ð·Ö£¬Ë÷Òýµ÷ÓÅ£¬SQL ÓÅ»¯£¬NoSQL ÒýÈëµÈ£¬±ÈÈçÔÚÊÂÎñ²ð·ÖʱÒýÈëÒì²½»¯´¦Àí£¬×îÖÕ´ïµ½Ò»ÖÂÐÔµÈ×ö·¨µÄÒýÈ룬°üÀ¨ÔÚÕë¶Ô¾ßÌ峡¾°ÒýÈëµÄ¸÷Àà NoSQL Êý¾Ý¿â£¬¶¼¿ÉÒÔ´ó´ó»º½â´«Í³Êý¾Ý¿âÔڸ߲¢·¢ÏµIJ»×㣻

3£©Ó¦Óüܹ¹ÓÅ»¯

ÒýÈëһЩеļÆËã»òÕß´æ´¢¿ò¼Ü£¬ÀûÓÃÐÂÌØÐÔ½â¾öÔ­Óм¯Èº¼ÆËãÐÔÄÜÆ¿¾±µÈ£»»òÕßÒýÈë·Ö²¼Ê½²ßÂÔ£¬ÔÚ¼ÆËãºÍ´æ´¢½øÐÐˮƽ»¯£¬°üÀ¨Ìáǰ¼ÆËãÔ¤´¦ÀíµÈ£¬ÀûÓõäÐ͵Ŀռ任ʱ¼äµÄ×ö·¨µÈ£»¶¼¿ÉÒÔÔÚÒ»¶¨³Ì¶ÈÉϽµµÍϵͳ¸ºÔØ£»

4£©ÒµÎñ²ãÃæµÄÓÅ»¯

¼¼Êõ²¢²»ÊÇÌáÉýϵͳÐÔÄܵÄΨһÊֶΣ¬Ôںܶà³öÏÖÐÔÄÜÎÊÌâµÄ³¡¾°ÖУ¬Æäʵ¿ÉÒÔ¿´µ½ºÜ´óÒ»²¿·Ö¶¼ÊÇÒòÎªÌØÊâµÄÒµÎñ³¡¾°ÒýÆðµÄ£¬Èç¹ûÄÜÔÚÒµÎñÉϽøÐйæ±Ü»òÕßµ÷Õû£¬ÆäʵÍùÍùÊÇ×îÓÐЧµÄ¡£

 
   
1924 ´Îä¯ÀÀ       30
Ïà¹ØÎÄÕÂ

Java΢·þÎñÐÂÉú´úÖ®Nacos
ÉîÈëÀí½âJavaÖеÄÈÝÆ÷
JavaÈÝÆ÷Ïê½â
Java´úÂëÖÊÁ¿¼ì²é¹¤¾ß¼°Ê¹Óð¸Àý
Ïà¹ØÎĵµ

JavaÐÔÄÜÓÅ»¯
Spring¿ò¼Ü
SSM¿ò¼Ü¼òµ¥¼òÉÜ
´ÓÁ㿪ʼѧjava±à³Ì¾­µä
Ïà¹Ø¿Î³Ì

¸ßÐÔÄÜJava±à³ÌÓëϵͳÐÔÄÜÓÅ»¯
JavaEE¼Ü¹¹¡¢ Éè¼ÆÄ£Ê½¼°ÐÔÄܵ÷ÓÅ
Java±à³Ì»ù´¡µ½Ó¦Óÿª·¢
JAVAÐéÄâ»úÔ­ÀíÆÊÎö
×îл¼Æ»®
DeepSeekÔÚÈí¼þ²âÊÔÓ¦ÓÃʵ¼ù 4-12[ÔÚÏß]
DeepSeek´óÄ£ÐÍÓ¦Óÿª·¢Êµ¼ù 4-19[ÔÚÏß]
UAF¼Ü¹¹ÌåϵÓëʵ¼ù 4-11[±±¾©]
AIÖÇÄÜ»¯Èí¼þ²âÊÔ·½·¨Óëʵ¼ù 5-23[ÉϺ£]
»ùÓÚ UML ºÍEA½øÐзÖÎöÉè¼Æ 4-26[±±¾©]
ÒµÎñ¼Ü¹¹Éè¼ÆÓ뽨ģ 4-18[±±¾©]
 
×îÐÂÎÄÕÂ
JavaÐéÄâ»ú¼Ü¹¹
JVM¡ª¡ªJavaÐéÄâ»ú¼Ü¹¹
JavaÈÝÆ÷Ïê½â
Java½ø½×--ÉîÈëÀí½âArrayListʵÏÖÔ­Àí
Java²¢·¢ÈÝÆ÷£¬µ×²ãÔ­ÀíÉîÈë·ÖÎö
×îпγÌ
java±à³Ì»ù´¡µ½Ó¦Óÿª·¢
JavaEE¼Ü¹¹¡¢ Éè¼ÆÄ£Ê½¼°ÐÔÄܵ÷ÓÅ
¸ßÐÔÄÜJava±à³ÌÓëϵͳÐÔÄÜÓÅ»¯
SpringBoot&Cloud¡¢JavaSSM¿ò¼Ü
Spring Boot Åàѵ
³É¹¦°¸Àý
¹úÄÚÖªÃûÒøÐÐ Spring+SpringBoot+Cloud+MVC
±±¾© Java±à³Ì»ù´¡ÓëÍøÒ³¿ª·¢»ù´¡
±±¾© Struts+Spring
»ªÏÄ»ù½ð ActiveMQ Ô­Àí
ijÃñº½¹« Java»ù´¡±à³Ìµ½Ó¦Óÿª·¢