Apache HTTP Server Version 2.2

Apache > HTTP Server > Documentation > Version 2.2 > Platform Specific Notes

# HPUX에서 고성능 웹서버 실행하기

가능한 언어: en | ko

    Date: Wed, 05 Nov 1997 16:59:34 -0800
    From: Rick Jones <raj@cup.hp.com>
    Reply-To: raj@cup.hp.com
    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

가능한 언어: en | ko