Grails / Hibernate banco de dados cai sob carga: Não é possível conectar (mesmo quando o agrupamento)

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

Pergunta

Tenho uma aplicação em Grails. Eu uso Hibernate para acessar o banco de dados (por regras Grails padrão) Eu uso MySql e as obras do site e é estável (por 6 meses).

Estou fazendo testes de carga, e recentemente descobriu que as conexões rejeita banco de dados quando sob carga.

Usando o MySQL 5, eu posso ver tópicos relacionados oscilando em torno de 20. Pensei que salta entre 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)

A minha configuração de banco de dados é padrão. (O servidor MySQL está instalado localmente, não mostrado)

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

    maxIdle = 15
    maxActive = 100        
}

Eu deveria investigar C3P0? Ou devo Ratched minha maxActive para 1000 e esperar o melhor?

Foi útil?

Solução

O erro é Grails relatórios quando não pode obter uma conexão com o banco? Tempo esgotado? Recusou?

Quando você executar o teste, como carregado é a caixa? CPU por cento, uso de memória, etc.

É possível que o banco de dados é tão sobrecarregado que Grails é o tempo limite recebendo ligações. Se você deseja manipular carga, você vai querer ir para conexões de banco de dados agrupados. Sem pooling, Grails irá abrir e fechar uma conexão DB com cada solicitação.

Outras dicas

Verifique a configuração do mysql (/etc/mysql.conf ou equivalente local), particularmente as conexões max e conn máximo por configurações de usuário; Isso soa como se ele pode ser provenientes de mysql e não Grails.

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top