Ê×Ò³
ѧϰ
»î¶¯
רÇø
¹¤¾ß
TVP
·¢²¼
¾«Ñ¡ÄÚÈÝ/¼¼ÊõÉçȺ/ÓŻݲúÆ·,¾¡ÔÚС³ÌÐò
Á¢¼´Ç°Íù

¿ª·¢µ¼ÖµÄÄÚ´æй©ÎÊÌ⣬ÕâÑùÅŲ鲻±³¹ø

ÓÉÀ´

ǰЩÈÕ×ÓС×éÄÚ°²ÅÅÖµ°à£¬ÂÖÁ÷¿´¹ËÎÒÃǵķþÎñ£¬Ö÷Òª×öһЩ±¨¾¯Óʼþ´¦Àí¡¢Bug ÅŲ顢ÔËÓª issue ´¦ÀíµÄÊ¡£¹¤×÷ÈÕ»¹ºÃ£¬ÎÞÂÛ¸Éʲô¶¼ÒªÉÏ°àµÄ£¬ÈôÊÇÂÖµ½ÖÜÄ©£¬ÄÇÕâÒ»ÌìËãÊÇ»ÙÁË¡£

²»ÖªµÀÊǹ«Ë¾ÍøÂç¹ãÁ˾ÍÕâÑù»¹ÊÇÍøÂçÔËά×é²»¸øÁ¦£¬ÍøÂç×ÜÓÐÎÊÌ⣬²»ÊÇÕâ±ß½»»»»úÍÑÍøÁ˾ÍÊÇÄDZß·ÓÉÆ÷»µÁË£¬»¹Å¼·¢µØ¸÷ÖÖ³¬Ê±£¬¶øÎÒÃÇÁéÃôµØ·þÎñ̽²â·þÎñ×ÜÄÜ׼ȷµØץסżÏÖµÄСÎÊÌ⣬¸øÃÀºÃµÄ¹¤×÷¼ÓµãÁÏ¡£ºÃ¼¸´ÎÖµ°à×éµÄС»ï°éÃÇÒ»ÆðͲۣ¬ÉÌÁ¿×ÅÔõô±Ü¹ý·þÎñ±£»î»úÖÆ£¬ÍµÍµÍ£ÁË̽²â·þÎñ¶ø²»ÈÃÈË·¢ÏÖ£¨ËäȻҲ²¢²»¸Ò£©¡£

ǰЩÌìÎÒ¾ÍÔÚÖÜÄ©´¦ÀíÁËÒ»´Î̽²â·þÎñµÄ¹ø¡£

ÎÊÌâ

ÍøÂçÎÊÌ⣿

ÍíÉÏÆßµã¶à¿ªÊ¼£¬ÎҾͿªÊ¼²»Í£µØÊÕµ½±¨¾¯Óʼþ£¬ÓʼþÏÔʾ̽²âµÄ¼¸¸ö½Ó¿ÚÓг¬Ê±Çé¿ö¡£¶àÊýÖ´ÐÐÕ»¶¼ÔÚ£º

´úÂëÓïÑÔ£ºjavascript
¸´ÖÆ
java.io.BufferedReader.readLine(BufferedReader.java:371)??java.io.BufferedReader.readLine(BufferReader.java:389)??java_io_BufferedReader$readLine.call(Unknown?Source)??com.domain.detect.http.HttpClient.getResponse(HttpClient.groovy:122)??com.domain.detect.http.HttpClient.this$2$getResponse(HttpClient.groovy)?

Õâ¸öÏß³ÌÕ»µÄ±¨´íÎÒ¼ûµÃ¶àÁË£¬ÎÒÃÇÉèÖÃµÄ HTTP DNS ³¬Ê±ÊÇ1s£¬ connect ³¬Ê±ÊÇ?2s£¬ read ³¬Ê±ÊÇ?3s£¬ÕâÖÖ±¨´í¶¼ÊÇ̽²â·þÎñÕý³£·¢ËÍÁË HTTP ÇëÇ󣬷þÎñÆ÷Ò²ÔÚÊÕµ½ÇëÇóÕý³£´¦ÀíºóÕý³£ÏìÓ¦ÁË£¬µ«Êý¾Ý°üÔÚÍøÂç²ã²ãת·¢ÖжªÊ§ÁË£¬ËùÒÔÇëÇóÏ̵߳ÄÖ´ÐÐÕ»»áÍ£ÁôÔÚ»ñÈ¡½Ó¿ÚÏìÓ¦µÄµØ·½¡£

