아파치 설정을 어떻게 해야 최적이 될까요?
접속자들이 많아질 경우 (too many connection 원인으로) 웹 사이트에 접속이 안되는 상황이 나옵니다.
서버의 최대 접속자 수 = (서버메모리 - mysql메모리) / 아파치 프로세스 평균메모리
아래 명령어를 통해 대략 565개정도 나옵니다.
ps aux | grep mysql | awk '{print $6}' | awk '{total = total + $1} END {print total/1024}'
(103)
ps aux | grep apache2 | awk '{print $6}' | awk '{total = total + $1} END {print total/1024}'
(26534)
ps aux | grep apache2 | wc -l
(1902)
netstat -nap | grep :80 | grep ESTABLISHED | wc -l
(2952) 까지 올라갑니다.(이런 경우는 버벅거리는 상황이지만)
아파치의 apache2.conf은 아래와 같이 설정했습니다.
<IfModule mpm_prefork_module>
ServerLimit 4096
StartServers 15
MinSpareServers 5
MaxSpareServers 360
MaxClients 4096
MaxRequestsPerChild 0
</IfModule>
기본적으로 메모리를 늘려야 할듯하구요
아파치 설정이 아닌 다른 부분을 확인해봐야할까요?
|
답변 3개 / 댓글 2개
채택된 답변
+20 포인트
8년 전
우선 db의 max_connections 이 얼마나되는지 확인해 보시기 바랍니다.
쉘로 접속하여 db로 접속후 show variables like "max_connections"; 를 입력 하시면 아래 예를 들은 이미지처럼 출력될겁니다.

그후 MySQL >
Copy
와 같이 커넷션 수를 증가해서 실행 해주시면 됩니다.set global max_connections = 200;
또는 my.cnf 파일에서
[mysqld] 다음 칸에 max_connections=200 을 입력하고 저장 하시면 됩니다.
만약 예를 들은 숫자보다 크다면 더크게 적용해 주면 되겠죠....^^
답변에 대한 댓글 2개
8년 전
8년 전
병목현상이 일어나는 원인부터 찾아보세요
에러 발생시 MySQL 프로세서수를 확인해 보세요.
slowlog 확인해시고 해당 쿼리들 모두 튜닝해보세요
Unknown
8년 전
서버를 병렬로 구성하셔서 로드밸런싱을 하시는 것도 좋은 방법이고요,
케바케입니다만 FPM을 사용하면 동일한 요청들에 대한 연산을 최적화 해서 메모리 효율을 높일 수 있습니다.
답변을 작성하려면 로그인이 필요합니다.
+-----------------+-------+
| Variable_name | Value |
+-----------------+-------+
| max_connections | 256 |
+-----------------+-------+
1 row in set (0.05 sec)
현재 256 상태입니다.