Ir para conteúdo

Arquivado

Este tópico foi arquivado e está fechado para novas respostas.

ExtremsX

Auto uso do CPU e SELECT demorado

Recommended Posts

Configurações do Servidor:

  • Processador: Intel Xeon E3-1270v2, 3.5 GHz
  • Memoria: 32 GB
  • HD: 1 TB - Enterprise HDD
  • MySQL: 5.6 CE

 

Tenho uma aplicação crawler feita por mim em NodeJS que roda em 16 processos acessando uma tabela chamada PAGE, ele é simples, pega um URL, visita essa URL e salva todas as URLs encontradas dentro do banco de dados, depois pega uma nova URL e assim sucessivamente.

 

Todas as vezes que rodo a aplicação o uso do CPU sobe as alturas (fica em media em 99%).

 

O que posso fazer pra melhorar no desempenho? Sendo que os SELECTs variam bastante, quando a aplicação está desligada, um SELECT na tabela PAGE demora uns 20 centésimos, quando a plicação está rodando o mesmo SELECT demora entre 20 centésimos até mesmo 6 segundos, isso é variavel.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Já tento incluir INDICES nos campos referente a busca? Acho que pode ser isso..

Compartilhar este post


Link para o post
Compartilhar em outros sites
Sim, mas acredito que seja um mal uso do indice que esteja deixando lento, depois de futucar muito notei a lentidão nesses select:


SELECT id FROM page WHERE CURDATE()>data_last_access ORDER BY data_last_access ASC LIMIT 1


Esse select ai tem uma resposta de aproximadamente 0,2 segundo, otimo pra mim.


Mas quando eu ponho esse SELECT:


SELECT p.id FROM domain d JOIN page p ON p.domain_id=d.id WHERE d.enabled=1 AND CURDATE()>p.data_last_access ORDER BY p.data_last_access ASC LIMIT 1

OU esse:

SELECT id FROM page WHERE domain_id IN (SELECT id FROM domain WHERE enabled=1) AND CURDATE()>data_last_access ORDER BY data_last_access ASC LIMIT 1


Ele fica lento, aproximadamente 8s por consulta. Eu coloquei um indice pra essas consultaa assim:


CREATE INDEX idx_page_accessed ON page (domain_id ASC, data_last_access ASC)

e assim:

CREATE INDEX idx_page_accessed ON page (data_last_access ASC)


Só que nos dois casos, quando eu ordeno por ASC fica demorando 8s, e quando eu coloco DESC a resposta é de 0,2s.

Compartilhar este post


Link para o post
Compartilhar em outros sites

×

Informação importante

Ao usar o fórum, você concorda com nossos Termos e condições.