ÕâÖÖÇé¿öµÄµäÐÍÌØÕ÷¾ÍÊÇÄÜÔÚ·þÎñÆ÷ÉϲéÕÒµ½¶ÔÓ¦µÄÈÕÖ¾¼Ç¼¡£¶øÇÒÈÕÖ¾»áÏÔʾ·þÎñÆ÷ÏìÓ¦ÍêÈ«Õý³£¡£ÓëËüÏà¶ÔµÄ»¹ÓÐÏß³ÌջͣÁôÔÚ Socket connect ´¦µÄ£¬ÕâÊÇÔÚ½¨Á¬Ê±¾Íʧ°ÜÁË£¬·þÎñ¶ËÍêÈ«ÎÞ¸ÐÖª¡£

ÎÒ×¢Òâµ½ÆäÖÐÒ»¸ö½Ó¿Ú±¨´í¸üƵ·±Ò»Ð©£¬Õâ¸ö½Ó¿ÚÐèÒªÉÏ´«Ò»¸ö 4M µÄÎļþµ½·þÎñÆ÷£¬È»ºó¾­¹ýÒ»Á¬´®µÄÒµÎñÂß¼­´¦Àí£¬ÔÙ·µ»Ø 2M µÄÎı¾Êý¾Ý£¬¶øÆäËûµÄ½Ó¿ÚÔòÊǼòµ¥µÄÒµÎñÂß¼­£¬ÎҲ²â¿ÉÄÜÊÇÐèÒªÉÏ´«ÏÂÔصÄÊý¾ÝÌ«¶à£¬ËùÒÔ³¬Ê±µ¼Ö¶ª°üµÄ¸ÅÂÊÒ²¸ü´ó°É¡£

¸ù¾ÝÕâ¸ö²ÂÏ룬ȺµÇÉÏ·þÎñÆ÷£¬Ê¹ÓÃÇëÇóµÄ request_id ÔÚ½üÆÚ·þÎñÈÕÖ¾ÖÐËÑË÷һϣ¬¹û²»ÆäÈ»£¬¾ÍÊÇÍøÂ綪°üÎÊÌâµ¼ÖµĽӿڳ¬Ê±ÁË¡£

µ±È»ÕâÑù leader ÊDz»»áÂúÒâµÄ£¬Õâ¸ö½áÂÛ»¹µÃÓÐÈ˽ӹø²ÅÐС£ÓÚÊǸϽôÁªÏµÔËάºÍÍøÂç×飬ÏòËûÃÇÈ·ÈÏһϵ±Ê±µÄÍøÂç״̬¡£ÍøÂç×éͬѧ»Ø¸´ËµÊÇÎÒÃÇ̽²â·þÎñËùÔÚ»ú·¿µÄ½»»»»úÀϾɣ¬´æÔÚδ֪µÄת·¢Æ¿¾±£¬ÕýÔÚÓÅ»¯£¬ÕâÈÃÎÒ¸ü·ÅÐÄÁË£¬ÓÚÊÇÔÚ²¿ÃÅȺÀï¼òµ¥½»´ýһϣ¬ËãÊÇÍê³ÉÈÎÎñ¡£

ÎÊÌⱬ·¢

±¾ÒÔΪÕâ´ÎÖµ°à¾ÍÆðÕâôһ¸öС²¨ÀË£¬½á¹ûÔÚÍíÉϰ˵ã¶à£¬¸÷Öֽӿڵı¨¾¯Óʼþ·äÓµ¶øÖÁ£¬´òµÃ×¼±¸ÊÕÊ°¶«Î÷¹ýÖÜÈÕµ¥ÐݵÄÎÒ´ëÊÖ²»¼°¡£

