TCP/IP Kernel Parameter
일반적으로 최초설치(Install)된 운영체제(Operating System)는 범용의 목적하에 Kernel Parameter 설정이 이루어지게 됩니다.. 따라서 Web Service만을 위한Kernel Parameter값은 반드시 최적화 시켜야 합니다. 특히 웹서버의 성능에 영향을 많이 주는 TCP/IP parameter setting은 20~30% 정도의 성능 향상을 가져 올 수 있을 정도로 중요합니다. 본 FAQ 문서에서는 웹서버의 형태로 운용되는 유닉스 서버의 TCP/IP 일반과 Tuning에 관한 내용을 기술합니다.
TCP connection initiation background
TCP는 reliable connection oriented protocol 입니다. 즉 2개의 machine사이에 데이터를 주고 받기 전에 connection이 이뤄지는 것입니다.
Adrian Cockcroft(SunPerformance and Tuning, Java and the Internet, 2ndEdition의저자)는 TCP connection의설명을 Phone Call에 비유를 하였씁니다. (dialing, talking, hanging up). Incoming Call은 수동적으로(passive) open되고( Server Part에서 아무런동작 없이 일어남.) 그러나 Server는Call을 Accept하기 위해서 특별한 프로그램이 동작하고 있어야 합니다. Outgoing Call은 Server에서 시작되는데, 이것은 능동적인(active) open으로 분류됩니다. 이러한 경우의 예로서 다른host에 rlogin하는 경우에 해당이 됩니다. Connection의 시작은 3-way handshake sequence로 구성이 됩니다. 이러한 handshake process는 round-trip 시간과 모든 delay에 영향을 받게 됩니다. 최초의 handshake는 SYN(synchronizesequence numbers)로 구성된 incoming packet 입니다. Server는 자신의 listen queue(tcp_conn_req_max_q0on solaris, tcp_syn_rcvd_maxon HP-UX)에 entry를 만들고 connection은 SYN_RCVD 상태로 남게 됩니다. Server는 고유한 SYN을 포함하는 acknowledges(ACK)를 가지고 SYN packet에 응답을 합니다. Client에서 오는 다음 packet은 second SYN에 대한acknowledge입니다. 두번째 SYN/ACK를 client로부터 받고 난 다음에 connection은accepted listen queue (tcp_conn_req_max_qon Solaris, tcp_conn_request_maxon HP-UX)로 이동합니다.
[그림1.]TCP 흐름
만약 client가 SYN을 보내기만 하고 어떤 ACK도 받지 않으면 time out 때까지SYN_RCVD 상태로 남게 됩니다. 이러한 TCP의 작동원리는 웹서버에서 권장하는 tcp파라메타를 이해하는데 충분한 설명 일 것입니다.
TCP Kernel Parameter의튜닝
UNIX는 사용자가 tune을 할 수 있도록 하고 있으며, 시스템 운영중에도 TCP/IP stack 관련한 다양한 파라메타는 set과 reset이 가능합니다. 이러한 작업은 ‘ndd’명령어(network device driver)로 가능합니다. Ndd명령은 시스템 재부팅 없이 변경이 가능하지만, 변경한 내용은 시스템 재부팅시 default 값이 되기 때문에 시스템start script에 넣어주어야 합니다.
For Solaris Startup see : /etc/rc2.d/S69inet
For HP/UX 11.x Startup see : /etc/rc.config.d/nddconf
본문서에서 언급하는 파라메타는 time interval입니다. 모든 interval은 milisecond단위입니다.(e.g. 1000=1 second).
현재설정된TCP 커널파라미터의값확인
# ndd/dev/tcp\?
'1. 미들웨어이야기 > 05. 상용미들웨어' 카테고리의 다른 글
Tuxedo 구성정보 모니터링 (0) | 2014.07.31 |
---|---|
WebLogic JEUS 간 Global Transaction (0) | 2009.06.16 |
EJB 개념 (0) | 2009.06.05 |
WebtoB URI 와 Alias (0) | 2009.06.05 |
WebtoB CSR 생성 (0) | 2009.06.05 |