'TIME_WAIT'에 해당되는 글 1건

  1. 2009.03.13 Socket TIME_WAIT 대기시간 설정 변경하기
OS2009. 3. 13. 14:59
반응형

Tuning TCP/IP TIME_WAIT For Systems With High Connection Rates
Applies To: VDE / DFE / DSE (all versions, all operating systems)

Description: When using the "netstat" command to look at open TCP/IP connections, a large number of connections in the TIME_WAIT state are observed. The system exhibits poor throughput possibly coupled with high CPU use on the VDE/DFE/DSE server.

TCP uses a special handshake to close completed sessions. The TIME_WAIT state is used to handle possible problems that may occur in the network relating to unreliable or delayed packet delivery. Accordingly, TCP holds connections for a temporary waiting period (TIME_WAIT) to ensure that any delayed packets are caught and not treated as new connection requests. The size of TIME_WAIT is supposed to be twice the maximum segment lifetime or twice the time a packet can remain alive on a particular IP network. For some operating systems, this can be as high as 4 minutes!

On busy systems, this can lead to a depleation of TCP port resources. Low throughput may occur due to many connections sitting in TIME_WAIT state.

Explanation/Workaround: OctetString recommends reducing the operating system setting for TIME_WAIT substantially. If VDE / DFE / DSE is the only server product on the system, this can be reduced to the operating system minimum of 15 or 30 seconds (depending on OS).

For Windows:
Use regedit and create a REG_DWORD named TcpTimedWaitDelay under

HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\TcpIp\Parameters

Set it to a decimal value of 30 which is for 30 seconds - the minimum.

For AIX:
To see the current TCP_TIMEWAIT value, run the following command:
/usr/sbin/no 뻕 | grep tcp_timewait

To set the TCP_TIMEWAIT values to 15 seconds, run the following command:
/usr/sbin/no 뻩 tcp_timewait =1

The tcp_timewait option is used to configure how long connections are kept in the timewait state. It is given in 15-second intervals, and the default is 1.

For Linux:
Set the timeout_timewait paramater using the following command:
/sbin/sysctl -w net.ipv4.vs.timeout_timewait=30

This will set TME_WAIT for 30 seconds.

For Solaris:
Set the tcp_time_wait_interval to 30000 milliseconds as follows:
/usr/sbin/ndd -set /dev/tcp tcp_time_wait_interval 30000


=================================================================================================

WebSphere Commerce Payments -고성능 환경의 조정
각 비즈니스 모델은 고유한 요구사항을 가지므로 WebSphere Commerce Payments 기능을 다소 다르게 이용합니다. 종종 주어진 비즈니스 환경에 대해 성능과 기능성을 극대화하기 위해 WebSphere Commerce Payments를 조정할 수 있습니다.

TCP/IP 소켓에 대한 대기 시간
WebSphere Commerce Payments에 대한 각 요청 시에 TCP 소켓이 TIME_WAIT 상태가 되고 몇 분 동안 해당 상태에 머물게 됩니다. 다량의 요청을 서비스하는 시스템의 경우, 다수의 소켓이 TIME_WAIT 또는 TIME_CLOSED 상태에 있으므로 요청이 거부됩니다(예: Cannot connect to WebSphere Commerce Payments 리턴 코드). 이 행위는 모든 TCP를 연결하는 데 예상된 것으로 반드시 필요합니다.

TCP 소켓은 소켓에서의 모든 차후 통신이 새로 바운드되는 소켓에 대한 새 통신으로 오해되지 않도록 보장하기 위해 일정한 시간 동안 TIME_WAIT 상태로 이동합니다. 이 시간은 이론적으로 2MSL(최대 세그먼트 수명의 두 배)입니다. 실제로는 TIME_WAIT 기본값이 Windows 운영체제 및 Solaris에서는 4분이고 AIX에서는 2분입니다. iSeries 시스템에서 기본값은 약 2분입니다. 사용자 운영체제에서 TIME_WAIT 값을 변경하면 대용량 사용자가 이러한 문제점을 줄일 수 있습니다. 다음은 Windows, AIX 및 Solaris 운영체제에서 간격을 재구성하는 방법의 예입니다.

예외:

대체 스택이 사용 중일 경우, 다른 방법이 필요할 수 있습니다.


레지스트리에서 다음을 찾으십시오.
HKEY_LOCAL_MACHINE\System\CurrentControlSet\Services\tcpip\Parameters
\TcpTimeWaitDelay
이 항목이 Windows 레지스트리에 없는 경우, 아래 2단계에 따라서 항목을 작성해야 합니다.

이 항목을 새 DWORD 항목으로 편집하십시오
항목을 30 - 300(값은 초 수를 표시함) 범위의 임의의 값을 설정하십시오. 이 값을 30으로 설정할 것을 권장합니다.

no -o tcp_timewait=1
값(1)의 증가 단위는 15초입니다. 예를 들어, 1은 15초이고 2는 30초에 해당합니다. 값을 1 또는 2로 설정하는 것이 바람직합니다.


ndd -set /dev/tcp tcp_close_wait_interval 30000
값(30000)의 단위는 밀리초입니다.

관련 태스크

WebSphere Commerce Payments 성능 조정 매개변수
피드백

(C) Co/pyright IBM Corporation 1996, 2004.

=======================================================================

Windows 2000 server에서 가능합니다.

물론, 다른 버젼에서도 가능하겠지만, 제가 확인해본 곳이 W2K Server입니다.

System Registry중 TcpIp 옵션 설정에 SynAttackProtect항목을 추가할 수 있습니다.


-------------------------------- Registry File --------------------------------

Windows Registry Editor Version 5.00

[HKEY_LOCAL_MACHINESYSTEMCurrentControlSetServicesTcpipParameters]
"SynAttackProtect"=dword:1
"KeepAliveInterval"=dword:3e8
"KeepAliveTime"=dword:493e0

------------------------------------------------------------------------------

여기에서 첫 번째 SynAttack Protect가 바로 Syn Flood Attack 방지 옵션을 활설화할 것인지를

결정짓는 것입니다.

다음으로 KeepAliveInterval값은, Tcp에서 Keep Alive 옵션을 사용할 경우 Keep alive packet을

전송하는 시간 간격을 의미합니다.

마지막 KeepAliveTime은 Keep alive packet이 수신되어야 하는 시간의 최대 값을 의미합니다.

결국 KeepAliveInterval값보다는 큰 값으로 설정해야겠죠.

출처 : http://ariswear.com/new_blog/entry/Socket-TIMEWAIT-%EB%8C%80%EA%B8%B0%EC%8B%9C%EA%B0%84-%EC%84%A4%EC%A0%95-%EB%B3%80%EA%B2%BD%ED%95%98%EA%B8%B0?category=10&TSSESSIONariswearcomnewblog=78e085655f2789d73cdf9d485de8552f
반응형

'OS' 카테고리의 다른 글

OS별 NTP 설정  (0) 2010.01.07
find, grep을 조합한 검색  (0) 2009.01.07
Posted by [PineTree]