2009-02-20 2 views
5

Grails에 응용 프로그램이 있습니다. 데이터베이스에 액세스하기 위해 최대 절전 모드를 사용합니다 (표준 grails 규칙에 따라) MySql을 사용하면 사이트가 작동하고 안정적입니다 (6 개월 동안).Grails/Hibernate 데이터베이스가로드 중 충돌 함 : 연결할 수 없습니다 (풀링 할 때조차도)

부하 테스트를 수행하고 있으며 최근에 부하가 걸릴 때 데이터베이스가 연결을 거부한다는 사실을 발견했습니다. 내 데이터베이스 구성이 표준입니다

mysql> show status like '%con%'; 
+--------------------------+-------+ 
| Variable_name   | Value | 
+--------------------------+-------+ 
| Aborted_connects   | 72 | 
| Connections    | 65539 | 
| Max_used_connections  | 101 | 
| Ssl_client_connects  | 0  | 
| Ssl_connect_renegotiates | 0  | 
| Ssl_finished_connects | 0  | 
| Threads_connected  | 1  | 
+--------------------------+-------+ 
7 rows in set (0.00 sec) 

(30) - 내가 스레드를 볼 수 있습니다 MySQL 서버 5를 사용

(11) 사이에 내가 점프 약 20 생각을 유혹 연결되어 있습니다. (MySql 서버가 로컬에 설치되어 있지 않습니다.)

dataSource { 
    pooled = false 
    driverClassName = "com.mysql.jdbc.Driver" 
    username = "username" 
    password = "secret" 

    maxIdle = 15 
    maxActive = 100   
} 

C3P0을 조사해야합니까? 아니면 maxActive를 1000으로 올려서 최상을 기원해야합니까?

답변

4

Grails가 데이터베이스 연결을 할 수 없을 때 어떤 오류가 발생합니까? 시간 초과? 거절 당했어?

테스트를 실행할 때 상자는 어떻게로드됩니까? 백분율 CPU, 메모리 사용량 등

데이터베이스가 과부하되어 Grails가 연결 시간 초과가 될 수 있습니다. 로드를 처리하려면 풀링 된 DB 연결로 이동해야합니다. 풀링을하지 않으면 Grails는 각 요청에 따라 DB 연결을 열고 닫습니다.

+0

풀링과 MySQL 연결 제한이 답인 것처럼 보입니다. – user57660

0

mysql 구성 (/etc/mysql.conf 또는 해당 지역에 해당)을 확인하십시오. 특히 사용자 설정 당 최대 연결 및 최대 연결 수를 확인하십시오. 이것은 마치 grails가 아닌 mysql에서 오는 것처럼 들린다.