본문 바로가기

Work/Solaris

tcp 파라미터

tcp 파라미터 보기


#!/bin/sh

# Check TCP/IP Parameter

#

echo "tcp_time_wait_interval:           " `/usr/sbin/ndd -get /dev/tcp tcp_time_wait_interval`

# echo "tcp_mss_max:                    " `/usr/sbin/ndd -get /dev/tcp tcp_mss_max`

# echo "tcp_fin_wait_2_flush:           " `/usr/sbin/ndd -get /dev/tcp tcp_fin_wait_2_flush_int

erval`

echo "tcp_conn_req_max_q:               " `/usr/sbin/ndd -get /dev/tcp tcp_conn_req_max_q`

echo "tcp_conn_req_max_q0:              " `/usr/sbin/ndd -get /dev/tcp tcp_conn_req_max_q0`

# echo "ip_path_mtu_discovery:          " `/usr/sbin/ndd -get /dev/tcp ip_path_mtu_discovery`

echo "tcp_xmit_hiwat:                   " `/usr/sbin/ndd -get /dev/tcp tcp_xmit_hiwat`

echo "tcp_recv_hiwat:                   " `/usr/sbin/ndd -get /dev/tcp tcp_recv_hiwat`

# echo "tcp_cwnd_max:                   " `/usr/sbin/ndd -get /dev/tcp tcp_cwnd_max`

echo "tcp_keepalive_interval:           " `/usr/sbin/ndd -get /dev/tcp tcp_keepalive_interval`

echo "tcp_ip_abort_interval:            " `/usr/sbin/ndd -get /dev/tcp tcp_ip_abort_interval`

echo "tcp_ip_abort_cinterval:           " `/usr/sbin/ndd -get /dev/tcp tcp_ip_abort_cinterval`

echo "tcp_rexmit_interval_initial:      " `/usr/sbin/ndd -get /dev/tcp tcp_rexmit_interval_init

