Como devo determinar o valor max_connections correto para o mysql no meu servidor web?

1

Atualmente, não tem nenhum conjunto ... É uma máquina debian rodando apache, php e mysql. Qual é a melhor maneira de determinar o melhor valor para essas configurações? Pontos de bônus se você também puder explicar como o mysql lida com as conexões para aplicativos da web ...

    
por ooops 13.07.2011 / 16:35

3 respostas

3

Se a configuração max_connections não for definida explicitamente, ela será configurada para o valor padrão, que eu acho que é 511.

Ao usar o mod_php no Apache, e supondo que você esteja usando conexões persistentes (use mysql_pconnect se você usar a antiga API do MySQL), então você deve ter max_connectionst no MySQL configurado para tantas solicitações simultâneas quanto você espera seu aplicativo, com alguns de sobra para administração e tal - de modo que, se você espera ter 500 solicitações simultâneas no aplicativo da Web, configuraria max_connection para algo como 550 ou 600.

Por favor, note algumas coisas:

  1. As solicitações simultâneas não são usuários: se você tiver 1000 usuários conectados ao site, e cada um estiver clicando em algo a cada 10 segundos, talvez você tenha apenas 100 solicitações simultâneas (ou menos - veja a próxima ponto).

  2. Solicitações simultâneas não são solicitações por segundo: é o número de solicitações que estão ativas no aplicativo a qualquer momento, independentemente de quão rápido cada solicitação é. Assim, por exemplo, assumindo uma carga constante de 1000 solicitações por segundo e se cada solicitação leva meio segundo para ser processada pelo seu aplicativo, você tem 500 solicitações simultâneas: com cada trabalhador do Apache atendendo a duas solicitações por segundo, você só precisa de 500 trabalhadores para o servidor 1000 pedidos por segundo.

por 13.07.2011 / 16:47
2

A maneira de determinar é coletar métricas com Munin ou Cacti e, com base em dados históricos, dar-se um pouco de proteção (25 a 50%, qualquer que seja o histórico máximo).

    
por 13.07.2011 / 16:57
0

O MySQL não suporta conexões para aplicativos da Web de forma diferente de qualquer outro cliente. A principal diferença reside no fato de que, em um aplicativo da Web, as conexões geralmente só duram enquanto o servidor precisa processar uma determinada página (a menos que você use pools de conexão). Consequentemente, os aplicativos da web usam muitas conexões de vida muito curta (enquanto os aplicativos de desktop usam poucas conexões de longa duração).

Geralmente, os valores padrão são um bom ponto de partida. Você pode então monitorar o número de conexões que estão realmente vivas usando o MySQLAdministrator. Isso fornece uma lista de todas as conexões ativas (em "Conexões do servidor") e também gráficos mostrando (por padrão) o uso da conexão, o tráfego e o número de consultas (em "Integridade", primeira guia). Estes gráficos são altamente configuráveis, basta clicar com o botão direito do mouse em um deles e explorar.

quando você vê o gráfico para o uso da conexão rastejar para o nível max_connections, você terá que tomar algumas decisões (Eu tenho RAM suficiente para mais conexões? Devo apenas aumentar? Preciso de outro servidor). Obviamente, outros fatores também desempenham um papel, como se o hardware pode ser atualizado e o desempenho geral e a otimização do servidor.

    
por 13.07.2011 / 18:46