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

1Ôª 10Ôª 50Ôª





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



  ÇóÖª ÎÄÕ ÎÄ¿â Lib ÊÓÆµ iPerson ¿Î³Ì ÈÏÖ¤ ×Éѯ ¹¤¾ß ½²×ù Model Center   Code  
»áÔ±   
   
 
     
   
 ¶©ÔÄ
  ¾èÖú
TCP³¤Á¬½ÓºÍÐÄÌøÄÇЩÊÂ
 
×÷Õߣºkiritomoe
  2301  次浏览      28
2020-10-15
 
±à¼­ÍƼö:
±¾ÎÄÖ÷ÒªÕë¶Ô΢ÐŽ»Á÷ȺÀïÓÐÈËÌá³öµÄ³¤Á¬½Ó£¬ÐÄÌøµÄÎÊÌ⣬×öÒ»¸öͳһµÄÕûÀí£¬Ï£Íû¶ÔÄúµÄѧϰÓÐËù°ïÖú¡£
±¾ÎÄÀ´×ÔÓÚKiritoµÄ¼¼Êõ·ÖÏí £¬ÓÉ»ðÁú¹ûÈí¼þLinda±à¼­ÍƼö¡£

¿ÉÄܺܶà Java ³ÌÐòÔ±¶Ô TCP µÄÀí½âÖ»ÓÐÒ»¸öÈý´ÎÎÕÊÖ£¬ËĴλÓÊÖµÄÈÏʶ£¬ÎÒ¾õµÃÕâÑùµÄÔ­ÒòÖ÷ÒªÔÚÓÚ TCP ЭÒé±¾ÉíÉÔ΢Óеã³éÏó£¨Ïà±È½ÏÓÚÓ¦ÓòãµÄ HTTP ЭÒ飩£»Æä´Î£¬·Ç¿ò¼Ü¿ª·¢Õß²»Ì«ÐèÒª½Ó´¥µ½ TCP µÄһЩϸ½Ú¡£ÆäʵÎÒ¸öÈË¶Ô TCP µÄºÜ¶àϸ½ÚÒ²²¢Ã»ÓÐÍêÈ«Àí½â£¬ÕâÆªÎÄÕÂÖ÷ÒªÕë¶Ô΢ÐŽ»Á÷ȺÀïÓÐÈËÌá³öµÄ³¤Á¬½Ó£¬ÐÄÌøµÄÎÊÌ⣬×öÒ»¸öͳһµÄÕûÀí¡£

ÔÚ Java ÖУ¬Ê¹Óà TCP ͨÐÅ£¬´ó¸ÅÂÊ»áÉæ¼°µ½ Socket¡¢Netty£¬±¾ÎÄ»á½èÓÃËüÃǵÄһЩ API ºÍÉèÖòÎÊýÀ´¸¨Öú½éÉÜ¡£

³¤Á¬½ÓÓë¶ÌÁ¬½Ó

TCP ±¾Éí²¢Ã»Ó㤶ÌÁ¬½ÓµÄÇø±ð£¬³¤¶ÌÓë·ñ£¬Íêȫȡ¾öÓÚÎÒÃÇÔõôÓÃËü¡£

¶ÌÁ¬½Ó£ºÃ¿´ÎͨÐÅʱ£¬´´½¨ Socket£»Ò»´ÎͨÐŽáÊø£¬µ÷Óà socket.close()¡£Õâ¾ÍÊÇÒ»°ãÒâÒåÉϵĶÌÁ¬½Ó£¬¶ÌÁ¬½ÓµÄºÃ´¦ÊǹÜÀíÆðÀ´±È½Ï¼òµ¥£¬´æÔÚµÄÁ¬½Ó¶¼ÊÇ¿ÉÓõÄÁ¬½Ó£¬²»ÐèÒª¶îÍâµÄ¿ØÖÆÊֶΡ£

³¤Á¬½Ó£ºÃ¿´ÎͨÐÅÍê±Ïºó£¬²»»á¹Ø±ÕÁ¬½Ó£¬ÕâÑù¾Í¿ÉÒÔ×öµ½Á¬½ÓµÄ¸´Óᣳ¤Á¬½ÓµÄºÃ´¦±ãÊÇʡȥÁË´´½¨Á¬½ÓµÄºÄʱ¡£

