Meu site parece estar recebendo mais de 1 milhão de visitas hoje, geralmente cerca de 20.000 e, para mim, parece quase não responder. Eu fiz algumas investigações e otimizei o Apache, consertei um bug com sessões PHP, mas agora o problema que eu tenho é que o MySQL está tipicamente usando 100% + CPU.
O servidor tem 32 GB de RAM, com cerca de 50% livre, sem swap, CPU de 3,3 Ghz, 4 núcleos, 4 threads.
Eu desliguei as conexões pré-existentes do MySQL no PHP.
Quando eu executo SHOW PROCESSES (); há apenas 8 na melhor das hipóteses e nenhum está atrasando.
A maioria das minhas tabelas são MyISAM. Tabelas que são InnoDB não são muito usadas.
Conteúdo do my.cnf:
expire_logs_days = 10
max_binlog_size = 100M
innodb_file_per_table
innodb_flush_method=O_DIRECT
innodb_log_file_size=1G
innodb_buffer_pool_size=4G
[mysqldump]
quick
quote-names
max_allowed_packet = 16M
[isamchk]
key_buffer = 16M
!includedir /etc/mysql/conf.d/
Alguém tem alguma sugestão de comandos para executar? Definindo para mudar? O que pode ajudar.
Ou talvez o servidor não consiga lidar com esse tráfego. Embora estivesse bem em 600.000 visitas / dia.
UPDATE
De acordo com este artigo:
Entrei no painel de status do phpMyAdmin e comecei a jogar com alguns dos valores destacados em vermelho. Isso pareceu ajudar um pouco. No entanto, no meu caso, acho que há pouco que eu possa fazer, pois o servidor estava processando cerca de 500 consultas por segundo. Então, vou procurar transformar meu cache html em.
A ativação do cache de consultas do MySQL com cache de 100MB também fez uma grande diferença. O site ainda é lento, mas funciona em cada carga, às vezes rapidamente, às vezes lentamente.
A solução final foi armazenar em cache todo o site, barrar algumas páginas que exigem dinamismo.
Tags performance mysql