살아 숨 쉬는 웹 - 블루비

'2008/09/25'에 해당되는 글 2건

  1. 2008/09/25 Nikon Photoschool 지역순회편 (대전)
  2. 2008/09/25 MySQL max connections 설정
1 

Nikon Photoschool 지역순회편 (대전)Total 527 : Today 2 : Yesterday 2

Nikon Photoschool 대전에서 하는 군요

일시 : 2008년 9월 27일 (토) 14:00 ~ 20:00
장소 : 대전 컨벤션 센터

D700, D90의 새로운 기능 눈으로 확인 할 수 있는 기회일거 같습니다.
으.. D80 산지 일년 조금 넘었는데 이렇게 좋은 신제품이 출시되다니...


사용자 삽입 이미지
2008/09/25 20:42 2008/09/25 20:42
블루비 2008/09/25 20:42 by 블루비

TRACKBACK :: http://blueb.net/blog/trackback/1302

Leave a Comment
[로그인][오픈아이디란?]

MySQL max connections 설정Total 511 : Today 5 : Yesterday 3

Max connections 에러가 발생하면 PHP페이지에 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의 직접적인 이유인 것이다.


[콘솔에서 커넥션수 알아내기]
$ mysqladmin -u root -p variables | grep max_connection

| max_connections | 100

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

show variables like '%max%';


이제는, 클라이언트의 동시 접속자를 늘리는 명령이다.
먼저 mysql을 데몬을 kill 합니다.다시 아래와같이 서버를 재가동한다.


#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 &

참고로, 리눅스나 솔라리스 계열에서는 클라이언트의 동시 접속자수가 500 ~ 1,000 까지 가능하다고 합니다.하지만 1000 설정 하려고 해도 4way cpu에 상당히 많은 램이 필요하다고 할고 있다.
256이 적당하다.


여기서 max_connections 는 mysql 에 접속 할 수 있는 최대 사용자를 가르키며...
wait_timeout 은 접속 후 연결을 지속시키는 시간을 말한다


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


[콘솔에서]

$ 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';

[커넥션 확인]

mysql> show full processlist

[출처] mysql-too many connection|작성자 요루짱


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

[mysqld]
max_connections = 256
table_cache = 128
wait_timeout = 60







2008/09/25 14:00 2008/09/25 14:00
데이터베이스™/MySQL 2008/09/25 14:00 by 블루비

TRACKBACK :: http://blueb.net/blog/trackback/1303

Leave a Comment
[로그인][오픈아이디란?]
1 
전체 (799)
웹표준, 웹접근성™ (5)
웹프로그래밍™ (367)
웹기획™ (0)
웹디자인™ (5)
서버™ (34)
데이터베이스™ (44)
개발자료 (9)
트랜드 (60)
Study English (2)
블루비 (73)
오피스 다이어리 (19)
Textcube (2)
이슈 (20)
컴퓨터 악세사리 (18)
엔터테인먼트 (24)
좋은글 (82)
재테크 (1)
이벤트 (4)