Õâ´Î¼¸ºõËùÓеĽӿڶ¼ÔÚ³¬Ê±£¬¶øÎÒÃÇÄǸö´óÁ¿ÍøÂç I/O µÄ½Ó¿ÚÔòÊÇÿ´Î̽²â±Ø³¬Ê±£¬ÄѵÀÊÇÕû¸ö»ú·¿¹ÊÕÏÁËô¡£

ÎÒÔÙ´Îͨ¹ý·þÎñÆ÷ºÍ¼à¿Ø¿´µ½¸÷¸ö½Ó¿ÚµÄÖ¸±ê¶¼ºÜÕý³££¬×Ô¼º²âÊÔÁËϽӿÚÒ²ÍêÈ« OK£¬¼ÈÈ»²»Ó°ÏìÏßÉÏ·þÎñ£¬ÎÒ×¼±¸ÏÈͨ¹ý̽²â·þÎñµÄ½Ó¿Ú°Ñ̽²âÈÎÎñÍ£µôÔÙÂýÂýÅŲ顣

½á¹û¸øÔÝͣ̽²âÈÎÎñµÄ½Ó¿Ú·¢ÇëÇóºÃ¾ÃҲûÓÐÏìÓ¦£¬ÕâʱºòÎÒ²ÅÖªµÀûÕâô¼òµ¥¡£

½â¾ö

ÄÚ´æй©

ÓÚÊǸϿìµÇ½̽²â·þÎñÆ÷£¬Ê×ÏÈÊÇ top free df ÈýÁ¬£¬½á¹û»¹Õæ·¢ÏÖÁËЩÒì³£¡£

ÎÒÃǵÄ̽²â½ø³Ì CPU Õ¼ÓÃÂÊÌرð¸ß£¬´ïµ½ÁË 900%¡£

ÎÒÃÇµÄ Java ½ø³Ì£¬²¢²»×ö´óÁ¿ CPU ÔËË㣬Õý³£Çé¿öÏ£¬CPU Ó¦¸ÃÔÚ 100~200% Ö®¼ä£¬³öÏÖÕâÖÖ CPU ì­ÉýµÄÇé¿ö£¬ÒªÃ´×ßµ½ÁËËÀÑ­»·£¬ÒªÃ´¾ÍÊÇÔÚ×ö´óÁ¿µÄ GC¡£

ʹÓà jstat -gc pid [interval] ÃüÁî²é¿´ÁË java ½ø³ÌµÄ GC ״̬£¬¹ûÈ»£¬FULL GC ´ïµ½ÁËÿÃëÒ»´Î¡£

Õâô¶àµÄ FULL GC£¬Ó¦¸ÃÊÇÄÚ´æй©ûÅÜÁË£¬ÓÚÊÇʹÓà jstack pid > jstack.log ±£´æÁËÏß³ÌÕ»µÄÏÖ³¡£¬Ê¹Óà jmap -dump:format=b,file=heap.log pid ±£´æÁ˶ÑÏÖ³¡£¬È»ºóÖØÆôÁË̽²â·þÎñ£¬±¨¾¯ÓʼþÖÕÓÚÍ£Ö¹ÁË¡£

jstat

jstat ÊÇÒ»¸ö·Ç³£Ç¿´óµÄ JVM ¼à¿Ø¹¤¾ß£¬Ò»°ãÓ÷¨ÊÇ£ºjstat [-options] pid interval

ËüÖ§³ÖµÄ²é¿´ÏîÓУº

  • -class ²é¿´Àà¼ÓÔØÐÅÏ¢
  • -compile ±àÒëͳ¼ÆÐÅÏ¢
  • -gc À¬»ø»ØÊÕÐÅÏ¢
  • -gcXXX ¸÷ÇøÓò GC µÄÏêϸÐÅÏ¢ Èç -gcold

ʹÓÃËü£¬¶Ô¶¨Î» JVM µÄÄÚ´æÎÊÌâºÜÓаïÖú¡£

ÅŲé

ÎÊÌâËäÈ»½â¾öÁË£¬µ«ÎªÁË·ÀÖ¹ËüÔٴη¢Éú£¬»¹ÊÇÒª°Ñ¸ùÔ´¾¾³öÀ´¡£

·ÖÎöÕ»