¶ÌÁ¬½ÓºÍ³¤Á¬½ÓµÄÓÅÊÆ£¬·Ö±ðÊǶԷ½µÄÁÓÊÆ¡£ÏëҪͼ¼òµ¥£¬²»×·Çó¸ßÐÔÄÜ£¬Ê¹ÓöÌÁ¬½ÓºÏÊÊ£¬ÕâÑùÎÒÃǾͲ»ÐèÒª²ÙÐÄÁ¬½Ó״̬µÄ¹ÜÀí£»ÏëҪ׷ÇóÐÔÄÜ£¬Ê¹Óó¤Á¬½Ó£¬ÎÒÃǾÍÐèÒªµ£Ðĸ÷ÖÖÎÊÌ⣺±ÈÈç¶Ë¶Ô¶ËÁ¬½ÓµÄά»¤£¬Á¬½ÓµÄ±£»î¡£

³¤Á¬½Ó»¹³£³£±»ÓÃÀ´×öÊý¾ÝµÄÍÆËÍ£¬ÎÒÃÇ´ó¶àÊýʱºò¶ÔͨÐŵÄÈÏÖª»¹ÊÇ request/response Ä£ÐÍ£¬µ« TCP Ë«¹¤Í¨ÐŵÄÐÔÖʾö¶¨ÁËËü»¹¿ÉÒÔ±»ÓÃÀ´×öË«ÏòͨÐÅ¡£ÔÚ³¤Á¬½Ó֮ϣ¬¿ÉÒԺܷ½±ãµÄʵÏÖ push Ä£ÐÍ¡£

¶ÌÁ¬½ÓûÓÐÌ«¶à¶«Î÷¿ÉÒÔ½²£¬ËùÒÔÏÂÎÄÎÒÃǽ«Ä¿¹â¾Û½¹ÔÚ³¤Á¬½ÓµÄһЩÎÊÌâÉÏ¡£´¿½²ÀíÂÛδÃâÓÐЩ¹ýÓÚµ¥µ÷£¬ËùÒÔÏÂÎÄÎÒ½èÖú Dubbo Õâ¸ö RPC ¿ò¼ÜµÄһЩʵ¼ùÀ´Õ¹¿ª TCP µÄÏà¹ØÌÖÂÛ¡£

·þÎñÖÎÀí¿ò¼ÜÖеij¤Á¬½Ó

Ç°ÃæÒѾ­Ìáµ½¹ý£¬×·ÇóÐÔÄܵÄʱºò£¬±ØÈ»»áÑ¡ÔñʹÓó¤Á¬½Ó£¬ËùÒÔ½èÖú Dubbo ¿ÉÒԺܺõÄÀ´Àí½â TCP¡£ÎÒÃÇ¿ªÆôÁ½¸ö Dubbo Ó¦Óã¬Ò»¸ö server ¸ºÔð¼àÌý±¾µØ 20880£¨ÖÚËùÖÜÖª£¬ÕâÊÇ Dubbo ЭÒéĬÈϵĶ˿ڣ©£¬Ò»¸ö client ¸ºÔðÑ­»··¢ËÍÇëÇó¡£Ö´ÐÐ lsof-i:20880 ÃüÁî¿ÉÒԲ鿴¶Ë¿ÚµÄÏà¹ØÊ¹ÓÃÇé¿ö£º

*:20880(LISTEN) ˵Ã÷ÁË Dubbo ÕýÔÚ¼àÌý±¾µØµÄ 20880 ¶Ë¿Ú£¬´¦Àí·¢Ë͵½±¾µØ 20880 ¶Ë¿ÚµÄÇëÇó

