2013-01-15 2 views

답변

13

max_user_connection=500 

을 넣어 시도 이처럼 연결이 끊어지면 열려있는 연결을 닫지 않을 가능성이 큽니다.

연결을 여는 코드를 검토하고 가능한 한 빨리 연결이 닫혀 있는지 확인하십시오. 일반적으로 을 사용하여 IDisposable (데이터베이스 연결 포함)을 구현하는 항목 주위에 키워드를 사용하여 이러한 개체가 필요로하는 범위를 벗어나면 즉시 삭제되도록합니다.

당신이 쿼리와 활성 연결의 현재 수를 확인할 수 있습니다

show processlist 

참조 : MySQL show status - active or total connections?

+0

쿼리가 끝날 때마다 항상 내 코드를 닫습니다 ...이 오류는 다른 컴퓨터 나 프로그램을 열 때만 나타납니다. – kelvzy

+0

하지만 실제로 닫히나요? 예외로 건너 뛸 수 있습니다. –

+0

예. 우리가 2-20 컴퓨터를 사용할 때 제대로 작동하지만 30을 더 추가하면 오류 1040이 발생합니다. – kelvzy

8

당신은 총 허용 연결을 증가 max_connections을 변경해야합니다.

그리고 당신이 사용자 연결 당 제한이 필요하지 않는 0 =>제한 기본 없습니다 max_user_connections 다시 설정합니다. set-variable=max_connections=500 프로그램에서

1

이 시도 sudo gedit /etc/mysql/my.cnf

가의 my.cnf 파일의 라인을 붙여 넣기를 연결을 닫지 않고 열어 두었습니다.

나는 똑같은 문제에 봉착하고 결국 확인했다.

catch를 시도한 후이 코드를 추가했습니다.

finally{ 
    try { 
     rs.close(); 
     p.close(); 
     conn.close(); 
    } catch (SQLException e) { 
     // TODO Auto-generated catch block 
     e.printStackTrace(); 
    } 
} 
+0

라인을 붙이면 "mysql : [ERROR] 설정 파일 /etc/mysql/my.cnf 22에 선행 그룹이 없습니다! mysql : [ERROR] 디폴트 처리에서 치명적인 오류입니다. 프로그램이 중단되었습니다! " – Nav

4

열었던 것을 :

터미널을 열고 다음 명령을 입력합니다 :

MySQL Too many connections

+0

"using "키워드를 사용하여보다 명확한 방법으로이 작업을 수행 할 수 있습니다. –

+1

@EricJ. 참고 위의 코드 조각은'C# '이 아니라'java'에 있습니다. – Arvind

16

서버 파티션이나 드라이브에서 사용 가능한 디스크 공간이 부족한 경우 MySQL이이 오류와 함께 다시 실행된다는 것을 알고 있어야합니다. 이 아닐 경우에 연결되어있는 실제 사용자 수는 다음 단계로 MySQL 서버 드라이브/파티션에 여유 공간이 있는지 확인하는 것입니다.

10

MySQL은 : ERROR 1040 : 너무 많은 연결

이 기본적으로 MySQL은 동시에 최대 연결 수를 처리하는 알려주고 기본적으로 동시에 100 연결을 처리합니다.

다음과 같은 이유로 MySQL 연결이 끊어집니다.

  1. 느린 쿼리

  2. 데이터 저장 기술

  3. 나쁜 MySQL을 구성 I는 다음을 수행하여이 문제를 극복 할 수 있었다

. 이것은 당신에게 이런 일을 반환합니다

show variables like "max_connections"; 

열기 MySQL command line tool 입력합니다.

+-----------------+-------+ 
| Variable_name | Value | 
+-----------------+-------+ 
| max_connections | 100 | 
+-----------------+-------+ 

예 : 200 MySQL 서버를 다시 시작하지 않고 다음 명령을 실행하여.

set global max_connections = 200; 

이제 MySQL을 다시 시작할 때 기본값 대신이 설정이 사용됩니다.

연결 수가 증가하면 MySQL을 실행하는 데 필요한 RAM 용량이 늘어납니다.

+0

참고 사항 : 새로운 기본 max_connections는 151입니다. https://dev.mysql.com/doc/refman/5.5/en/too-many-connections.html을 참조하십시오. – jing

0

현재 실행중인 응용 프로그램이 여전히 mysql에 액세스하고 있으며 모든 DB 연결을 사용하고 있는지 확인하십시오.

그래서 workbench에서 mysql에 액세스하려고하면 "너무 많은 연결"오류가 발생합니다.

모든 db 연결을 보유하고있는 현재 실행중인 웹 응용 프로그램을 중지하면 문제가 해결됩니다.

0

이 오류는 연결 제한이 최대 제한에 도달하여 구성 파일 my.cnf에 정의되어 있기 때문에 발생합니다. 및 사용하여 MAX_CONNECTIONS에게 다음과 변수를 증가 :이 오류를 해결 root 사용자 (MySQL은 root user에 대한 추가 하나의 연결을 미리 할당하기 때문에 당신이 루트로 로그인 할 수 있습니다)로 MySQL에 로그인하기 위해

명령 :

SET GLOBAL max_connections = 500; 

이 변경 사항은 다음 서버를 다시 시작할 때까지 표시됩니다. 이 변경 사항을 영구히 유지하려면 구성 파일에서 수정해야합니다. 당신은

vi /etc/my.cnf 

[mysqld] 
max_connections = 500 

This article

단계 workaround to fix this error에 의해 단계를 설명하고있다, 이렇게하여 할 수 있습니다. 그것을보십시오, 나는 당신을 도울지도 모른다 희망한다. 감사.