Õ»µÄ·ÖÎöºÜ¼òµ¥£¬¿´Ò»ÏÂÏß³ÌÊýÊDz»Êǹý¶à£¬¶àÊýÕ»¶¼ÔÚ¸ÉÂï¡£

´úÂëÓïÑÔ£ºjavascript
¸´ÖÆ
>?grep?'java.lang.Thread.State'?jstack.log?|?wc?-l??>?464?

²ÅËÄ°Ù¶àỊ̈߳¬²¢ÎÞÒì³£¡£

´úÂëÓïÑÔ£ºjavascript
¸´ÖÆ
>?grep?-A?1?'java.lang.Thread.State'?jstack.log?|?grep?-v?'java.lang.Thread.State'?|?sort?|?uniq?-c?|sort?-n??10?at?java.lang.Class.forName0(Native?Method)??10?at?java.lang.Object.wait(Native?Method)??16?at?java.lang.ClassLoader.loadClass(ClassLoader.java:404)??44?at?sun.nio.ch.EPollArrayWrapper.epollWait(Native?Method)??344?at?sun.misc.Unsafe.park(Native?Method)?

Ïß³Ì״̬ºÃÏñÒ²ÎÞÒì³££¬½ÓÏÂÀ´·ÖÎö¶ÑÎļþ¡£

ÏÂÔØ¶Ñ dump Îļþ

¶ÑÎļþ¶¼ÊÇһЩ¶þ½øÖÆÊý¾Ý£¬ÔÚÃüÁîÐв鿴·Ç³£Âé·³£¬Java ΪÎÒÃÇÌṩµÄ¹¤¾ß¶¼ÊÇ¿ÉÊÓ»¯µÄ£¬Linux ·þÎñÆ÷ÉÏÓÖû·¨²é¿´£¬ÄÇôÊ×ÏÈÒª°ÑÎļþÏÂÔص½±¾µØ¡£

ÓÉÓÚÎÒÃÇÉèÖõĶÑÄÚ´æΪ 4G£¬ËùÒÔ dump ³öÀ´µÄ¶ÑÎļþÒ²ºÜ´ó£¬ÏÂÔØËüȷʵ·Ç³£·ÑÊ£¬²»¹ýÎÒÃÇ¿ÉÒÔÏȶÔËü½øÐÐÒ»´ÎѹËõ¡£

gzip ÊǸö¹¦ÄܺÜÇ¿´óµÄѹËõÃüÁÌرðÊÇÎÒÃÇ¿ÉÒÔÉèÖà -1 ~ -9 À´Ö¸¶¨ËüµÄѹËõ¼¶±ð£¬Êý¾ÝÔ½´óѹËõ±ÈÂÊÔ½´ó£¬ºÄʱҲ¾ÍÔ½³¤£¬ÍƼöʹÓà -6~7£¬ -9 ʵÔÚÊÇÌ«ÂýÁË£¬ÇÒÊÕÒæ²»´ó£¬ÓÐÕâ¸öѹËõµÄʱ¼ä£¬¶à³öÀ´µÄÎļþÒ²ÏÂÔغÃÁË¡£

ʹÓà MAT ·ÖÎö jvm heap

MAT ÊÇ·ÖÎö Java ¶ÑÄÚ´æµÄÀûÆ÷£¬Ê¹ÓÃËü´ò¿ªÎÒÃǵĶÑÎļþ£¨½«Îļþºó׺¸ÄΪ .hprof£©, Ëü»áÌáʾÎÒÃÇÒª·ÖÎöµÄÖÖÀ࣬¶ÔÓÚÕâ´Î·ÖÎö£¬¹û¶ÏÑ¡Ôñ memory leak suspect¡£

´ÓÉÏÃæµÄ±ýͼÖпÉÒÔ¿´³ö£¬¾ø´ó¶àÊý¶ÑÄڴ涼±»Í¬Ò»¸öÄÚ´æÕ¼ÓÃÁË£¬Ôٲ鿴¶ÑÄÚ´æÏêÇ飬ÏòÉϲã×·ËÝ£¬ºÜ¿ì¾Í·¢ÏÖÁË×ï¿ý»öÊס£

·ÖÎö´úÂë