ºóÁ½ÌõÐÅϢ˵Ã÷ÇëÇóµÄ·¢ËÍÇé¿ö£¬ÑéÖ¤ÁË TCP ÊÇÒ»¸öË«ÏòµÄͨÐŹý³Ì£¬ÓÉÓÚÎÒÊÇÔÚͬһ¸ö»úÆ÷¿ªÆôÁËÁ½¸ö Dubbo Ó¦Óã¬ËùÒÔÄãÄܹ»¿´µ½ÊDZ¾µØµÄ 53078 ¶Ë¿ÚÓë 20880 ¶Ë¿ÚÔÚͨÐÅ¡£ÎÒÃDz¢Ã»ÓÐÊÖ¶¯ÉèÖà 53078 Õâ¸ö¿Í»§¶Ë¶Ë¿Ú£¬ËûÊÇËæ»úµÄ£¬µ«Ò²²ûÊÍÁËÒ»¸öµÀÀí£º¼´Ê¹ÊÇ·¢ËÍÇëÇóµÄÒ»·½£¬Ò²ÐèÒªÕ¼ÓÃÒ»¸ö¶Ë¿Ú¡£

ÉÔ΢˵һÏ FD Õâ¸ö²ÎÊý£¬Ëû´ú±íÁËÎļþ¾ä±ú£¬Ã¿ÐÂÔöÒ»ÌõÁ¬½Ó¶¼»áÕ¼ÓÃеÄÎļþ¾ä±ú£¬Èç¹ûÄãÔÚʹÓà TCP ͨÐŵĹý³ÌÖгöÏÖÁË open too many files µÄÒì³££¬ÄǾÍÓ¦¸Ã¼ì²éһϣ¬ÄãÊDz»ÊÇ´´½¨ÁËÌ«¶àµÄÁ¬½Ó£¬¶øÃ»Óйرա£Ï¸ÐĵĶÁÕßÒ²»áÁªÏëµ½³¤Á¬½ÓµÄÁíÒ»¸öºÃ´¦£¬ÄǾÍÊÇ»áÕ¼ÓýÏÉÙµÄÎļþ¾ä±ú¡£

³¤Á¬½ÓµÄά»¤

ÒòΪ¿Í»§¶ËÇëÇóµÄ·þÎñ¿ÉÄÜ·Ö²¼ÔÚ¶à¸ö·þÎñÆ÷ÉÏ£¬¿Í»§¶Ë¶Ë×ÔÈ»ÐèÒª¸ú¶Ô¶Ë´´½¨¶àÌõ³¤Á¬½Ó£¬Ê¹Óó¤Á¬½Ó£¬ÎÒÃÇÓöµ½µÄµÚÒ»¸öÎÊÌâ¾ÍÊÇÒªÈçºÎά»¤³¤Á¬½Ó¡£

//¿Í»§¶Ë
public class NettyHandler extends SimpleChannelHandler {
private final Map< String , Channel> channels = new ConcurrentHashMap< String ,Channel >(); // <ip:port, channel>
}
//·þÎñ¶Ë
public class NettyServer extends AbstractServer implements Server{private Map < String , Channel> channels ; // <ip:port, channel>
}

ÔÚ Dubbo ÖУ¬¿Í»§¶ËºÍ·þÎñ¶Ë¶¼Ê¹Óà ip:port ά»¤Á˶˶Զ˵ij¤Á¬½Ó£¬Channel ±ãÊǶÔÁ¬½ÓµÄ³éÏó¡£ÎÒÃÇÖ÷Òª¹Ø×¢ NettyHandler Öеij¤Á¬½Ó£¬·þÎñ¶Ëͬʱά»¤Ò»¸ö³¤Á¬½ÓµÄ¼¯ºÏÊÇ Dubbo µÄÉè¼Æ£¬ÎÒÃǽ«ÔÚºóÃæÌáµ½¡£

Á¬½ÓµÄ±£»î

