본문 바로가기
[DataBase]/MySql

MySQL max connections 설정

by 조조군 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

댓글