Program/Linux

아파치 튜닝

나이트로 2007. 6. 14. 14:19
아파치 튜닝
2004/05/21 00:28
1. 아파치 웹 서버 튜닝 (프로세스 갯수 늘려주기)
- apache/src/include/httpd.h: # 1.3.x 버젼
HARD_SERVER_LIMIT 256 -> 2048
-
prefork 일때 
아파치 1.3 은 포크 가능한 자식 프로세스는 기본값이 256개로 되어 있습니다. 이것을 변경하려면  
apache_1.3.24/src/include/httpd.h 파일에서 
#define HARD_SERVER_LIMIT 256 
요것을 서버 스펙에 따라서 적당히 늘려줍니다. 
아파치 2.0 은 역시 포크 가능한 자식 프로세스는 기본값이 256개로 되어 있고 역시 숫자를 변경하려면 
httpd-2.0.49/server/mpm/prefork/prefork.c 파일에서 
#define DEFAULT_SERVER_LIMIT 256 
역시 적당히 늘려줍니다.  저는 2048개로 늘려줬습니다.

아래 다른 방식들은 직접 적용해 보지 않았습니다.
Thread 방식으로 컴파일 했을때 워낙 좀비가 많이 생겨서
실무에서는 거의 쓰기 힘들겠더라구요..
아래는 다른 곳에서 참고로 복사했습니다.

worker 방식 
기본으로 16개의 차일드 프로세스와 그안에 64개의 쓰레드를 생성가능하므로 
16*64 = 1024 개의 쓰레드를 생성 할수있습니다. 
httpd-2.0.49/server/mpm/worker/worker.c 
기본적으로 생성가능한 차일드 프로세스수 조절 
#define DEFAULT_SERVER_LIMIT 16 
각 프로세스내에 생성 가능한 쓰레드 수 조절 
#define DEFAULT_THREAD_LIMIT 64 

perchild 방식 
기본으로 8개의 차일드 프로세스와 그안에 64개의 쓰레드를 생성가능하므로 
8*64 = 512 개의 쓰레드를 생성 할수있습니다. 
httpd-2.0.49/server/mpm/perchild/perchild.c 
기본적으로 생성가능한 차일드 프로세스수 조절 
#define DEFAULT_SERVER_LIMIT 8 
각 프로세스내에 생성 가능한 쓰레드 수 조절 
#define DEFAULT_THREAD_LIMIT 64 
- apache/conf/httpd.conf:
Timeout 300 -> 180 or 150
MaxKeepAliveRequests 100 -> 1000
KeepAliveTimeout 15 -> 30
MinSpareServers 5 -> 20
MaxSpareServers 10 -> 40
StartServers 5 -> 20
MaxClients 256 -> 1024
2. 커널 소프트 레벨 튜닝
- ulimit -n 32768   # 오픈 할 수 있는 파일 갯수 증가 ulimit -a로 확인
- /proc/sys/fs/file-max: 4096 -> 32768
- /proc/sys/fs/inode-max: 16384 -> 65536
- /proc/sys/net/ipv4/tcp_keepalive_time: 7200 -> 1200
- /proc/sys/net/ipv4/tcp_fin_timeout: 60 -> 30
- /proc/sys/net/ipv4/tcp_sack: 1 -> 0
- /proc/sys/net/ipv4/tcp_timestamps: 1 -> 0
- /proc/sys/net/ipv4/tcp_syncookies: 0 -> 1
- /proc/sys/net/ipv4/tcp_retries1: 7 -> 2(3으로 되어 있어서 수정하지 않음)
- /proc/sys/net/ipv4/tcp_max_syn_backlog: 1024 -> 8192
- /proc/sys/net/ipv4/tcp_window_scaling: 1-> 0
echo 32768 > /proc/sys/fs/file-max
echo 65536 > /proc/sys/fs/inode-max
echo 1200 > /proc/sys/net/ipv4/tcp_keepalive_time
echo 30 > /proc/sys/net/ipv4/tcp_fin_timeout
echo 0 > /proc/sys/net/ipv4/tcp_sack
echo 0 > /proc/sys/net/ipv4/tcp_timestamps
echo 1 > /proc/sys/net/ipv4/tcp_syncookies
echo 2 > /proc/sys/net/ipv4/tcp_retries1
echo 8192 > /proc/sys/net/ipv4/tcp_max_syn_backlog
echo 0 > /proc/sys/net/ipv4/tcp_window_scaling

출처 : Tong - polomini님의 Linux통

'Program > Linux' 카테고리의 다른 글

subversion(svn) 리눅스 설치  (0) 2007.12.20
리눅스 기본 팁  (0) 2007.06.14
아파치 튜닝3  (0) 2007.06.14
아파치튜닝2  (0) 2007.06.14
리눅스 AMP 설치  (0) 2007.06.14