Õâ¸ö»°Ìâ¾ÍÓеÄÁÄÁË£¬»áÇ£³¶µ½±È½Ï¶àµÄ֪ʶµã¡£Ê×ÏÈÐèÒªÃ÷È·Ò»µã£¬ÎªÊ²Ã´ÐèÒªÁ¬½ÓµÄ±¨»î£¿µ±Ë«·½ÒѾ­½¨Á¢ÁËÁ¬½Ó£¬µ«ÒòÎªÍøÂçÎÊÌ⣬Á´Â·²»Í¨£¬ÕâÑù³¤Á¬½Ó¾Í²»ÄÜʹÓÃÁË¡£ÐèÒªÃ÷È·µÄÒ»µãÊÇ£¬Í¨¹ý netstat£¬lsof µÈÖ¸Áî²é¿´µ½Á¬½ÓµÄ״̬´¦ÓÚ ESTABLISHED ״̬²¢²»ÊÇÒ»¼þ·Ç³£¿¿Æ×µÄÊ£¬ÒòΪÁ¬½Ó¿ÉÄÜÒÑËÀ£¬µ«Ã»Óб»ÏµÍ³¸ÐÖªµ½£¬¸ü²»ÓÃÌá¼ÙËÀÕâÖÖÒÉÄÑÔÓÖ¢ÁË¡£Èç¹û±£Ö¤³¤Á¬½Ó¿ÉÓÃÊÇÒ»¼þ¼¼Êõ»î¡£

Á¬½ÓµÄ±£»î£ºKeepAlive

Ê×ÏÈÏëµ½µÄÊÇ TCP ÖÐµÄ KeepAlive »úÖÆ¡£KeepAlive ²¢²»ÊÇ TCP ЭÒéµÄÒ»²¿·Ö£¬µ«ÊÇ´ó¶àÊý²Ù×÷ϵͳ¶¼ÊµÏÖÁËÕâ¸ö»úÖÆ¡£KeepAlive »úÖÆ¿ªÆôºó£¬ÔÚÒ»¶¨Ê±¼äÄÚ£¨Ò»°ãʱ¼äΪ 7200s£¬²ÎÊý tcp_keepalive_time£©ÔÚÁ´Â·ÉÏûÓÐÊý¾Ý´«Ë͵ÄÇé¿öÏ£¬TCP ²ã½«·¢ËÍÏàÓ¦µÄKeepAlive̽ÕëÒÔÈ·¶¨Á¬½Ó¿ÉÓÃÐÔ£¬Ì½²âʧ°ÜºóÖØÊÔ 10£¨²ÎÊý tcp_keepalive_probes£©´Î£¬Ã¿´Î¼ä¸ôʱ¼ä 75s£¨²ÎÊý tcp_keepalive_intvl£©£¬ËùÓÐ̽²âʧ°Üºó£¬²ÅÈÏΪµ±Ç°Á¬½ÓÒѾ­²»¿ÉÓá£

ÔÚ Netty ÖпªÆô KeepAlive£º

bootstrap.option ( ChannelOption .TCP_NODELAY , true )

Linux ²Ù×÷ϵͳÖÐÉèÖà KeepAlive Ïà¹Ø²ÎÊý£¬ÐÞ¸Ä /etc/sysctl.conf Îļþ£º

net.ipv4.tcp_keepalive_time=90
net.ipv4.tcp_keepalive_intvl=15
net.ipv4.tcp_keepalive_probes=2

KeepAlive »úÖÆÊÇÔÚÍøÂç²ãÃæ±£Ö¤ÁËÁ¬½ÓµÄ¿ÉÓÃÐÔ£¬µ«Õ¾ÔÚÓ¦Óÿò¼Ü²ãÃæÎÒÃÇÈÏΪÕ⻹²»¹»¡£Ö÷ÒªÌåÏÖÔÚÁ½¸ö·½Ã棺

KeepAlive µÄ¿ª¹ØÊÇÔÚÓ¦Óò㿪ÆôµÄ£¬µ«ÊǾßÌå²ÎÊý£¨ÈçÖØÊÔ²âÊÔ£¬ÖØÊÔ¼ä¸ôʱ¼ä£©µÄÉèÖÃÈ´ÊDzÙ×÷ϵͳ¼¶±ðµÄ£¬Î»ÓÚ²Ù×÷ϵͳµÄ /etc/sysctl.conf ÅäÖÃÖУ¬Õâ¶ÔÓÚÓ¦ÓÃÀ´Ëµ²»¹»Áé»î¡£

