Servidor MYSQL de alto tráfego

1

Estou procurando ajuda para o meu servidor MYSQL. Estou executando um servidor MYSQL 5.7 em um servidor de processador high-end de 64 GB (nada mais nele) e simplesmente não consigo configurar para que ele use todos os recursos disponíveis.

Então, primeiro, eu sei que eu deveria replicar o servidor em breve e ter o Slave / master Mysql - faça isso assim que eu explorar completamente o meu primeiro servidor. Também passei semanas otimizando as consultas e o cache diferente (lado do apache) para limitar a quantidade de consultas. Agora preciso fazer algumas configurações para que seja legal.

A situação; Eu tenho uma quantidade enorme de tráfego e uma quantidade enorme de consultas - e o mysql parece não ser capaz de lidar com isso mais. Eu atualmente corro cerca de 700 seleções / segundo (apenas 20 atualizações e 30 inserções) (meu site e apache é executado em 3k conexões simultâneas). Meu primeiro pensamento foi MaxClients que levei até 250; No entanto notei que nunca tenho mais de 7 "Conexões" simultâneas (diz MysqlWorkbench). Eu tentei entender as coisas que o "Relatório de Desempenho" me diz, mas não encontro números estranhos. É por isso que preciso da sua ajuda.

Esta é a configuração atual que fiz para o MYSQL:

max_connections = 250
query_cache_type=1
key_buffer_size=128M
query_cache_size=64M
back_log=100
query_prealloc_size=32K
sort_buffer_size=16M
read_buffer_size=2M
read_rnd_buffer_size=4M
key_cache_age_threshold=3000
key_cache_division_limit=50
memlock=1
max_connect_errors=999999
max_allowed_packet=1M

Eu também alterei a configuração do somaxcon do meu Ubuntu. Alguém pode me ajudar a atingir um limite maior para o meu servidor MYSQL? Porque atualmente meus processadores são apenas 10% e minha memória RAM em 6GB de 64 e MYSQL está abrandando o meu site / API para baixo (muito tráfego). Qual é a configuração "perfeita" (eu sei que não existe).

Ah, e tenho certeza de que o problema está no servidor; tudo funciona sem problemas se eu cortar todas as conexões MYSQL e usar apenas minhas conexões Mongo / Redis (cada serviço é executado em um servidor diferente).

Por favor me ajude, estou arrancando meu cabelo. Por favor, diga-me se você precisar de alguma tela do MysqlWorkbench.

    
por Bastian Jakobsen 29.05.2018 / 18:17

3 respostas

0

Há um monte de coisas para melhorar o desempenho do seu banco de dados. Primeiro eu vou a algumas coisas:

  • Você poderia tentar aumentar seu query_cache_size.
  • Crie índices em tabelas populares
por 29.05.2018 / 21:09
0

Veja aqui link

Unlike the mysql extension, mysqli does not provide a separate function for opening persistent connections. To open a persistent connection you must prepend p: to the hostname when connecting.

Estou curioso para saber o que seus comparativos de mercado mostrarão agora.

    
por 30.05.2018 / 09:59
0

Sugestões a considerar para sua seção my.cnf-ini [mysqld]

Lidere com # para desativar ou REMOVER os seguintes itens para permitir que os padrões funcionem para você.

sort_buffer_size . read_buffer_size . read_rnd_buffer_size

linhas adicionais para alterar ou adicionar ao my.cnf-ini

max_connect_errors=10  # from 999999 to make Hackers/Crackers life miserable

por que dar a eles mais de 10 chances de adivinhar uma senha?

Isso ajudará.

    
por 15.06.2018 / 22:38