mysql 커넥션수와 동시접속 설정하기


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;

 


 댓글

댓글 목록 (0개)