아파치 too many connection 으로 접속이 안될 경우

아파치 too many connection 으로 접속이 안될 경우

QA

아파치 too many connection 으로 접속이 안될 경우

본문

아파치 설정을 어떻게 해야 최적이 될까요?


접속자들이 많아질 경우 (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

우선 db의 max_connections 이 얼마나되는지 확인해 보시기 바랍니다. 

 

쉘로 접속하여 db로 접속후 show variables like "max_connections"; 를 입력 하시면 아래 예를 들은 이미지처럼  출력될겁니다.

 

c4cd56f55d8d9c122ce0bab7304e99f4_1488854403_264.png

 

그후 MySQL >

 set global max_connections = 200; 
와 같이 커넷션 수를 증가해서 실행 해주시면 됩니다.

 

또는 my.cnf 파일에서

[mysqld] 다음 칸에 max_connections=200 을 입력하고 저장 하시면 됩니다.

 

만약 예를 들은 숫자보다 크다면 더크게 적용해 주면 되겠죠....^^

 

 

 

 

 

mysql> show variables like "max_connections";
+-----------------+-------+
| Variable_name  | Value |
+-----------------+-------+
| max_connections | 256  |
+-----------------+-------+
1 row in set (0.05 sec)

현재 256 상태입니다.

서버를 병렬로 구성하셔서 로드밸런싱을 하시는 것도 좋은 방법이고요,

케바케입니다만 FPM을 사용하면 동일한 요청들에 대한 연산을 최적화 해서 메모리 효율을 높일 수 있습니다.

병목현상이 일어나는 원인부터 찾아보세요

 

에러 발생시 MySQL 프로세서수를 확인해 보세요.

 

slowlog 확인해시고 해당 쿼리들 모두 튜닝해보세요 

답변을 작성하시기 전에 로그인 해주세요.
전체 168
QA 내용 검색

회원로그인

(주)에스아이알소프트 / 대표:홍석명 / (06211) 서울특별시 강남구 역삼동 707-34 한신인터밸리24 서관 1404호 / E-Mail: admin@sir.kr
사업자등록번호: 217-81-36347 / 통신판매업신고번호:2014-서울강남-02098호 / 개인정보보호책임자:김민섭(minsup@sir.kr)
© SIRSOFT