| 
        
    | 
        
     | 
    
        °Ô½Ã¹° 1,378°Ç
         
                             | 
 
 |  
 
 
 |  
    | 
                TIME_WAIT ¾ø¾Ö±â              | 
 
 |  
    
	                ±Û¾´ÀÌ : 
	 ÃÖ°í°ü¸®ÀÚ        		
                ³¯Â¥ : 2010-11-17 (¼ö) 12:06
        Á¶È¸ : 14125
                                       | 
 
 |  
    | 
        ±ÛÁÖ¼Ò : 
	
     | 
 
    
        
        
                                        
        
        
        
- 
- 1 TIME_WAIT ¿¡ ´ëÇØ¼ 
- 2 TIME_WAIT ¹®Á¦ ¹ß»ý »óȲ 
- 3 ¼ÒÇÁÆ®¿þ¾îÀûÀÎ ÇØ°á 
   - 
- 3.1 ¼ÒÄÏ¿É¼Ç º¯°æ : linger 
- 3.2 ¼ÒÄÏ¿É¼Ç º¯°æ : SO_REUSEADDR 
   
 - 4 Ä¿³Î·¹º§¿¡¼ÀÇ ÇØ°á 
 - 
- 4.1 client Port range º¯°æ 
- 4.2 tcp_fin_timeout 
- 4.3 timewait ¼³Á¤ º¯°æ 
    
 - 5 Âü°í 
     
1 TIME_WAIT ¿¡ ´ëÇØ¼ 
 
¸¸µé¾îÁø  TCP¿¬°áÀÌ Á¾·áµÇ±â À§Çؼ´Â  FINÆÐŶ ±³È¯ÀÌ ÀÌ·ç¾îÁø´Ù. À̶§ ¿ì¾ÆÇÑ Á¾·á°¡ ÀÌ·ç¾îÁö±â À§Çؼ´Â ÃÑ 4¹øÀÇ ÆÐŶ±³È¯ÀÌ ÇÊ¿äÇÏ°Ô µÈ´Ù. ¿ì¾ÆÇÑ Á¾·á¶ó´Â °ÍÀº ¿¬°áµÈ È£½ºÆ® ¾çÂÊÀÌ ¸ðµÎ ¿¬°áÀÌ Á¾·áµÇ¾úÀ½À» ¾Ë°Ô µÇ´Â »óÅ´Ù. ¸¸¾à FIN ÆÐŶÀ» º¸³Â´Âµ¥, »ó´ë È£½ºÆ®¿¡¼ ACK ÆÐŶÀ» º¸³»Áö ¾Ê°í Á¾·áÇØ¹ö¸®´Â °æ¿ì FINÀ» º¸³½ÃøÀº ¿ì¾ÆÇÑ Á¾·á¸¦ À§Çؼ ÀÏÁ¤½Ã°£ ACK¸¦ ±â´Ù¸®°Ô µÈ´Ù. ¸®´ª½ºÀÇ °æ¿ì ´ë·« 90ÃÊ Á¤µµ¸¦ ±â´Ù¸°´Ù.  netstat(1)·Î È®ÀÎÇØ º¸¸é TIME_WAITÀÎ »óÅ·Π³ªÅ¸³´Ù.
 TIME_WAIT»óÅÂÀÏ °æ¿ì ÇØ´ç Æ÷Æ®¸¦ °è¼Ó Á¡À¯Çϴµ¥, ¿¬°áÀÌ ºó¹øÇÑ ³×Æ®¿öÅ© ¼ºñ½ºÀÏ °æ¿ì ¿¬°á°ÅºÎ¿Í °ü·ÃµÈ ¹®Á¦°¡ ¹ß»ýÇÒ ¼ö ÀÖ´Ù. 
2 TIME_WAIT ¹®Á¦ ¹ß»ý »óȲ 
mysqlÀÇ ¼º´ÉÁß Ã³¸®·®À» ÃøÁ¤Çϱâ À§Çؼ ¼ö¹é°³ÀÇ Å¬¶óÀÌ¾ðÆ®·Î µ¿Á¢»óȲÀ» ½Ã¹Ä·¹ÀÌ¼Ç ÇÏ´Â ÇÁ·Î±×·¥À» ¸¸µé¾î¼ Å×½ºÆ®ÇÏ´ø Áß ´ÙÀ½°ú °°Àº ¹®Á¦°¡ ¹ß»ýÇß´Ù. 
- open ÆÄÀÏ Á¦ÇÑ °¹¼ö
 
À̹®Á¦´Â /proc/sys/fs/file-max ÀÇ °ªÀ» Á¶ÀýÇÏ´Â °É·Î °£´ÜÈ÷ ÇØ°áÇß´Ù.
  
 - TIME_WAIT
 