ial`

echo "tcp_rexmit_interval_min:          " `/usr/sbin/ndd -get /dev/tcp tcp_rexmit_interval_min`

echo "tcp_rexmit_interval_max:          " `/usr/sbin/ndd -get /dev/tcp tcp_rexmit_interval_max`

echo "ip_ignore_redirect:               " `/usr/sbin/ndd -get /dev/tcp ip_ignore_redirect`



tcp time_wait_interval 

= 커넥션이 종료 됬을때 Time_wait 상태로 머물게 되는 시간 설정 디폴트 ( 240,000ms = 4분 ) 

     짧은 시간에 많은 클라이언트가 접속을 하면 네트워크 성능에 영향을 줄 수 있으므로 1분 

     ( 60,000ms = 1분 ) 추천


ICQ : tcp_conn_req_max_q0, CCQ : tcp_conn_req_max_q

= 솔라리스는 클라이언트의 request 를 3way-handshake 를 통해 받는데, 

   ICQ(Incomplete connections Queue), CCQ(Completed Connections Queue)가 있는데,

   

   ICQ 는 시스템에 전달되는 모든 SYN 패킷을 저장한다.

   즉 처음으로 커넥션을 시도하는 request 는 일단은 여기에 머물고, 3way-handshake 를 통해

   완벽하게 established 상태가 되지 않은 모든 커넥션에 대한 내용도 바로 이 Queue 에 저장된다.


   CCQ 는 3way-handshake 를 통해 커넥션이 성립된 것들이 저장되는 Queue다. 

   CCQ 에 대기하면서 다시 accept를 호출 하는 것을 기다리고, accept 된 것들은 큐에서 사라진다.

   모든 queue는 설정된 값(기본 128개)에 의해 제한을 받는데 어떤 이유에서든 CCQ 에서 지워지지    않고, 큐가 꽉 차면 커널은 더 이상의 커넥션을 받지 않는다.

   

   Timeout 값은 큐에 저장된 SYN 세그먼트에 의해 결정되며, 큐에 저장된 SYN 패킷에 대해 ACK가

   수신되지 않는 경우 (SYN_RCVD 상태)에는 시간이 경과되고 그 결과 그냥 패킷이 지워진다.

   결과적으로 클라이언트가 아무리 SYN을 보내도 이러한 커넥션은 ICQ 에 머물게 되며, 

   3way hand-shake 를 하지 않으므로 CCQ로 넘어가지 않는다. 이런 이유로 인해 두 개의 큐 

   설정 값은 was 서버의 성능에 영향을 주게 된다.

     

tcp_conn_req_max_q0 

 = 기본 1024, 권장 1024 이상


tcp_conn_req_max_q 

 = 기본 128, 권장 128 이상



tcp_ip_abort_cinterval

 = 연결에 대한 제한 시간을 중단 ( abort timeout ) 

    3way-handshake 방식에서 사용되는 중단 타이머 

    기본값은 (180,000ms) 3분, 1분 권장


tcp_ip_abort_interval

  = 연결된 후에 사용되는 중단 시간 간격 ( abort interval )

     연결된 동안의 중단 제한 시간, Reset 세그먼트가 보내지기 전에 연결이 설정된 상태

     에서 Tcp 재전송되는 최대 시간

     기본값은 8분 (480,000ms), 1분 권장

    * 메일 서버가 설정된 서버에서는 값을 5분 이하로 줄이지 말것 

 sendmail : SYSERR : collect : read timeout on connection from


tcp_keepalive_interval

 = 서버 어플리케이션에서 Keep alives 가 설정되어 있고, 응답하지 않은 연결이 계속 활성화

    된 경우 검사하는 간격 지정

    tcp_keepalive_interval에 설정된 시간이 지나면 프로브(probe)가 보내지고 연결이 

    해제되어 응답하는 클라이언트가 없는 상태인 tcp_ip_abort_interval에 설정된 시간이

    될 때까지 tcp_keepalive_interval 에 probe가 재전송 된다.

    기본값은 2시간 ( 7,200,000ms )


tcp_xmit_hiwat

 = 연결된 상태에서 보낼 때 사용되는 버퍼 공간의 기본값을 지정

   UNACK 데이터를 보낼 때 할당되는 버퍼 공간의 크기, 대부분의 경우

   tcp_xmit_hiwat 값과 tcp_recv_hiwat 의 값은 같다. 

   기본값은 ( 8K )


tcp_recv_hiwat

  = 연결된 동안 사용되는 수신 버퍼 공간의 기본값을 지정

     수신된 데이터에 대해 할당되는 버퍼 공간의 크기로 사용 가능한 최대 크기를

     Receive window 에 알려준다. 대부분의 경우 tcp_recv_hiwat 값과 tcp_xmit_hiwat

     값은 같다. 기본값은 ( 8K ) 


tcp_rexmit_interval_max

  = 재전송을 위한 최대 시간 간격, 두 번 연속되는 전송 과정에서의 최대 대기 시간 간격

    기본값은 1분 ( 60,000 ms ) 에서 4분으로 ( 240,000 ms ) 로 변경


tcp_rexmit_interval_min

  = 재전송을 위한 최소 시간 간격, 첫 번째 재전송 후 최소 대기 시간의 간격

    기본값은 (200,000 ms ) 


==> 출처 : http://twins.tomeii.com/entry/%ED%8E%8C-%EC%86%94%EB%9D%BC%EB%A6%AC%EC%8A%A4-TCP-%ED%8C%8C%EB%9D%BC%EB%AF%B8%ED%84%B0-%ED%8A%9C%EB%8B%9D-%EC%B0%B8%EA%B3%A0


위 값은 솔라리스 9 인가보다

솔라리스 10 에서는 기본값이 틀림 


==> 참고2 http://www.gurkulindia.com/main/2012/08/solaris-network-performance-tuning-know-about-tcp-window-size/


==> 참고3 http://www.sean.de/Solaris/soltune.html

'Work > Solaris' 카테고리의 다른 글

ldom 설치, 삭제  (0) 2015.01.26
solaris 자동완성  (0) 2015.01.13
while 문 사용하기  (0) 2015.01.07
solaris IPMP 설정 ( 네트워크 bonding or Teaming )  (0) 2015.01.07
zfs 파일 시스템  (0) 2014.12.30