Como posso limitar o número máximo de conexões simultâneas ao banco de dados do MediaWiki com o MySQL?

1

Nós temos um wiki do MediaWiki em um banco de dados MySQL. No entanto, outras aplicações também estão acessando o MySQL. Atualmente, temos no máximo 100 conexões máximas com o banco de dados, das quais o MediaWiki é permitido 10.

No entanto, em horários de pico, mais de 10 usuários tentam acessar o wiki simultaneamente, o que significa que podem receber um erro de conexão com o MySQL.

Especificamente, a mensagem diz:

"database name" has a problem

Sorry! This site is experiencing technical difficulties.

Try waiting a few minutes and reloading.

(Can't contact the database server: Unknown error ("mysql database name"))

Meu pensamento é limitar dentro do MediaWiki (por exemplo, em LocalSettings.php) o número de conexões que tentam acessar o banco de dados. Então as pessoas não receberão uma mensagem de erro - elas terão que esperar mais.

Existe uma maneira de fazer isso? Ou existe uma solução melhor?

    
por Wikis 19.11.2010 / 11:36

1 resposta

2

Dentro da aplicação é onde você precisa fazer exatamente o que você está querendo, sim.

Demorarei um pouco para recomendar: Primeiro, parece que o site está tendo uso suficiente para precisar de mais conexões de banco de dados, e esse tipo de coisa pode não ser realmente capaz de ser totalmente ajudado. (Eu só posso supor, por exemplo, que o MediaWiki não está escrito de forma que é desnecessariamente usando conexões extras do que o necessário)

Meu pensamento básico aqui é, se possível, tentar dar ao site o que ele precisa para operar. Se isso causar problemas com o servidor MySQL compartilhado, talvez esse gargalo precise ser resolvido. Seja uma espera ou um erro , a falha em conectar-se ao banco de dados atrairá um certo número de usuários do site e, em geral, criará uma experiência negativa para eles.

A solução "fácil" seria alterar a mensagem de erro para ser mais amigável, mas isso pode não resolver os problemas.

Assumindo que você não pode aumentar o limite de 10 conexões, o aplicativo pode precisar ser alterado (e talvez bastante extensivamente) para que cada tentativa de conexão com o banco de dados seja envolvida em código que detecta falhas, aguarda um tempo predeterminado, e tenta novamente um certo número de vezes.

Você pode ter sorte, e o MediaWiki pode ter essa funcionalidade, que pode ser configurada. Alguém mais familiar pode ajudar com isso, se for o caso. Outro (mais provável) ponto de sorte seria se o código de acesso ao banco de dados fosse muito bem contido, e por isso essa solução não seria uma questão de mudar mais de 300 lugares no código para fazer isso (uma perspectiva demorada e agravante , para dizer o mínimo).

Eu só recomendaria essa solução se fosse muito raro que esses erros acontecessem. Se for uma ocorrência regular, pode acabar levando o site a um rastreamento, onde ele está esperando / repetindo as conexões do banco de dados constantemente ... e ainda assim retornando um erro eventualmente, de qualquer forma.

    
por 19.11.2010 / 11:51