Usamos cookies para medir audiência e melhorar sua experiência. Você pode aceitar ou recusar a qualquer momento. Veja sobre o iMasters.
Alô galera,
Seguinte meu site tem muitos acessos, eu usava o banco de dados para salvar as operaçoes feitas pelos usuarios porque quando tentei fazer com banco (e olhe q um boa estrutura) ele não aguentava, mudei para bloco de notas .txt onde cada usuario hoje gera um txt e nele fica as atividades feitas.
Bom agora meu apache não está suportando mais, e tipo com 4 mil pessoas fazendo atividade simutanea ele buga... e ai tenho que reiniciar o servidor.
Eu queria saber qual caminho tomar, se volto para o banco (mas como) ou se qual o outro passo a seguir,
tenho um servidor com 126 gigas de memoria e 32 nucleos de proc, hd todos ssd e 1gbps de conexao, o meu banco fica separado em uma infra igual, dentro do mesmo dantacenter
em tudo q era possivel, só que chega a ter 15 mil querys por segundo
eu uso cache para muita coisa, mas na hora do insert no tem outra
Bom, sem olhar a aplicação, fica complicado dar um diagnóstico, mas suas informações me passaram algo preocupante: 4 mil usuários gerando mais de 15 mil queries por segundo, significa que mesmo em um simples page refresh, está gerando 3,75 queries.
Isto seria uma coisa a repensar, verificando se algum lugar estas queries são realmente necessárias.
Questão de insert, deveria ser ultra mega rápido. Não creio que seja o insert o seu problema, uma vez que você diz estar usando SSD para estes tipo de operação. A não ser, claro, se você estiver usando Triggers. Neste caso, teria que analisar também suas triggers.
Você poderia informar quais dados você coloca em cache?
cara, eu tenho um site de atividades, cada usuario executa de 5 a 30 atividades por vez, vezes 4 mil (media conexoes simutanenas) o q falei de 15 mil foi o meu pico....
Ótima dor de cabeça, mas pelas informações passadas o problema não é infraestrutura e sim a aplicação, talvez as queries possam ser otimizadas, veja se todos os módulos carregados do apache são realmente necessários.
-
Otimize o frontend: Concatenação e minificação de assets, compressão e otimização de imagens, subdomínio para conteúdo estático e sem cookies. Utilize bibliotecas de terceiros como jQuery e derivados de CDN's públicas conhecidas.
-
Gestão inteligente de resposta de requisições: Trabalhe o máximo possível o cache do navegador. Nomeie os assets com nomes únicos incrementais (baseados em timestamp pode ser uma boa alternativa) e tente evitar ao máximo incluir querystring (meuscripts.js?versao=2). Conteúdo que será servido comprimido deverá já estar armazenado comprimido para diminuir a carga de processamento. Se desejar servir os assets via cache em memória, opte por um servidor diferente do servidor de backend. Tente implementar o módulo application cache do HTML5.
-
Disponibilize o que não for sensível à aplicação de forma direta: Se você não precisa do PHP para servir seu arquivo 'estilos.css', faça por onde isso aconteça. Deixe apenas o que for backend a cargo do backend. Experimente utilizar o Nginx no lugar do Apache Httpd para servir conteúdo estático, de preferência - como já citado no ponto 2 - em um servidor à parte.
-
Verifique a latência entre as máquinas: Veja se o servidor do PHP não está demorando muito tempo para se comunicar com o servidor do banco.
-
Elimine as conexões persistentes: Consulte a documentação do Banco de dados para verificar a melhor forma de "matar" uma conexão tão logo ela não seja mais necessária.
-
Vasculhe seu código: Procure por bizarrices como múltiplas conexões durante uma mesma requisição e consultas lentas e não otimizadas.
-
Otimize o banco de dados: Crie índices nos campos mais utilizados nas consultas, verifique se há um log de consultas lentas e procure uma forma de otimizá-las. Pesquise nos fóruns relacionados ao banco de dados em questão formas de sintonia fina para a sua maior carga de trabalho. As melhores configurações de um servidor que faz muita gravação são bastante diferentes das configurações de um servidor que executa mais buscas e leituras. Normalmente o padrão é meio termo, pendendo um pouco pro lado da leitura.
Lembre-se sempre que os logs são seus amigos.
@Jordan Pinheiro_147113, você já otimizou o banco de dados ?