[웹서버] apache+php+mysql 최적화 시키기..
지금까지 오랫동안(3개월 이상) 테스트한 결과를 올립니다.
아파치와 MySQL를 사용할 때 대부분(?)의 서버에서 기본 설정을 이용하고
있는 것으로 알고 있습니다.
저또한 마찬가지 이었구요….
그런데 사용자가 급격히 증가되고, 서버에 접근하는 시간대가 분산되어 있
지 않구, 특정시간대에 몰리다보니,
서버가 조금 힘들어 하더군요.
그래서 갖가지 자료 및 서버의 자료(로그파일, 메모리·CPU 사용률 등등)
을 참조하여 서버의 설정을 다양하게 변경하여 사용한 결과
그래도, 최적이라도 할 수 있는 설정을 찾아내어서 이렇게 올립니다.
————-
현재 서버의 사양은
– CPU : Pentium III 550Mhz Dual
– Mem : 512MB
– HDD : SCSI 9.1GB
– LAN : 10Mbps Shared
이며, 설치되어 있는 프로그램으론,
– 인터넷 서버 ; Apache 1.3.12
– DBMS : MySQL 3-22-32
– Script 언어 : PHP4.0 + Optimizer
입니다.
/usr/local/mysql/bin/safe_mysqld -O back_log=32 -O key_buffer=8M \\
-O max_connections=128 -O max_connect_errors=80 -O table_cache=256 \\
-O sort_buffer=8M -O record_buffer=1M -O wait_timeout=600 &
Apache 서버는
– Timeout 300
– KeepAlive Off
– MaxKeepAliveRequests 100
– KeepAliveTimeout 1
– MinSpareServers 30
– MaxSpareServers 1024
– StartServers 30
– MaxClients 1024
– MaxRequestsPerChild 0
——————–
제가 관리하고 있는 서버는 원격교육을 목적으로 구축되어 있다보니,
DB접근량이 굉장히 많습니다.
그래서, 설정하는데 무척이나 고생하였습니다.
그럼….
——————–
이 자료의 목적은 동시접속자가 많아 서버에 과부하가 많이 걸렸을 때,
서버의 효율성을 증가시키기 위한 것입니다.
그냥 테스트 목적으로 소규모(중규모)로 서버를 운영할 경우 별로 도움이
되지 않습니다. : 디폴트의 설정을 그냥 이용하시면 됩니다.
동시접속자가 100명 이상이 될 때 ….
P.S :
1. MySQL의 최적화와 관련된 자료는 MySQL의 document chapter 10을 참조
하시면 되구요… Apache는 Rule of Thumb의 방법 밖에는 …
2. 테스트 목적으로 관리하고 있는 서버(Celeron 400Mhz, 128M, 최대 동시
접속자 20명 내외)에서 위와 같은 설정을 하고 테스트를 해본 결과, 디폴
트로 설정과 차이가 거의 없습니다.
그러나 동시접속자가 50명이상이 되면, 확실히 효과가 발생합니다. 그런
데 메모리가 조금 적어 cache 및 buffer, I/O에서 효율성이 현저히(???)
저하됩니다.
———————-
서버를 구축할 때 가장 신경을 써야 할 부분은 메모리입니다.(당근??). 그
런데 몇몇 서버를 검사해 본 결과, 그냥 웹서버로만 사용하면서 X-windows
가 구동되고 있는 경우가 많았습니다.
피같은 메모리를 왜 낭비하죠…. 위의 Celeron 서버를 가지고도 최고 112
명까지 소화를 해 냈습니다. 엄청난 양의 DB사용이 있었는데도…..
사용자가 느끼는 속도 중 70%가 네트워크의 대역폭에서 의하여, 나머지
30%가 서버의 성능에 의하여 좌우됩니다.
네트워크의 대역폭 확대시 엄청난 양의 돈이 필요하지만,
서버를 조금만 잘 관리하면, ?????????
너무 장황하게 설명하여 죄송합니다.