Como estimar o volume de transferência de dados da rede para um banco de dados mysql

7

Ao planejar a porta do meu aplicativo (Java + Tomcat + MySql) para uma hospedagem na nuvem, descobri que um fator importante a ser considerado é o volume de dados transferidos de / para o banco de dados, pois é limitado por provedores de nuvem. . Não encontrei uma maneira conveniente de estimar esse volume com base nas estatísticas de uso (por exemplo, número de consultas e tamanho médio da linha), nem como avaliar a utilização atual.

Existe alguma estatística embutida no MySql que eu possa usar ou é melhor monitorar isso da perspectiva da rede, monitorando os dados transferidos para / da porta usada pelo MySql.

Obrigado antecipadamente

    
por pablochacin 12.08.2013 / 09:03

2 respostas

5

Se você quiser medir diretamente o tráfego de rede dentro e fora do MySQL em sua aplicação, existem duas variáveis de status que você pode monitorar:

NÍVEL MUNDIAL

Você pode buscar essas para todas as sessões (passada e presente) com essa consulta

SELECT * FROM information_schema.global_status
WHERE variable_name IN ('Bytes_received','Bytes_sent');

Isto lhe dará o número de cada um para o tempo de vida da instância mysql.

NÍVEL DE SESSÃO

Você pode buscá-los para cada sessão com

SELECT * FROM information_schema.session_status
WHERE variable_name IN ('Bytes_received','Bytes_sent');

Isso lhe dará o número de cada um para o tempo de vida da sessão do banco de dados.

Você poderia usar GUIs para representá-las ao longo do tempo. Desde que você mencionou Java e Tomcat, você pode querer criar sua própria apresentação. Você teria que manter os valores anteriores, obter os valores atuais, subtraí-los e, em seguida, plotar ou exibir médias como desejar.

Experimente!

CAVEAT

Eu discuti isso no DBA StackExchange há muito tempo ( MySQL: O 'bytes_sent' e 'bytes_received' incluem dados do mysqldump ? ) Qualquer coisa que tenha um thread será contada nessas duas variáveis, incluindo internals como o MySQL Replication (via thread IO e thread SQL).

Em vista disso, certifique-se de não ter conexões DB desnecessárias fazendo leituras e que você não monitore o MySQL durante um mysqldump ou um reload de um mysqldump. Até mesmo software de monitoramento (como Nagios, Zabbix, MONYog, EM7, etc) gerará Bytes_received de tráfego cada vez que executar SHOW GLOBAL VARIABLES;

SUGESTÃO

Como tudo conectado ao mysqld afetará os valores globais Bytes_received e Bytes_sent status, você pode querer que seu aplicativo colete o nível de sessão Bytes_received e Bytes_sent antes de executar mysqli_close () . Então, você pode gerar um relatório desses números. Você pode então subtrair esses totais das contagens globais para ver quantos dados de limpeza estão sendo solicitados.

    
por 13.08.2013 / 04:00
0

A maneira mais fácil seria iniciar o MySQL Workbench . Embora possa ser necessário um pequeno esforço para configurar adequadamente os recursos de administração do servidor, ele apresenta gráficos para utilização da rede e é uma excelente ferramenta para gerenciar instâncias do MySQL. Uma solução baseada na web para administração do MySQL é o phpMyAdmin , que também fornece estatísticas do MySQL. No entanto, esteja ciente de que o phpMyAdmin teve várias falhas importantes de segurança no passado (permitindo a aquisição total de um sistema, por exemplo), então eu recomendo strongmente que você use o MySQL Workbench. (Tangencialmente: se você realmente quiser ou precisar usar o phpMyAdmin, certifique-se de ter um esquema de autenticação na frente do phpMyAdmin, para que malevolents sequer vejam seu login do phpMyAdmin eles devem passar pela sua primeira camada de login. Meus servidores, por exemplo, exigem autenticação básica via HTTPS e verificam o nome de usuário e a senha fornecidos em relação ao PAM antes de permitir acesso à página de login do phpMyAdmin.

Se você também está interessado em coletar estatísticas gerais com muitos gráficos bonitos, Munin é uma boa solução, e também inclui uma coleção de plugins de monitoramento do MySQL, embora eles devam primeiro ser configurados e existam algumas dependências Perl a serem instaladas para fazer os plugins de monitoramento do MySQL funcionarem ( Cache::Cache e DBD::MySQL , de acordo com os comentários deixados nos scripts do plugin). / p>

Por fim, lembre-se de que ser cobrado pelo tráfego do MySQL é apenas um problema se seu aplicativo e banco de dados residirem em servidores diferentes; tráfego localhost não medido (ou faturado, portanto).

    
por 12.08.2013 / 10:57