ÕÒµ½ÄÚ´æй©µÄ¶ÔÏóÁË£¬ÔÚÏîÄ¿ÀïÈ«¾ÖËÑË÷¶ÔÏóÃû£¬ËüÊÇÒ»¸ö Bean ¶ÔÏó£¬È»ºó¶¨Î»µ½ËüµÄÒ»¸öÀàÐÍΪ Map µÄÊôÐÔ¡£

Õâ¸ö Map ¸ù¾ÝÀàÐÍÓà ArrayList ´æ´¢ÁËÿ´Î̽²â½Ó¿ÚÏìÓ¦µÄ½á¹û£¬Ã¿´Î̽²âÍ궼Èûµ½ ArrayList ÀïÈ¥·ÖÎö£¬ÓÉÓÚ Bean ¶ÔÏ󲻻ᱻ»ØÊÕ£¬Õâ¸öÊôÐÔÓÖûÓÐÇå³ýÂß¼­£¬ËùÒÔÔÚ·þÎñÊ®À´ÌìûÓÐÉÏÏßÖØÆôµÄÇé¿öÏ£¬Õâ¸ö Map Ô½À´Ô½´ó£¬Ö±ÖÁ½«ÄÚ´æÕ¼Âú¡£

ÄÚ´æÂúÁËÖ®ºó£¬ÎÞ·¨ÔÙ¸ø HTTP ÏìÓ¦½á¹û·ÖÅäÄÚ´æÁË£¬ËùÒÔÒ»Ö±¿¨ÔÚ readLine ÄÇ¡£¶øÎÒÃÇÄǸö´óÁ¿ I/O µÄ½Ó¿Ú±¨¾¯´ÎÊýÌرð¶à£¬¹À¼Æ¸úÏìӦ̫´óÐèÒª¸ü¶àÄÚ´æÓйء£

¸ø´úÂë owner ÌáÁË PR£¬ÎÊÌâÔ²Âú½â¾ö¡£

С½á

Æäʵ»¹ÊÇÒª·´Ê¡Ò»ÏÂ×Ô¼ºµÄ£¬Ò»¿ªÊ¼±¨¾¯ÓʼþÀﻹÓÐÕâÑùµÄÏß³ÌÕ»£º

´úÂëÓïÑÔ£ºjavascript
¸´ÖÆ
groovy.json.internal.JsonParserCharArray.decodeValueInternal(JsonParserCharArray.java:166)??groovy.json.internal.JsonParserCharArray.decodeJsonObject(JsonParserCharArray.java:132)??groovy.json.internal.JsonParserCharArray.decodeValueInternal(JsonParserCharArray.java:186)??groovy.json.internal.JsonParserCharArray.decodeJsonObject(JsonParserCharArray.java:132)??groovy.json.internal.JsonParserCharArray.decodeValueInternal(JsonParserCharArray.java:186)??

¿´µ½ÕâÖÖ±¨´íÏß³ÌջȴûÓÐϸÏ룬Ҫ֪µÀ TCP ÊÇÄܱ£Ö¤ÏûÏ¢ÍêÕûÐԵģ¬¿öÇÒÏûϢûÓнÓÊÕÍêÒ²²»»á°ÑÖµ¸³¸ø±äÁ¿£¬ÕâÖÖºÜÃ÷ÏÔµÄÊÇÄÚ²¿´íÎó£¬Èç¹ûÁôÒâºóϸ²éÊÇÄÜÌáÇ°²é³öÎÊÌâËùÔڵģ¬²éÎÊÌâÕæÊDzîÁËÄÄÒ»»·¶¼²»Ðа¡¡£

  • ·¢±íÓÚ:
  • Ô­ÎÄÁ´½Ó£ºhttp://news.51cto.com/art/201912/607887.htm
  • ÈçÓÐÇÖȨ£¬ÇëÁªÏµ cloudcommunity@tencent.com ɾ³ý¡£

ɨÂë

Ìí¼ÓÕ¾³¤ ½ø½»Á÷Ⱥ

ÁìȡרÊô 10ÔªÎÞÃż÷ȯ

˽Ïí×îР¼¼Êõ¸É»õ

ɨÂë¼ÓÈ뿪·¢ÕßÉçȺ
Áìȯ
http://www.vxiaotou.com