É um site único causando estragos em seu servidor MySQL?

Ao definir um limite de conexão MySQL por usuário, você pode proteger outros sites em um servidor de um único local, causando uma sobrecarga de conexão.

Se sim, você não está sozinho.

 

Na minha serviço de otimização de MySQL, vejo frequentemente servidores com um par de sites que consomem 100% das conexões MySQL disponíveis.

Você provavelmente está familiarizado com os max_connections definição em my.cnf; mas você sabia que existe uma variável max_user_connections bem?

Os max_user_connections configurações limita o número de conexões de banco de dados em uma base por usuário.

Se você quiser aprender como aplicar esta variável para o seu servidor de hospedagem compartilhada, então continue a ler.

Max Conexões de usuário

Esta variável faz exatamente o que o nome sugere – que define um limite para o número máximo de conexões simultâneas qualquer usuário individual pode ter que seu banco de dados MySQL.

Em sistemas de hospedagem compartilhada, esta é uma configuração poderosa, como você pode usá-lo para evitar que um único usuário de usar-se todas as conexões do MySQL.

Definir Limites

Em geral, eu sugiro que você definir max_user_connections para 50-75% de suas configurações max_connections. Você definir esse valor na seção mysqld de seu my.cnf:

 

 

2
3
4
5
6
7
cat / etc / my .cnf
[Mysqld]
datadir = / var / lib / mysql
soquete = / var / lib / mysql / mysql .sock
user = mysql
max_connections = 400
max_user_connections = 200

Neste exemplo, temos 400 total de conexões permitidas e um único usuário pode usar até 200 conexões.

Onde é que eu recebo este número?

Isto é baseado em meu trabalho em 100 dos servidores MySQL.Em geral, acho que apenas um ou dois usuários que contribuem para a maioria das conexões do MySQL. Ao definir este número para 50-75%, você efetivamente reservar 25-50% dos slots de conexão do MySQL para seus outros usuários e sites.

Se você quiser ajustar esse, mais precisamente, eu recomendo que você monitorar seu MySQL para saber quando ocorrem os períodos de pico de conexão. Em seguida, durante este período, consultar o servidor assim que ver quem está fazendo o maior número de conexões.

Eu não entendo muito científica sobre isso. Eu normalmente apenas lista de processos mostra executado na linha de comando MySQL. I combinar isso com acompanhamento desde a minha através de ferramentas como NewRelic, ServerDensity ou qualquer ferramenta de monitoramento de servidor está instalado.

Eu, então, definir um limite que vai impedir que um usuário de assumir o banco de dados, mas ainda permitir conexões suficientes para o site para funcionar corretamente.

Benefícios

Ao definir max_user_connections, você pode reduzir a probabilidade de que uma única conta de usuário afeta negativamente a todos os sites no seu servidor. Isso é particularmente útil em ambientes de hospedagem compartilhada, onde você não pode ter qualquer controle sobre o código ou o tráfego seus usuários finais gerar.

Isso também pode ajudar se um DoS ou busca bot gera uma grande quantidade de tráfego para um site. Já vi casos podem onde uma pesquisa bot agressivo pode sobrecarregar um sistema MySQL. Ao contrário de tráfego normal, de busca bots atingiu várias páginas – a maioria dos quais não são prováveis ​​em cache em cache de consultas do MySQL ou outros caches. Como resultado, as cargas e conexões MySQL pode espiga. Definir os limites max_user_connections pode ajudar com esta situação.

 Um usuário por aplicativo

Você deve sempre usar contas de usuários únicos do MySQL para cada aplicação.Isso melhora a segurança e faz o diagnóstico de problemas de conexão mais fácil.

Um problema comum que eu vejo em servidores único inquilino é a tendência apenas para usar um usuário para todas as conexões de banco de dados.

Isso é um erro.

Para cada aplicação, eu sugiro que você crie um usuário e senha específica. Isso é bom tanto por razões de segurança e desempenho.

Usando um usuário específico para cada aplicação, você pode facilmente determinar qual aplicativo está fazendo um grande número de conexões com o banco de dados. Ao pentear este é max_user_connections, você pode reduzir a probabilidade de que um único aplicativo sobrecarrega o sistema.

Por exemplo, com um recente caso de otimização MySQL, eu achei que os pedidos de busca para um fórum de discussão foram desencadeando consultas MySQL longo de funcionamento. Estas consultas foram enchendo os slots de conexão para todo o servidor. Como resultado, o blog e carrinho de compras falhou.

Usando max_user_connections, fomos capazes de proteger as outras aplicações a partir dos problemas do fórum de discussão.

Inconvenientes

A principal desvantagem é que, se o número for muito baixo, então ele pode causar erros ocasionais em sites mais movimentados.Como estes erros podem ser esporádica, eles podem ser de difícil detecção.

Se você está acertando estes limites, a maioria das aplicações PHP irá retornar com o erro MySQL que há muitas conexões com o servidor MySQL. Os logs de erro do Apache ou PHP também pode fornecer pistas se você precisa aumentar esse limite.

Tirar

Use max_user_connections em servidores MySQL ocupadas para identificar as atividades específicas do usuário do MySQL de impactar negativamente outros usuários. Eu recomendo a criação max_user_connections para 50-75% de suas max_connections totais.

 

suporte qtag

Deixe uma resposta

O seu endereço de email não será publicado Campos obrigatórios são marcados *

5 × quatro =