Mysql
 sql >> Base de Dados >  >> RDS >> Mysql

'max_user_connections' definido como 200 - ainda recebendo erro


Quanto ao seu problema de "conexões máximas", pode ser uma das três coisas:

1) O servidor já tem muitas conexões abertas. Um servidor MySQL só pode lidar com um número específico de conexões abertas antes de se recusar a permitir mais, e esse limite é compartilhado entre todos os usuários do servidor. Geralmente é definido bastante alto, embora seja facilmente possível para alguém efetivamente DoS um servidor MySQL fazendo muitas conexões (mas veja abaixo)

2) Sua conta de usuário tem um número limitado de conexões permitidas por hora - quaisquer outras conexões dentro dessa hora seriam rejeitadas. Isso é definido por usuário.

3) Suas contas de usuário têm um número limitado de conexões abertas permitidas - quaisquer outras conexões seriam rejeitadas. Isso é definido por usuário.

É sempre importante ler a mensagem de erro retornada na tentativa de conexão, pois na maioria dos casos isso identificará o motivo exato da falha.

Se sua conta tiver um limite máximo de conexões (cenário nº 3), o erro seria:Código:
ERROR 1226 (42000): User 'mysqldba' has exceeded the 'max_user_connections' resource (current value: 1) 

Onde 'mysqldba' seria seu nome de usuário, e o 'valor atual' é o número máximo de conexões abertas permitidas por este usuário.

Se sua conta tiver um número máximo de conexões por limite de hora (cenário nº 2), o erro seria:Código:
ERROR 1226 (42000): User 'mysqldba' has exceeded the 'max_connections_per_hour' resource (current value: 1) 

Onde, mais uma vez, 'mysqldba' seria seu nome de usuário, e o 'valor atual' é o número máximo de conexões por hora permitidas para este usuário.

Se você recebeu a mensagem de erro (código 1040) indica que todo o servidor MySQL ficou sem slots de conexão - este é o cenário DoS que mencionei acima.

O que você pode fazer sobre isso? Pelo que você disse, você não tem privilégios de superusuário neste servidor, então nada, além de reclamar com o SysAdmin responsável por esse servidor. Eles podem aumentar o número máximo de conexões permitidas, o que pode resolver o problema a curto prazo, mas se outra pessoa usando o servidor estiver criando um número estúpido de conexões de banco de dados, os slots serão preenchidos novamente. O que eles provavelmente deveriam fazer é também impor um limite máximo de conexão aberta por usuário - isso impediria que os usuários pesados ​​entupissem o servidor. Em uma situação de servidor compartilhado como a sua, isso faria mais sentido - 'usuários avançados' teriam/deveriam ter seu próprio servidor, ou poderiam/deveriam pagar para aumentar suas conexões abertas máximas.