Grails/Hibernate 데이터베이스가 부하에서 충돌합니다. 연결할 수 없습니다 (풀링 할 때에도)

StackOverflow https://stackoverflow.com/questions/571279

문제

성배에 신청서가 있습니다. Hibernate를 사용하여 데이터베이스에 액세스하고 (표준 성배 규칙에 따라) MySQL을 사용하고 사이트가 작동하며 (6 개월 동안) 안정적입니다.

로드 테스트를 수행하고 있으며 최근에 데이터베이스가로드 중일 때 연결을 거부한다는 것을 발견했습니다.

MySQL Server 5를 사용하여 20 주경에 연결된 스레드가 연결되는 것을 볼 수 있습니다. 11-30 사이에서 점프한다고 생각했습니다.

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)

내 데이터베이스 구성은 표준입니다. (MySQL 서버는 로컬로 설치되어 표시되지 않음)

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

    maxIdle = 15
    maxActive = 100        
}

C3P0을 조사해야합니까? 아니면 Maxactive를 1000으로 묶고 최선을 다해야합니까?

도움이 되었습니까?

해결책

데이터베이스 연결을 얻을 수 없을 때 성배가보고하는 오류는 무엇입니까? 시간 초과? 거절 했나요?

테스트를 실행할 때 상자가 얼마나로드 되었습니까? CPU 퍼센트, 메모리 사용량 등

데이터베이스가 과부하되어 성배가 연결을 타이핑 할 수 있습니다. 로드를 처리하려면 풀링 된 DB 연결로 이동하려고합니다. 풀링하지 않고 성배는 각 요청에 따라 DB 연결을 열고 닫습니다.

다른 팁

MySQL 구성 (/etc/mysql.conf 또는 로컬 동등성), 특히 사용자 설정 당 최대 연결 및 최대 연결을 확인하십시오. 이것은 마치 MySQL에서오고 성배가 아닌 것처럼 들립니다.

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top