KeepAlive µÄ±£»î»úÖÆÖ»ÔÚÁ´Â·¿ÕÏеÄÇé¿öϲŻáÆðµ½×÷Ó㬼ÙÈç´ËʱÓÐÊý¾Ý·¢ËÍ£¬ÇÒÎïÀíÁ´Â·ÒѾ­²»Í¨£¬²Ù×÷ϵͳÕâ±ßµÄÁ´Â·×´Ì¬»¹ÊÇ ESTABLISHED£¬Õâʱ»á·¢Éúʲô£¿×ÔÈ»»á×ß TCP ÖØ´«»úÖÆ£¬ÒªÖªµÀĬÈ쵀 TCP ³¬Ê±ÖØ´«£¬Ö¸ÊýÍ˱ÜËã·¨Ò²ÊÇÒ»¸öÏ൱³¤µÄ¹ý³Ì¡£

KeepAlive ±¾ÉíÊÇÃæÏòÍøÂçµÄ£¬²¢²»ÊÇÃæÏòÓÚÓ¦Óõ쬵±Á¬½Ó²»¿ÉÓÃʱ£¬¿ÉÄÜÊÇÓÉÓÚÓ¦Óñ¾Éí GC ÎÊÌ⣬ϵͳ load ¸ßµÈÇé¿ö£¬µ«ÍøÂçÈÔÈ»ÊÇͨµÄ£¬´Ëʱ£¬Ó¦ÓÃÒѾ­Ê§È¥ÁË»îÐÔ£¬ËùÒÔÁ¬½Ó×ÔȻӦ¸ÃÈÏΪÊDz»¿ÉÓõġ£

¿´À´£¬Ó¦ÓòãÃæµÄÁ¬½Ó±£»î»¹ÊDZØÐëÒª×öµÄ¡£

Á¬½ÓµÄ±£»î£ºÓ¦ÓòãÐÄÌø

ÖÕÓÚµãÌâÁË£¬ÎÄÌâÖÐÌáµ½µÄÐÄÌø±ãÊÇÒ»¸ö±¾ÎÄÏëÒªÖØµãÇ¿µ÷µÄÁíÒ»¸ö TCP Ïà¹ØµÄ֪ʶµã¡£ÉÏÒ»½ÚÎÒÃÇÒѾ­½âÊ͹ýÁË£¬ÍøÂç²ãÃæµÄ KeepAlive ²»×ãÒÔÖ§³ÅÓ¦Óü¶±ðµÄÁ¬½Ó¿ÉÓÃÐÔ£¬±¾½Ú¾ÍÀ´ÁÄÁÄÓ¦ÓòãµÄÐÄÌø»úÖÆÊÇʵÏÖÁ¬½Ó±£»îµÄ¡£

ÈçºÎÀí½âÓ¦ÓòãµÄÐÄÌø£¿¼òµ¥À´Ëµ£¬¾ÍÊǿͻ§¶Ë»á¿ªÆôÒ»¸ö¶¨Ê±ÈÎÎñ£¬¶¨Ê±¶ÔÒѾ­½¨Á¢Á¬½ÓµÄ¶Ô¶ËÓ¦Ó÷¢ËÍÇëÇó£¨ÕâÀïµÄÇëÇóÊÇÌØÊâµÄÐÄÌøÇëÇ󣩣¬·þÎñ¶ËÔòÐèÒªÌØÊâ´¦Àí¸ÃÇëÇ󣬷µ»ØÏìÓ¦¡£Èç¹ûÐÄÌø³ÖÐø¶à´ÎûÓÐÊÕµ½ÏìÓ¦£¬¿Í»§¶Ë»áÈÏΪÁ¬½Ó²»¿ÉÓã¬Ö÷¶¯¶Ï¿ªÁ¬½Ó¡£²»Í¬µÄ·þÎñÖÎÀí¿ò¼Ü¶ÔÐÄÌø£¬½¨Á¬£¬¶ÏÁ¬£¬À­ºÚµÄ»úÖÆÓв»Í¬µÄ²ßÂÔ£¬µ«´ó¶àÊýµÄ·þÎñÖÎÀí¿ò¼Ü¶¼»áÔÚÓ¦Óòã×öÐÄÌø£¬Dubbo Ò²²»ÀýÍâ¡£

