2013-03-06 1 views
2

최근에 저희 웹 사이트에 문제가있었습니다. 사용자/방문자가 데이터베이스에 대한 연결이 거부되었습니다. PHPMyAdmin을 통해 로그온하려고 할 때 "# 1203 - 사용자가 이미 'max_user_connections'개 이상의 활성 연결을 가지고 있습니다."라는 메시지가 나타납니다.MySQL 최대 연결 허용 - 코딩 오류?

공유 호스트이며 허용되는 최대 연결 수는 20입니다. 나는 이것을 바꿀 수는 없지만 사이트는 보통 한 번에 20 개 이상을 가지고 있으며 오류는 약 1-2 시간 동안 나타났다.

호스트에 문제가 무엇인지 물었을 때 모든 답장은 다음과 같았습니다. "이 스크립트는 불쌍한 스크립트와 관련이 있으며 데이터베이스에 할당 된 모든 연결을 채우고 있습니다. (20 개). 반환하려는 스크립트 및 데이터 자산을 확인하십시오. "

정확히 무슨 뜻입니까?

이것은 내가 사용하고 코드의 전형적인 작품이다 : 나는 특정 스크립트의 방법으로 많이 제공 나던 여기에 정보를 알고

session_start(); 
require 'include.php'; 
mysql_connect($DBhost,$DBuser,$DBpass); 
mysql_select_db("$DBName"); 

,하지만 연결에 문제가없는 경우 궁금 닫혀 있습니까? 아이디어가있는 사람이라면 큰 도움이 될 것입니다. 이 문제를 일으킬 수있는 코딩 오류가 있습니까? 페이지가로드 된 후 연결이 자동으로 닫히지 않아야합니까?

는 phpMyAdmin과의 런타임 정보에 따라 현재 상태와 다음 서버 탭을 클릭하면, 얼마나 많은 현재의 연결을 확인하려면 사전

+0

PHP 코드가 실행될 때 연결이 해제되지 않을 가능성이 가장 높습니다. 전체 페이지 스크립트의 예를 들려 줄 수 있습니까? –

+0

[MySQL 오류 "너무 많은 연결"] (http://stackoverflow.com/questions/1202322/mysql-error-too-many-connections) – nickhar

+0

안녕하세요 제임스, 답장을 보내 주셔서 감사합니다. 오류가 발생했을 때 가장 많이 액세스 한 페이지를 실행했습니다. 로그인 페이지가 하나 였고, 이것을 확인하면 스크립트는 페이지의 시작 부분에 연결하고, 그 다음에 "mysql_connect ($ DBhost, $ DBuser, $ DBpass)"를 호출합니다. mysql_select_db ("$ DBName"); " 다시, 어떤 이유로. 이것이 제가 발견 한 유일한 페이지입니다. 이것이 문제가 될 수 있었습니까? –

답변

0

에 감사드립니다. 또는 실행하십시오 :

mysqladmin -uroot -ppassword processlist (from command line) 

호스트에 연결을 제한하려면 localhost에서만 연결하십시오. 나는 네가 인터넷에서 조사를 받았다고 의심한다. 이 경우 processlist 명령을 통해 알 수 있습니다.

+0

STATUS를 찾을 수없는 경우 동일한 작업을 수행해야하는 '프로세스'라는 링크가있을 수 있습니다. Sql 쿼리 창에서 'SHOW PROCESSLIST'를 실행할 수도 있습니다. – Bjorn