�۾���:������  ������Ʈ ���ɰ��� ���� Ŀ�� Ʃ�� ��� ��ȸ��:1187 


taejun@tunelinux.pe.kr
http://tunelinux.pe.kr/



������ �� ������Ʈ�� ���ɰ����� ���� Ŀ�� Ʃ�� ����Դϴ�. �ɽ��� �е� �ѹ� ������ �� ������. (���� ���� �� ��) ���� �׳� �ڷḸ �Űܿ��� ���Դϴ�. 

�����ڷ� 
http://www.apache.org/docs/misc/perf-tuning.html 
web performance tunning - ������ 

�׷����� ������ ���� �ֽ��ϴ�. ������Ʈ�� ���� ������ ���ؼ��� Ŀ�ο����� �մ��ִ� ���� �ƴ϶� OS, ��Ʈ��, ���α׷��� �� �پ��� ������ ���� �����ؾ� �Ѵٴ� ���Դϴ�. ���� �ϵ���� ������ �������� ����ä ������ �ٲٸ� ������ ����ٴ� ���Դϴ�. ���� �Ϲ������� ������ html���񽺴� ������ �ȵ����� ������ ���������� ����� ���� ��Ʈ���� �ƴ϶�� cgi�� ��찡 �����ϴ�. ����ġ�� ����ִ� ab, ���н��� time, ping, netstat �� �پ��� ���ɾ���� �̿��ؼ� �׻� �ý����� ���¸� ����͸��غ��� �ӵ��� ��� ���ƾ� �մϴ�. ���� �ƹ��� Ʃ���� ���ص� ���������� �̹����� ��û���� �־�дٸ� �����ϴ°�������. ���� �� �𸣸鼭 �ũ�� ����Ŭ Ʃ���� �Ѵٰ� �ߴ��� cpu 4��, �޸� 2G�� �ý��ۿ��� ������ �Ϲ�PC���� ����Ŭ�� �� ������������. �� �𸣴� ��쿡�� �⺻���� ����ϴ� ���� �� �������� ������. �Ʒ� ������ keepalive �ɼ��� ���� ����Ʈ���� ��쿡�� off�� �� ���� ���� �� ���� ��쵵 ���� �ֽ��ϴ�. ���� ó���ϰ� ������ �������� �����ִ� ���� �ƹ��ϵ� ���� ����ä �׳� ���μ����� ������� ��� �ͺ��ٴ� ������. 

������(taejun@tunelinux.pe.kr http://tunelinux.pe.kr) 


�� ����ġ �� ���� Ʃ�� 

����ġ �� ������ Ʃ���� �����ϰ� �� �κ����� ���� �� �ִ�. ù ��°�� �ҽ��ڵ忡 �ϵ��ڵ� �Ǿ� �ִ� ���� ���� �����ϴ� ���̰�, �� ��°�� ȯ�漳�� ������ �� ���� ������ �����ϴ� ���̴�. 

1) �ҽ����� 
httpd.h ���Ͽ� �������� ��� HARD_SERVER_LIMIT ���� 256���� �⺻ �����Ǿ� ������, �� ���� ������ ������ �� �ִ� �ִ� ������ �ǹ��Ѵ�. �� ���� 1280���� �����Ѵ�. 

2) ȯ�漳�� ���� 
��. KeepAliveTimeout 
Ŭ���̾�Ʈ�� ������ ������ ���� ��� �ϳ��� �� ���� ���μ����� �ش� �� �������� ���� ��ü���� ������ ���ο� ���μ����� �������� �ʰ� ���������� ������ �����ϸ� ����ϸ�, �� Ŭ���̾�Ʈ�� ��û�� ���� Ÿ�Ӿƿ��� ���� ���̴�. �⺻ 15�ʿ��� 30�ʷ� ����. 
��. MaxKeepAliveRequests 
�� ���� ���μ����� ���������� ������ �����ϸ鼭 ó���� �� �ִ� ��û �����̴�. 
100���� �����Ǿ� ������, 10000���� ����. 
��. StartServer, Min/MaxSpareServer 
�⺻ ������ 5, 5, 10�����̸�, �� ������ Standalone ����� ��� ���ο� ���� ��û�� ������ ������ Spare Child Process�� ��ũ�Ͽ� ���ο� Child Process�� �����Ƿ� �⺻������ Spare Process�� �������� ���ֿ� ���� ��ó�� �� �ִ�. StartServer 20, MinSpareServer 20, MaxSpareServer 40���� ����. 
��. MaxRequestsPerChild 
�� ���� ���μ����� ���� Ƚ���� Ŭ���̾�Ʈ ��û�� ó���ϰ� ����Ǵ� ��ġ�̸�, 1000���� ����. 
��. MaxClients 
���ÿ� ����� �� �ִ� �ִ� ���μ��� ���� �����ϴ� ���̸�, �⺻ 256���� �����Ǿ� �ִ�. �̸� 512���� ����. 
��. ����� ���� 
�̿��ڰ� ������ ������ ��ϵǴ� access_log ������ ��� �ѹ� ���Ӵ� �� 85����Ʈ�� �����ϸ�, ���ӷ��� ���� ��� �� ������ ũ��� ������ ��û����. �̷� ��� ���Ӷ����� �α������� �׼����ϴµ� ����� �ð��� ���ϰ� �ɸ��Ƿ� �α� ������ �����ð����� �ʱ�ȭ�Ͽ� �׻� �淮ȭ ���� �� �ʿ䰡 �ִ�. ����ġ���� �����ϴ� rotatelog�� �̿�. 


