본문 바로가기
[DataBase]/MySql

MySQL max connections 설정

by control+c 2015. 6. 5.
반응형

 

Max connections 에러가 발생하면 페이지에 Too many connection가 나옵니다. 이는 mysql에서 동시 연결 가능한 클라이언트 수를 넘었기 때문이다.

 

MySQL서버는 동시에 연결될 수 있는 클라이언트의 수가 기본으로 100명이다. 동시 접속자수를 변경하려면 my.cnf을 수정하고 MySQL서버를 재 시작하면 된다.

 

이런 에러의 원인으로는 다음과 같습니다.

 

1) mysql_connect()함수로 DB connect를 했다면 해당스크립트가 종료됨과 동시에 mysql_close()함수를 호출하지 않아도 자동으로 연결이 종료된다.

하지만, mysql_pconnect()함수는 해당스크립트가 종료된 후 mysql_close()함수가 호출되었더라도 연결이 끊어지지 않은 채로 계속 연결을 유지하고 있어서 금방 커넥션을 다 채울 수도 있다.

2) MySQL 의 메뉴얼을 보면 mysql_connect()함수를 사용하면 해당스크립트의 종료와 함께 연결이 종료된다고 되어 있지만 ./mysqladmin -u -p processlist라는 명령어를 통해서 살펴보면 그대로 살아 있음을 알 수 있다.

mysqladmin -u -p variables의 결과로서 볼 수 있는 여러 가지 시작 옵션들 중 wait_timeout의 값만큼 서버에 그대로 연결을 유지한 채로 남아 있는 것이다.

따라서, 이것이 too many connections의 직접적인 이유인 것이다.

 

그러므로 아래의 값을 조절하여 Max connections 에러를 막을 수 있다.

• max_connections - 최대 동시 접속 가능 수 기본값=100

• wait_timeout - 종료전까지 요청이 없이 기다리는 시간

 

[콘솔에서 커넥션수 알아내기]

$ mysqladmin -u root -p variables | grep max_connection

| max_connections | 100

 

[mysql에서 커넥션수 알아내기]

 

이제는, 클라이언트의 동시 접속자를 늘리는 명령이다. 먼저 mysql을 종료하고 아래와 같이 서버를 재가동한다.

#mysqld_safe --language=korean --datadir=/data --user=mysql --default-character-set=euc_kr -O max_connections=256 -O table_cache=128 -O wait_timeout=60 &

#mysqld_safe -O max_connections=256 -O table_cache=128 -O wait_timeout=60 &

 

MySQL 설정 파일(my.cnf or 윈도우의 경우는 my.ini) 에 직접 추가 한 다음 재실행을 하셔도 적용이 됩니다.

 

[mysqld]

max_connections = 500

wait_timeout = 60

 

MySQL에서 실행하는 방법

 

mysql> set global max_connections=500;

mysql> set wait_timeout=60;

 

이렇게 한 후 다시 확인한다.

 

[콘솔에서]

$ mysqladmin -u root -p variables | grep max_connection

$ mysqladmin -u root -p variables | grep wait_timeout

 

[mysql에서]

mysql> show variables like '%max_connection%';

mysql> show variables like 'wait_timeout';


출처 :https://t1.daumcdn.net/cfile/tistory/135898324C5BF1B309

 

반응형

'[DataBase] > MySql' 카테고리의 다른 글

[ERROR]Lock wait timeout exceeded; try restarting transaction  (0) 2015.06.10
CONCAT() 문자열 합치기  (0) 2015.06.08
SHOW 명령어  (0) 2015.04.02
일별 통계쿼리  (0) 2015.03.02
DDL Database생성 및 새계정으로 권한 주기  (0) 2014.10.11

댓글