Linux²Ù×÷ϵͳ£¬Æ¾½èÆäÇ¿´óµÄÁé»îÐԺͿÉÀ©Õ¹ÐÔ£¬³ÉΪÁË·þÎñÆ÷ºÍǶÈëʽÉ豸ÖÐ×îÊÜ»¶ÓµÄÑ¡ÔñÖ®Ò»
È»¶ø£¬¼´±ãÊÇÈç´Ë³öÉ«µÄ²Ù×÷ϵͳ£¬Ò²ÐèÒªÔÚÍøÂçÅäÖÃÉϽøÐо«Ï¸µ÷Õû£¬ÒÔ×î´ó»¯ÆäÐÔÄÜ
ÆäÖУ¬TCP£¨´«Êä¿ØÖÆÐÒ飩³¬Ê±Ê±¼äµÄÉèÖÃÊÇÒ»¸ö³£±»ºöÊÓµ«ÓÖ¼«ÆäÖØÒªµÄ»·½Ú
±¾ÎĽ«ÉîÈë̽ÌÖLinux TCP³¬Ê±Ê±¼äµÄÉèÖ÷½·¨¼°Æä¶ÔÍøÂçÐÔÄܵÄÓ°Ï죬²¢ÌṩһЩʵÓõÄÓÅ»¯½¨Òé
TCP³¬Ê±Ê±¼äµÄ»ù±¾¸ÅÄî TCPÊÇÒ»ÖÖÃæÏòÁ¬½ÓµÄ¡¢¿É¿¿µÄ¡¢»ùÓÚ×Ö½ÚÁ÷µÄ´«Êä²ãͨÐÅÐÒé
ΪÁËÈ·±£Êý¾ÝµÄ¿É¿¿´«Ê䣬TCPÐÒéÉè¼ÆÁËÒ»Ì׸´ÔӵĻúÖÆ£¬°üÀ¨Êý¾Ý·Ö¶Î¡¢È·ÈÏÓ¦´ð¡¢³¬Ê±ÖØ´«µÈ
TCP³¬Ê±Ê±¼ä£¬ÊÇÖ¸ÔÚ·¢ËÍ·½µÈ´ý½ÓÊÕ·½È·ÈÏÓ¦´ð£¨ACK£©µÄ¹ý³ÌÖУ¬Èô³¬¹ýÉ趨µÄʱ¼äÈÔδÊÕµ½ACK£¬ÔòÈÏΪÊý¾Ý°ü¶ªÊ§£¬²¢ÖØÐ·¢Ë͸ÃÊý¾Ý°üµÄµÈ´ýʱ¼ä
ÕâÒ»»úÖÆÓÐЧ·ÀÖ¹ÁËÊý¾Ý¶ªÊ§£¬µ«Ò²¿ÉÄܶÔÍøÂçÐÔÄܲúÉú¸ºÃæÓ°Ïì£¬ÌØ±ðÊÇÔÚ¸ßÑÓ³Ù»ò²»Îȶ¨µÄÍøÂç»·¾³ÖÐ
ΪʲôÐèÒªµ÷ÕûTCP³¬Ê±Ê±¼ä 1.¼õÉÙÑÓ³Ù£ºÄ¬ÈϵÄTCP³¬Ê±Ê±¼ä¿ÉÄܹý³¤£¬µ¼ÖÂÔÚÍøÂçÌõ¼þÁ¼ºÃʱ£¬Êý¾Ý´«Êä³öÏÖ²»±ØÒªµÄÑÓ³Ù
2.Ìá¸ßÍÌÍÂÁ¿£ººÏÀíµÄ³¬Ê±ÉèÖÃÓÐÖúÓÚ¸ü¿ìµØ¼ì²âµ½ÍøÂçÓµÈû£¬¼°Ê±µ÷Õû´«ÊäËÙÂÊ£¬´Ó¶øÌá¸ßÕûÌåÍÌÍÂÁ¿
3.ÔöÇ¿Îȶ¨ÐÔ£ºÔÚÍøÂç×´¿ö²¨¶¯½Ï´óµÄ»·¾³ÖУ¬Êʵ±µ÷ÕûTCP³¬Ê±Ê±¼ä¿ÉÒÔÔöÇ¿Á¬½ÓµÄÎȶ¨ÐÔ£¬¼õÉÙÁ¬½ÓÖжϵĸÅÂÊ
4.½ÚÊ¡×ÊÔ´£º¹ý³¤µÄ³¬Ê±Ê±¼ä¿ÉÄܵ¼ÖÂϵͳ×ÊÔ´£¨ÈçÄÚ´æºÍCPU£©±»³¤Ê±¼äÕ¼Óã¬Ó°ÏìÆäËûÈÎÎñµÄÖ´ÐÐ
Linux TCP³¬Ê±Ê±¼äµÄÖ÷Òª²ÎÊý ÔÚLinuxϵͳÖУ¬TCP³¬Ê±Ê±¼äµÄÉèÖÃÉæ¼°¶à¸ö²ÎÊý£¬ÕâЩ²ÎÊý¹²Í¬¾ö¶¨ÁËTCPÁ¬½ÓµÄÐÐΪ
ÒÔÏÂÊÇһЩ¹Ø¼ü²ÎÊý¼°Æä×÷Ó㺠- tcp_syn_retries£ºSYN°ü£¨Á¬½Ó½¨Á¢ÇëÇ󣩵Ä×î´óÖØ´«´ÎÊý
ĬÈÏֵΪ5»ò6´Î£¬Ã¿´ÎÖØ´«¼ä¸ô¼Ó±¶
- tcp_fin_timeout£º¹Ø±ÕÁ¬½ÓʱµÄ³¬Ê±Ê±¼ä£¬¼´´Ó·¢ËÍFIN°üµ½ÍêÈ«¹Ø±ÕÁ¬½ÓµÄ×î´óµÈ´ýʱ¼ä£¬Ä¬ÈÏͨ³£Îª60Ãë
- tcp_keepalive_time£ºTCPÁ¬½Ó±£³Ö»îԾ״̬¶øÎÞÊý¾Ý´«ÊäʱµÄ×¿ÕÏÐʱ¼ä£¬Ö®ºó¿ªÊ¼·¢Ëͱ£»î̽²â°ü£¬Ä¬ÈÏֵΪ7200Ã루2Сʱ£©
- tcp_keepalive_intvl£º±£»î̽²â°üÖ®¼äµÄ¼ä¸ôʱ¼ä£¬Ä¬ÈÏֵΪ75Ãë
- tcp_keepalive_probes£º·¢Ëͱ£»î̽²â°üµÄ×î´ó´ÎÊý£¬ÈôδÊÕµ½ÏìÓ¦Ôò¹Ø±ÕÁ¬½Ó£¬Ä¬ÈÏֵΪ9´Î
- tcp_retries1¡¢`tcp_retries2`£º·Ö±ð¶ÔÓ¦TCPÁ¬½ÓÔÚ³õ²½´íÎó¼ì²âºÍ×îÖÕ´íÎó¼ì²â½×¶ÎµÄÖØ´«´ÎÊý£¬Ä¬ÈÏֵͨ³£Îª3ºÍ15´Î
- tcp_user_timeout£ºÓû§¼¶³¬Ê±Ê±¼ä£¬ÓÃÓÚ¿ØÖÆsocketµÄ¶Áд²Ù×÷³¬Ê±£¬ÊÊÓÃÓÚÐèÒª¿ìËÙÏìÓ¦µÄÓ¦ÓÃ
ÈçºÎµ÷ÕûTCP³¬Ê±Ê±¼ä µ÷ÕûTCP³¬Ê±Ê±¼äͨ³£Éæ¼°ÐÞ¸ÄϵͳÅäÖÃÎļþ»òÖ±½ÓÔÚÔËÐÐʱͨ¹ýÃüÁîÐй¤¾ß½øÐÐÐÞ¸Ä
ÒÔÏÂÊÇһЩ³£¼ûµÄµ÷Õû·½·¨£º 1.ÐÞ¸ÄϵͳÅäÖÃÎļþ£º -±à¼`/etc/sysctl.conf`Îļþ£¬Ìí¼Ó»òÐÞ¸ÄÉÏÊö²ÎÊýµÄÅäÖÃ
- ÀýÈ磬ҪÉèÖÃ`tcp_fin_timeout`Ϊ30Ã룬¿ÉÒÔÌí¼Ó`net.ipv4.tcp_fin_timeout=30`
- Ó¦Óøü¸Ä£¬Ê¹ÓÃ`sysctl -p`ÃüÁî
2.ʹÓÃsysctlÃüÁʱµ÷Õû£º - ¿ÉÒÔʹÓÃ`sysctl -w`ÃüÁʱµ÷Õû²ÎÊý£¬Èç`sysctl -w net.ipv4.tcp_syn_retries=4`
- ÕâÖÖµ÷Õû½ö¶Ôµ±Ç°»á»°ÓÐЧ£¬ÖØÆôºóʧЧ
3.ͨ¹ýÓ¦ÓóÌÐòÉèÖ㺠- ¶ÔÓÚÌØ¶¨Ó¦ÓóÌÐò£¬¿ÉÒÔÔÚ´úÂëÖÐͨ¹ýsocketÑ¡ÏîÉèÖÃÓû§¼¶³¬Ê±£¬Èç`setsockopt(sock,SOL_SOCKET