Apache HTTP Server Version 2.2
HPUX에서 고성능 웹서버 실행하기
Date: Wed, 05 Nov 1997 16:59:34 -0800 From: Rick Jones <[email protected]> Reply-To: [email protected] Organization: Network Performance Subject: HP-UX tuning tips
이 글은 성능향상 페이지에 추가할 HP-UX 성능향상 팁이다.
HP-UX 9.X는: 10.20으로 업그레이드하라
HP-UX 10.[00|01|10]은: 10.20으로 업그레이드하라
HP-UX 10.20은:
최근 ARPA Transport 패치 모음을 설치한다. 그러면 TCP
연결찾기 해쉬테이블 크기를 설정할 수 있다. 기본값은
256 개이고, 2의 거듭제곱값으로 지정해야 한다. adb로 커널의
*disc* 이미지를 수정하여 설정한다. 변수명은
tcp_hash_size
이다. tcp_hash_size
변수값이 32비트이므로 disc 이미지를 수정할때 반드시 16비트
값을 기록하는 "w
" 대신 32비트 값을 기록하는
"W
"를 사용해야 한다.
어떤 값을 고를까? ftp://ftp.cup.hp.com/dist/networking/tools/connhist의
결과를 보고, 시스템에 존재하는 TCP 연결 총개수를 살펴봐라.
이 숫자를 해쉬테이블 크기로 나눈 값이 상당히 (10 이하) 작으면
좋다. HP의 SPECweb96 결과에서 일반적인 설정을 볼 수 있다.
결과는 http://www.specbench.org/에
있다. HP-UX 시스템이 초당 1000번 SPECweb96 연결을 하는 경우
TIME_WAIT
가 60초라면 60,000개의 TCP "연결"을
추적한다는 뜻이다.
ftp://ftp.cup.hp.com/dist/networking/misc/listenq를 실행하여 시스템의 연결대기행렬 깊이를 알 수 있다.
PA-8000기반 시스템에서 아파치를 실행한다면, 아파치
실행파일이 큰 페이지크기를 사용하도록 "chatr"한다. 명령은
"chatr +pi L <실행파일>
"이다. 실행파일을
실행하는 GID에 MLOCK
권한이 반드시 필요하다.
MLOCK
부여에 대해서는 Setprivgrp(1m)
를
참고하라. 수정후 Glance를 실행하여 서버의 메모리영역을 살펴보면
상당한 text 세그먼트가 잠겨있음을 확인할 수 있다.
다중프로세스 시스템에서 아파치를 실행한다면, 프로세스를
프로세스에 배정하는 mpctl()
를 사용한 작은
프로그램을 작성해봐라. 단순한 pid % numcpu
알고리즘으로도 충분할 것이다. 이 부분은 앞으로 소스코드에
포함될 수 있다.
FIN_WAIT_2
연결의 개수가 걱정스럽다면,
nettune을 사용하여 tcp_keepstart
값을 줄일
수 있다. 그러나 조심해야 한다 - 4분 보다 작게 설정하지 마라.
tcp_hash_size
를 잘 설정하였다면,
FIN_WAIT_2
값이 커도 (심지어 기본값인 2시간도)
문제없다 - 보통 성능에 큰 영향을 주지 않는다.
앞으로 소스코드에 포함될 부분이 더 있지만, 여기서 줄인다. 관심이 있다면 메일을 주길 바란다.
그럼 이만,
rick jones