타 업체와 서비스 연동 중 요청 실패가 많다는 문의를 받아 tcpdump 하여 해당 IP만 로깅하였는데 첨부 파일을 보시면 Retransmission 너무 많이 발견되어 문의 글 올리게 되었습니다.
타 업체로부터 2초 이상 응답이 없을 경우 저희 쪽 요청을 중단하였고 그 실패율이 60%정도 라고 하여 Retransmission 만 필터링 해서 보니 대략 수량이 맞는 것 같습니다.
대부분 SYN 시 tcp 포트를 재사용 하였고 이후 RTO 1초가 지나면 요청 패킷은 버려지는 것인가요 새로운 seq 번호로 재요청이 되나요? (TCP Retransmission 의 seq_raw 다음 번호(+1)로 검색했을 경우 나오지 않았습니다.)
아래는 sysctl 구성입니다.
net.ipv4.conf.default.rp_filter = 1
net.ipv4.conf.default.accept_source_route = 0
kernel.sysrq = 0
kernel.core_uses_pid = 1
net.ipv4.tcp_syncookies = 1
net.ipv4.tcp_rmem = 8192 87380 8388608
net.ipv4.tcp_wmem = 8192 87380 8388608
net.ipv4.tcp_timestamps = 1
kernel.msgmnb = 65536
kernel.msgmax = 65536
kernel.shmmax = 68719476736
kernel.shmall = 4294967296
fs.file-max = 360000
net.ipv4.ip_local_port_range = 1024 65535
net.ipv4.tcp_tw_reuse = 1
net.ipv4.tcp_keepalive_time = 1800
net.ipv4.tcp_keepalive_intvl = 15
net.ipv4.tcp_keepalive_probes = 5
netstat -nao | grep "TIME_WAIT" | wc -l => 1500 ~ 2000
ss -t | wc -l => 10000 ~ 12000
Retransmission 을 줄일 수 있는 방법이 있을까요?
조언 부탁드립니다.
감사합니다.
ÆÐŶ ·Î½º°¡ ³ª¸é Çϵå¿þ¾î ºÒ·®ÀÌ ´ëºÎºÐÀ̶ó°í »ý°¢ÇÕ´Ï´Ù..
ÆÐŶ ·Î½º°¡ ³ª´Â ±¸°£ÀÇ Àåºñ ¸ðµ¨ /ÄÉÀÌºí ¿¬°á¹æ¹ý /°Å¸® /¼ÂÆà »óÅ µîÀº ¾î¶°ÇÑ°¡¿ä??
±×¸®°í Àåºñ´Â ´ë·« ¸î ³â µÈ °ÍµéÀΰ¡¿ä??
¾Æ¸¶ IDC ³ª AWS °°À» °É ¾²°í ÀÖÀ»ÅÙµ¥ ÀÌ °æ¿ì Çϵå¿þ¾î ºÒ·®À̶ó°í º¸±ä ¾î·Æ½À´Ï´Ù..
+1 ÇßÀ» ¶§ seq °ªÀÌ ³ª¿ÀÁö ¾Ê´Â °Ç Ŭ¶óÀ̾ðÆ® ÂÊ¿¡¼ active close Çؼ ±×·± °É·Î ÃßÁ¤µË´Ï´Ù. ±×·¯´Ï±î °è¼Ó »õ·Î¿î seq°¡ Àç¿äûµÇ°í ÀÖ´Â »óÅÂÀΰÅÁÒ.
°è¼Ó »õ·Î¿î ¼¼¼ÇÀ» ¸¸µå´Ï±î Çڵ彦ÀÌÅ©¿¡¼ 1ÃÊ ³Ñ±âµµ ÇÏ°í ¾È ³Ñ±âµµ Çϴµ¥ ±×·¯¸é ·Î½ºÀ²ÀÌ 60ÆÛ³ª µÇ´Â°Ô ¼³¸íµË´Ï´Ù.
¿¬µ¿ÇÑ ¼ºñ½º°¡ ¾î¶² ¾îÇø®ÄÉÀ̼ÇÀÎÁö´Â ¸ð¸£°ÚÁö¸¸ Ÿ ¾÷ü·ÎºÎÅÍ 2ÃÊ ÀÌ»ó ÀÀ´äÀÌ ¾øÀ» °æ¿ì ÀúÈñ ÂÊ ¿äûÀ» Áß´ÜÇÏ¿´´Ù¶ó´Â ¸»·Î º¸¾ÒÀ» ¶§ Á¦°¡ º¸±â¿£ ¾÷ü Âʵµ Æ©´×ÀÌ ÇÊ¿äÇÒ °Í °°½À´Ï´Ù.
´ë»óÀÌ À¥ ¼ºñ½º°¡ ¾Æ´Ï¶ó Ÿ ¾÷üÀÇ ¼ºñ½ºÀÎ °æ¿ì ¾çÂÊ¿¡¼ Æ©´×À» Àß ÇØÁà¾ß ÇÕ´Ï´Ù.
TIME_WAIT ¼ö°¡ ¸¹±ä Çѵ¥ Listen¸¸ ÇÏ´Â ¼¹ö°¡ Àú Á¤µµ °³¼ö·Î ÆÐŶ·Î½ºÀ²ÀÌ 60ÆÛ³ª µÉ Á¤µµ·Î ¼º´É¿¡ ÁöÀåÀ» ÁÖÁø ¾Ê½À´Ï´Ù.
net.ipv4.tcp_keepalive_time = 1800
net.ipv4.tcp_tw_reuse = 1 ¿¡´Ù
net.ipv4.tcp_tw_recycle = 1 À» Ãß°¡Çϸé TIME_WAIT ¼ÒÄÏ ¼ö´Â ÁÙ°ÚÁö¸¸ ÆÐŶ·Î½º´Â ¿©ÀüÇÒ °Ì´Ï´Ù.
ÀÏ´Ü RTO¸¦ 2ÃÊ·Î ´Ã¸®¸é ÇØ°áÀº µÉ °Ì´Ï´Ù. ±Ùµ¥ ¾÷ü ÂÊ ¼¹öµµ TIME_WAIT ÀÌ »ó´ç ÇÒ ÅÙµ¥ Àß ¸»Çؼ ¾çÂÊ¿¡¼ Æ©´×ÇÏ´Â°Ô Á¦ÀÏ ¼Õ½ÇÀ» ÁÙÀÌ°í È¿À²ÀûÀÔ´Ï´Ù.
»ó´ë ÂÊ¿¡ ¸»Çغ¸°í ±×°Ô Àß ¾È µÈ´Ù¸é net.ipv4.tcp_tw_recycle = 2 InitRTO 2ÃÊ·Î ¸ÂÃçÁÖ½É µË´Ï´Ù..
¹ö·ÁÁö´Â ¼¼¼ÇÀÌ °¡´ÉÇÑ ¾ø´Â °Ô ÁÁ±äÇÕ´Ï´Ù..
sysctl -a | grep rto
net.ipv4.tcp_frto = 2
net.ipv4.tcp_frto_response = 0
rto °ü·Ã º¯¼ö´Â 2°³ ¹Û¿¡ º¸ÀÌÁú ¾Ê³×¿ä..
¹Ú¹®Çü´Ô ´ä±Û°ú °°ÀÌ ¾ç ³¡´Ü ¼¹ö »çÀÌÀÇ ¾îµò°¡¿¡¼ ÆÐŶ ¼Õ½ÇÀÌ ¹ß»ýÇÏ°í ÀÖ½À´Ï´Ù.
½ºÀ§Ä¡, ¹æȺ®, ¶ó¿ìÅÍ, ·£ÄÉÀÌºí µî ÆÐŶ À¯½ÇÀ» ¹ß»ý½Ãų ¼ö ÀÖ´Â Àåºñ´Â ³Ê¹« ´Ù¾çÇÕ´Ï´Ù.
Áø´ÜÇÏ´Â °¡Àå ½¬¿î ¹æ¹ýÀº traceroute ¸í·ÉÀ» »ç¿ëÇÏ´Â °ÍÀÔ´Ï´Ù. ¶ó¿ìÅÍ ±âÁØ ±¸°£º°·Î ¾î´À ±¸°£¿¡¼ ¹®Á¦°¡ »ý±â´ÂÁö¸¦ ¾Ë·ÁÁÝ´Ï´Ù. ¹®Á¦ ±¸°£ÀÌ ½Äº°µÇ¸é ±× ±¸°£ ´ã´çÀÚ¿¡°Ô Á¶Ä¡ ¿äûÇϼ¼¿ä.
±¸±Û °Ë»öÇϸé ÀÚ·á°¡ ¸¹ÀÌ ÀÖÀ¸´Ï »ç¿ëÇغ¸¼¼¿ä.