2012-12-29 4 views
2

최근에 내가 내 MySQL 데이터베이스에 너무 많은 연결이 있음을 발견했습니다 : 나는 최근 CakePHP의 모든 시간을 내가 메인 페이지 (F5)를 새로 설치 한이유는 너무 많은 연결

mysql> show status like 'Conn%'; 
+---------------+-------+ 
| Variable_name | Value | 
+---------------+-------+ 
| Connections | 39 | 
+---------------+-------+ 
1 row in set (0.00 sec) 

mysql> show full processlist; 
+----+-------+-----------+--------+---------+------+-------+-----------------------+ 
| Id | User | Host  | db  | Command | Time | State | Info     | 
+----+-------+-----------+--------+---------+------+-------+-----------------------+ 
| 38 | enrmr | localhost | cakedb | Query | 0 | NULL | show full processlist | 
+----+-------+-----------+--------+---------+------+-------+-----------------------+ 

을 연결 수는 하나씩 증가합니다. 내가 다시 알 여전히 39

내에서 netstat 출력

netstat -n -a | grep 3306 
tcp  0  0 127.0.0.1:3306   0.0.0.0:*    ESCUCHAR 

연결 수를에는 mysql 재시작 또한 만약 내가 'MySQL의 좀비 연결'같은 것을 가지고 있다고 가정하자. 어떻게 그들을 죽일 수 있습니까? 그리고 웹 페이지가 새로 고침 될 때마다 어떻게 새로운 연결의 생성을 멈출 수 있습니까? (단 하나의 연결 만 할 수 있습니까?) 고마워요.

+0

아마도 CakePHP는 영구 연결을 열지 만 닫지 않을 것입니까? 구성에서 어디를 볼 것인지 알려주는 프레임 워크를 모르겠습니다 ... –

+0

왜 그 숫자가 너무 많다고 생각하십니까? – rene

답변

7

먼저 Connections은 증분 카운터입니다. 현재 연결이 아닙니다. 그것은 MySQL 인스턴스에 대해 설정되거나 닫힌 총 연결 수입니다.

현재 연결을 원하는 경우 Connections이 아닌 Threads_connected입니다.

두 번째로 39 개의 연결은 연결 스레드의 총 개수가 많지 않습니다. 단지 하나의 CakePHP 인스턴스가 단 하나의 쓰레드 만 활용할지라도, 모두 애플리케이션에 의존합니다.

+1

필자는 단일 코어 CPU가 10 % CPU를 넘지 않고 초당 약 150-200 개의 연결을 처리하는 것을 보았습니다. 연결을 영구적으로 유지하는 것을 잊어 버리면 아마도 도움이되지 않았기 때문에이 번호는 가장 문제가되지 않습니다. – Amelia

+0

우리는 55000 동시 연결에서 32 코어를 가진 박스를 가지고 있습니다. 그래서 39는 부하가되는 것조차 거의하지 않습니다. OP가 잘못된 메트릭을 보입니다. :) – favoretti

+0

감사합니다. 나는'Connections'가 현재 연결의 수라고 생각했습니다. –

관련 문제