Ó¦ÓòãÐÄÌøµÄÉè¼ÆÏ¸½Ú

ÒÔ Dubbo ΪÀý£¬Ö§³ÖÓ¦ÓòãµÄÐÄÌø£¬¿Í»§¶ËºÍ·þÎñ¶Ë¶¼»á¿ªÆôÒ»¸ö HeartBeatTask£¬¿Í»§¶ËÔÚ HeaderExchangeClient ÖпªÆô£¬·þÎñ¶Ë½«ÔÚ HeaderExchangeServer ¿ªÆô¡£ÎÄÕ¿ªÍ·ÂñÁËÒ»¸ö¿Ó£ºDubbo ΪʲôÔÚ·þÎñ¶Ëͬʱά»¤ Map<String,Channel> ÄØ£¿Ö÷Òª¾ÍÊÇΪÁ˸øÐÄÌø×ö¹±Ï×£¬ÐÄÌø¶¨Ê±ÈÎÎñÔÚ·¢ÏÖÁ¬½Ó²»¿ÉÓÃʱ£¬»á¸ù¾Ýµ±Ç°Êǿͻ§¶Ë»¹ÊÇ·þÎñ¶Ë×ß²»Í¬µÄ·ÖÖ§£¬¿Í»§¶Ë·¢ÏÖ²»¿ÉÓã¬ÊÇÖØÁ¬£»·þÎñ¶Ë·¢ÏÖ²»¿ÉÓã¬ÊÇÖ±½Ó close¡£

// HeartBeatTask
if(channel instanceof Client) {
((Client)channel).reconnect();
} else {
channel.close();
}

ÊìϤÆäËû RPC ¿ò¼ÜµÄͬѧ»á·¢ÏÖ£¬²»Í¬¿ò¼ÜµÄÐÄÌø»úÖÆÕæµÄÊDzî¾à·Ç³£´ó¡£ÐÄÌøÉè¼Æ»¹¸úÁ¬½Ó´´½¨£¬ÖØÁ¬»úÖÆ£¬ºÚÃûµ¥Á¬½ÓÏà¹Ø£¬»¹ÐèÒª¾ßÌå¿ò¼Ü¾ßÌå·ÖÎö¡£

³ýÁ˶¨Ê±ÈÎÎñµÄÉè¼Æ£¬»¹ÐèÒªÔÚЭÒé²ãÃæÖ§³ÖÐÄÌø¡£×î¼òµ¥µÄÀý×Ó¿ÉÒԲο¼ nginx µÄ½¡¿µ¼ì²é£¬¶øÕë¶Ô Dubbo ЭÒ飬×ÔȻҲÐèÒª×öÐÄÌøµÄÖ§³Ö£¬Èç¹û½«ÐÄÌøÇëÇóʶ±ðΪÕý³£Á÷Á¿£¬»áÔì³É·þÎñ¶ËµÄѹÁ¦ÎÊÌ⣬¸ÉÈÅÏÞÁ÷µÈÖî¶àÎÊÌâ¡£

ÆäÖÐ Flag ´ú±íÁË Dubbo ЭÒéµÄ±ê־룬һ¹² 8 ¸öµØÖ·Î»¡£µÍËÄλÓÃÀ´±íʾÏûÏ¢ÌåÊý¾ÝÓõÄÐòÁл¯¹¤¾ßµÄÀàÐÍ£¨Ä¬ÈÏ hessian£©£¬¸ßËÄλÖУ¬µÚһλΪ1±íʾÊÇ request ÇëÇ󣬵ڶþλΪ 1 ±íʾ˫Ïò´«Ê䣨¼´Óзµ»Øresponse£©£¬µÚÈýλΪ 1 ±íʾÊÇÐÄÌøÊ¼þ¡£

ÐÄÌøÇëÇóÓ¦µ±ºÍÆÕͨÇëÇóÇø±ð¶Ô´ý¡£