��Ŀ�� ����Ʈ ���� Ʃ�� 

Ŀ���� �����ϴ� �Ķ���Ͱ��� /proc ���� �ý����� �̿��ؼ� ������ �Ϸ�� �����Ŀ� �����Ѵ�. ���⼭�� �ַ� ���Ͻý��۰� ��Ʈ�� �ڿ��� ���õ� ���뿡 ���ؼ� Ʃ���Ѵ�. 

1) ���� �ý��� ���� 
- ������ Ŀ���� �Ҵ��� �� �ִ� ���� ������ �ִ밪 : 4096 -> 32768 
- ������ Ŀ���� �Ҵ��� �� �ִ� inode ������ �ִ밪 : 16384 -> 65536 
- root ����ڿ� ���� �Ҵ��� �� �ִ� ���� ������ �ִ밪 : 1024 -> 32768 
- �ϳ��� ���μ����� ������ �� �ִ� ������ ���� : 256 -> 512 

2) ��Ʈ�� �ڿ� ���� 
- TCP �� Keep Alive �޽����� ������ �ð� ���� : 7200 -> 1200 
- ������ �׻� CLOSE�DZ� ���� ������ FIN �� ��ٸ��� �ð� : 180 -> 30 
- �ϳ��� TCP ���� ��û�� ���� ������ �������ϴ� Ƚ�� : 7 -> 2 

�̷��� �����Ǵ� ������ �ý����� ���õǸ鼭 ��ũ��Ʈ�� ���� �����Ǿ�� �DZ� ������ /etc/rc.d/rc.local ������ ������ �κп� ���ǵȴ�. 

�� Ŀ�� �ϵ� ���� Ʃ�� 

Ŀ�� �ҽ��� ���� �����Ͽ� ���Ѱ��� �����Ѵ�. �̸� ���ؼ��� Ŀ�� �������� �ʼ����̸�, ���ɽ��� ������ �ʿ��ϴ�. 

- ���� ���� ���� 
- ó���� �� �ִ� ���μ��� ���� 




**���� 


1. ����ġ �� ���� Ʃ�� 
- apache/src/include/httpd.h: 
HARD_SERVER_LIMIT 256 -> 1280 
- apache/conf/httpd.conf: 
MaxKeepAliveRequests 100 -> 10000 
KeepAliveTimeout 15 -> 30 
MinSpareServers 5 -> 20 
MaxSpareServers 10 -> 40 
StartServers 5 -> 20 
MaxClients 256 -> 1024 

2. Ŀ�� ����Ʈ ���� Ʃ�� 
- ulimit -n 32768 
- /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: 180 -> 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 
- /proc/sys/net/ipv4/tcp_max_syn_backlog: 128 -> 8192 
- /proc/sys/net/ipv4/tcp_window_scaling: 1-> 0 

3. Ŀ�� �ϵ� ���� Ʃ�� 
- /usr/src/linux/include/linux/fs.h: 
NR_FILE 4096 -> 32768 
INR_OPEN 1024 -> 32767 
- /usr/src/linux/include/linux/tasks.h: 
NR_TASKS 2560 -> 3192 
MAX_TASKS_PER_USER 2048 -> 3192 
- /usr/src/linux/include/linux/limits.h: 
NR_OPEN 1024 -> 32767 
- /usr/src/linux/include/net/tcp.h: 
TCP_TIMEWAIT_LEN (60*HZ) -> (15*HZ)