¸Å¿ì ¹Ù»Û µ¿Á¢Å×½ºÆ® ȯ°æÀ» ¸¸µé±â¸¦ ¿øÇß´Ù. ÀÌ °æ¿ì connect¿Í close°¡ ºó¹øÇÏ°Ô ¹ß»ýÇϴµ¥, TIME_WAIT°¡ °è¼Ó ´Ã¾î³ª°Ô µÇ°í °á±¹¿¡´Â ÇÒ´ç°¡´ÉÇÑ  PORT¸¦ ¸ðµÎ ¼ÒºñÇØ¼ ´õÀÌ»ó ¿¬°áÀ» ÇÒ ¼ö ¾ø´Â »óȲÀÌ ¹ß»ýÇß´Ù.    
3 ¼ÒÇÁÆ®¿þ¾îÀûÀÎ ÇØ°á 
3.1 ¼ÒÄÏ¿É¼Ç º¯°æ : linger 
Á÷Á¢ ³×Æ®¿öÅ© ÇÁ·Î±×·¥À» Á¦ÀÛÇÑ´Ù¸é °¡Àå ÁÁÀº ¹æ¹ýÀÏ °ÍÀÌ´Ù. ±×·¯³ª ¾ÖÇø®ÄÉÀ̼ǿ¡¼ Á¦°øÇÏ´Â API¸¦ ÀÌ¿ëÇÑ ÇÁ·Î±×·¡¹Ö¿¡´Â Àû¿ëÇÒ ¼ö ¾ø´Ù.  
¿¹¸¦µé¾î  Mysql DB ¼º´ÉÃøÁ¤À» À§Çؼ,  Mysql API¸¦ ÀÌ¿ëÇØ¼ ÃøÁ¤ Ŭ¶óÀÌ¾ðÆ®¸¦ °³¹ßÇÒ °æ¿ì¿¡´Â ¼ÒÄϿɼÇÀ» Á¦¾îÇÒ ¼ö°¡ ¾ø´Ù. 
 ´ÙÀ½Àº  socket¿É¼ÇÀ» ÀÌ¿ëÇØ¼ TIME_WAITÀÌ ¹ß»ýÇÏÁö ¾Êµµ·Ï ÇÏ´Â ÄÚµå´Ù.     ...  
    int sock 
    struct linger   ling; 
 
    ling.l_onoff = 1; 
    ling.l_linger = 0;      /* 0 for abortive disconnect */ 
 
    ... 
    ... 
 
    setsockopt(sock, SOL_SOCKET, SO_LINGER, &ling, sizeof(ling)) 
 
3.2 ¼ÒÄÏ¿É¼Ç º¯°æ : SO_REUSEADDR 
SO_REUSEADDR ¿É¼ÇÀ» »ç¿ëÇϸé, TIME_WAIT »óÅ¿¡ ÀÖ´Â PORT¸¦ »ç¿ëÇÒ ¼ö ÀÖ°Ô µÈ´Ù. ¼¹öÇÁ·Î±×·¥ÀÌ ºñÁ¤»óÀûÀ¸·Î Á¾·áµÇ°Ç³ª Ŭ¶óÀÌ¾ðÆ®¸¦ Á¤¸®ÇÏÁö ¾Ê°í Á¾·áµÇ¸é TIME_WAIT »óÅ·Π³Ñ¾î°¡°Ô µÈ´Ù. À̶§ ¼¹ö ÇÁ·Î±×·¥À» ½ÇÇà½ÃŰ¸é  bind() ¿¡·¯°¡ ¹ß»ýÇϴµ¥, ÀÌ ¿É¼ÇÀ» ÀÌ¿ëÇØ¼  bind()¹®Á¦¸¦ ÇØ°áÇÒ ¼ö ÀÖ´Ù.  setsockopt(sock_fd, SOL_SOCKET, SO_REUSEADDR, &option, sizeof(option)); 
  
4 Ä¿³Î·¹º§¿¡¼ÀÇ ÇØ°á 
4.1 client Port range º¯°æ 
¸Å¿ì ¹Ù»Û Ŭ¶óÀÌ¾ðÆ® ÇÁ·Î±×·¥ÀÏ °æ¿ì¿¡ ´ë·®ÀÇ TIME_WAIT°¡ ¹ß»ýÇØ¼ ÇÒ´çÇØ¾ßµÉ PORT°¡ ºÎÁ·ÇÒ ¼ö°¡ ÀÖ´Ù. Ŭ¶óÀÌ¾ðÆ®¿¡ ÇÒ´çµÉ portÀÇ ¹üÀ§¸¦ ´Ã¸®´Â °ÍÀ¸·Î ¾î´ÀÁ¤µµ Á¶Á¤°¡´ÉÇÏ´Ù. 
- /proc/sys/net/ipv4/ip_local_port_range
   º¸Åë  32768 61000·Î ÁöÁ¤µÇ¾î ÀÖÀ» °ÍÀÌ´Ù. 1024 ~ 65535 ·Î º¯°æÇÏÀÚ. # echo "1024 ~ 65535" > /proc/sys/net/ipv4/ip_local_port_range 
  
À̰ÍÀº ¾îµð±îÁö³ª ÀÓ½ÃÀûÀÎ ¹æ¹ýÀ¸·Î, ¹®Á¦¸¦ ¿ÏÀüÈ÷ ÇØ°áÇÒ ¼ö´Â ¾øÀ» °Å´Ù. 
4.2 tcp_fin_timeout 
¼ÒÄÏÀÌ ¿ÏÀüÈ÷ ´ÝÈú·Á¸é ¸¶Áö¸· FINÀ» ±â´Ù·Á¾ß Çϴµ¥, ÀÌ °£°ÝÀ» ÃÊ´ÜÀ§·Î ¼³Á¤ÇÒ ¼ö ÀÖ´Ù. ¾Æ¸¶ 60ÃÊ Á¤µµ·Î ¼³Á¤µÇ¾î ÀÖÀ» °ÍÀÌ´Ù. 10ÃÊÀÌÇÏ·Î ÁÙ¿©º¸µµ·Ï ÇÏÀÚ. 
4.3 timewait ¼³Á¤ º¯°æ 
Ä¿³Î·¹º§¿¡¼ TIME-WAITÀÚ¿ø¿¡ ´ëÇÑ »ç¿ëÀ» º¯°æÇÒ ¼öµµ ÀÖ´Ù.  
         
        
         
        
        
        
        
        
        
        
         
     | 
 
    | 
        
     | 
 
 
 
 
 
 |  
  
	 
     | 
     | 
        
	    
	 |