×¢ÒâºÍ HTTP µÄ KeepAlive Çø±ð¶Ô´ý

HTTP ЭÒéµÄ KeepAlive ÒâͼÔÚÓÚÁ¬½Ó¸´Óã¬Í¬Ò»¸öÁ¬½ÓÉÏ´®Ðз½Ê½´«µÝÇëÇó-ÏìÓ¦Êý¾Ý

TCP µÄ KeepAlive »úÖÆÒâͼÔÚÓÚ±£»î¡¢ÐÄÌø£¬¼ì²âÁ¬½Ó´íÎó¡£

Õâѹ¸ùÊÇÁ½¸ö¸ÅÄî¡£

KeepAlive ³£¼ûÒì³£

ÆôÓà TCP KeepAlive µÄÓ¦ÓóÌÐò£¬Ò»°ã¿ÉÒÔ²¶»ñµ½ÏÂÃæ¼¸ÖÖÀàÐÍ´íÎó

ETIMEOUT ³¬Ê±´íÎó£¬ÔÚ·¢ËÍÒ»¸ö̽²â±£»¤°ü¾­¹ý (tcpkeepalivetime + tcpkeepaliveintvl * tcpkeepaliveprobes)ʱ¼äºóÈÔȻûÓнÓÊÕµ½ ACK È·ÈÏÇé¿öÏ´¥·¢µÄÒì³££¬Ì×½Ó×Ö±»¹Ø±Õ java java.io.IOException:Connectiontimedout

EHOSTUNREACH host unreachable(Ö÷»ú²»¿É´ï)´íÎó£¬Õâ¸öÓ¦¸ÃÊÇ ICMP »ã±¨¸øÉϲãÓ¦Óõġ£ java java.io.IOException:Noroute to host

Á´½Ó±»ÖØÖã¬ÖÕ¶Ë¿ÉÄܱÀÀ£ËÀ»úÖØÆôÖ®ºó£¬½ÓÊÕµ½À´×Ô·þÎñÆ÷µÄ±¨ÎÄ£¬È»ÎïÊÇÈË·Ç£¬Ç°³¯ÍùÊ£¬Ö»Äܱ¨ÒÔÎÞÄÎÖØÖÃÐû¸æÖ®¡£ java java.io.IOException:Connectionresetbypeer

×ܽá

ÓÐÈýÖÖʹÓà KeepAlive µÄʵ¼ù·½°¸£º

ĬÈÏÇé¿öÏÂʹÓà KeepAlive ÖÜÆÚΪ 2 ¸öСʱ£¬È粻ѡÔñ¸ü¸Ä£¬ÊôÓÚÎóÓ÷¶³ë£¬Ôì³É×ÊÔ´ÀË·Ñ£ºÄں˻áΪÿһ¸öÁ¬½Ó¶¼´ò¿ªÒ»¸ö±£»î¼ÆÊ±Æ÷£¬N ¸öÁ¬½Ó»á´ò¿ª N ¸ö±£»î¼ÆÊ±Æ÷¡£ ÓÅÊÆºÜÃ÷ÏÔ£º

TCP ЭÒé²ãÃæ±£»î̽²â»úÖÆ£¬ÏµÍ³ÄÚºËÍêÈ«ÌæÉϲãÓ¦ÓÃ×Ô¶¯¸ø×öºÃÁË

Äں˲ãÃæ¼ÆÊ±Æ÷Ïà±ÈÉϲãÓ¦Ó㬸üΪ¸ßЧ

ÉϲãÓ¦ÓÃÖ»ÐèÒª´¦ÀíÊý¾ÝÊÕ·¢¡¢Á¬½ÓÒ쳣֪ͨ¼´¿É

Êý¾Ý°ü½«¸üΪ½ô´Õ

¹Ø±Õ TCP µÄ KeepAlive£¬ÍêȫʹÓÃÓ¦ÓòãÐÄÌø±£»î»úÖÆ¡£ÓÉÓ¦ÓÃÕÆ¹ÜÐÄÌø£¬¸üÁé»î¿É¿Ø£¬±ÈÈç¿ÉÒÔÔÚÓ¦Óü¶±ðÉèÖÃÐÄÌøÖÜÆÚ£¬ÊÊÅä˽ÓÐЭÒé¡£

