±à¼ÍƼö: |
±¾ÎÄͨ¹ý±ÊÕ߸öÈ˾Ñ飬½«
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£©ÒµÎñ²ãÃæµÄÓÅ»¯
¼¼Êõ²¢²»ÊÇÌáÉýϵͳÐÔÄܵÄΨһÊֶΣ¬Ôںܶà³öÏÖÐÔÄÜÎÊÌâµÄ³¡¾°ÖУ¬Æäʵ¿ÉÒÔ¿´µ½ºÜ´óÒ»²¿·Ö¶¼ÊÇÒòÎªÌØÊâµÄÒµÎñ³¡¾°ÒýÆðµÄ£¬Èç¹ûÄÜÔÚÒµÎñÉϽøÐйæ±Ü»òÕßµ÷Õû£¬ÆäʵÍùÍùÊÇ×îÓÐЧµÄ¡£ |