HPUX에서 고성능 웹서버 실행하기 - Apache HTTP Server Version 2.2

Apache Server 2.2

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

http://www.cup.hp.com/netperf/NetperfPage.html