ÒµÎñÐÄÌø + TCP KeepAlive Ò»ÆðʹÓ㬻¥Ïà×÷Ϊ²¹³ä£¬µ« TCP ±£»î̽²âÖÜÆÚºÍÓ¦ÓõÄÐÄÌøÖÜÆÚҪЭµ÷£¬ÒÔ»¥²¹·½¿É£¬²»Äܹ»²î¾à¹ý´ó£¬·ñÔò½«´ï²»µ½ÉèÏëµÄЧ¹û¡£

¸÷¸ö¿ò¼ÜµÄÉè¼Æ¶¼ÓÐËù²»Í¬£¬ÀýÈç Dubbo ʹÓõÄÊÇ·½°¸Èý£¬µ«°¢ÀïÄÚ²¿µÄ HSF ¿ò¼ÜÔòûÓÐÉèÖà TCP µÄ KeepAlive£¬½ö½öÓÉÓ¦ÓÃÐÄÌø±£»î¡£ºÍÐÄÌø²ßÂÔÒ»Ñù£¬ÕâºÍ¿ò¼ÜÕûÌåµÄÉè¼ÆÏà¹Ø¡£

 

   
2301 ´Îä¯ÀÀ       28
????

HTTP????
nginx??????
SD-WAN???
5G?????
 
????

??????????
IPv6???????
??????????
???????
????

????????
????????
???????????????
??????????
×îл¼Æ»®
DeepSeek´óÄ£ÐÍÓ¦Óÿª·¢ 6-12[ÏÃÃÅ]
È˹¤ÖÇÄÜ.»úÆ÷ѧϰTensorFlow 6-22[Ö±²¥]
»ùÓÚ UML ºÍEA½øÐзÖÎöÉè¼Æ 6-30[±±¾©]
ǶÈëʽÈí¼þ¼Ü¹¹-¸ß¼¶Êµ¼ù 7-9[±±¾©]
Óû§ÌåÑé¡¢Ò×ÓÃÐÔ²âÊÔÓëÆÀ¹À 7-25[Î÷°²]
ͼÊý¾Ý¿âÓë֪ʶͼÆ× 8-23[±±¾©]
 
×îÐÂÎÄÕÂ
ÔÆÔ­Éú¼Ü¹¹¸ÅÊö
K8S¸ß¿ÉÓü¯Èº¼Ü¹¹ÊµÏÖ
ÈÝÆ÷ÔÆ¹ÜÀíÖ®K8S¼¯Èº¸ÅÊö
k8s-ÕûÌå¸ÅÊöºÍ¼Ü¹¹
Ê®·ÖÖÓѧ»áÓÃdocker²¿Êð΢·þÎñ
×îпγÌ
ÔÆ¼ÆË㡢΢·þÎñÓë·Ö²¼Ê½¼Ü¹¹
Æóҵ˽ÓÐÔÆÔ­ÀíÓë¹¹½¨
»ùÓÚKubernetesµÄDevOpsʵ¼ù
ÔÆÆ½Ì¨¼Ü¹¹ÓëÓ¦Ó㨰¢ÀïÔÆ£©
Docker²¿Êð±»²âϵͳÓë×Ô¶¯»¯¿ò¼Üʵ¼ù
³É¹¦°¸Àý
±±¾© ÔÆÆ½Ì¨Óë΢·þÎñ¼Ü¹¹Éè¼Æ
ͨÓù«Ë¾GE DockerÔ­ÀíÓëʵ¼ùÅàѵ
ij¾ü¹¤Ñо¿µ¥Î» MDA£¨Ä£ÐÍÇý¶¯¼Ü¹¹£©
ÖªÃûÏû·Ñ½ðÈÚ¹«Ë¾ ÁìÓòÇý¶¯Éè¼Æ
ÉîÛÚijÆû³µÆóÒµ Ä£ÐÍÇý¶¯µÄ·ÖÎöÉè¼Æ