Eu tenho um servidor web que executa alguns serviços como , Apache
e alguns aplicativos. Em momentos de alto tráfego, meu servidor parece não suportar a carga pesada. Quando isso ocorre, muitas vezes quando tento acessar uma página recebo a seguinte mensagem de :Mysql
Redis
NodeJS
mysql
Warning: mysqli_connect(): (HY000/2003): Can't connect to MySQL server on '127.0.0.1' (99)
Esta mensagem aparece de forma intermitente, de forma que na maioria das vezes se eu atualizar a página esta mensagem não aparece novamente. Além disso, não acho que isso seja um problema na minha configuração do mysql porque tenho o seguinte resultado do mysqltuner.pl o tempo todo:
[OK] Highest usage of available connections: 74% (336/450)
Da mesma forma, o Redis Server mostra uma mensagem de problema para conectar-se ao servidor:
Could not connect to Redis at 127.0.0.1:6379
Estou monitorando meu servidor nessa época e descobri que são aproximadamente 2G de RAM (sem utilizar nenhum byte de SWAP para o processo de Mysql, Redis ou NodeJS. Depois de passar algum tempo pesquisando (sem um Norte a seguir) , li um pouco sobre Portas Ephemearal Então tentei ajustar o net.ipv4.ip_local_port_range
parâmetro para aumentar meu intervalo de portas (ajustar de 32768 61000
para 10000 65000
). Meu servidor web aumentou o tempo de resposta de uma média de 180 ~ 200ms para aproximadamente 6000ms e a carga. média do servidor aumenta bastante também (mas as mensagens de erro desaparecem!).
Meus aplicativos NodeJS (todos eles) usam Socket.io e respondem de uma porta diferente no meu servidor. Estou tentando descobrir qual é a solução para o problema. Isso é um problema de disponibilidade de porta? Por que o ajuste do parâmetro net.ipv4.ip_local_port_range está deixando o servidor lento?
Configuração do servidor:
- Servidor Ubuntu x64
- Intel Xeon E5520 Quad Core
- 8 GB de RAM
- 2x 1000 GB SATA 2,5" 5.400 rpm (RAID 1)
- 2x SSD de 60 GB de 2,5" (RAID1) (coisas de banco de dados estão todas aqui)
Responder1
Se sua dúvida é sobre como monitorar melhor seu servidor durante horários de pico elevados, o que é difícil de fazer quando há pico, procuraria alguma ferramenta leve para ajudar no monitoramento. Topo, ps e dfnem sempre corte.
eu useicoletadopara capturar pontos de dados em minhas partições, memória, CPUs, Apache, MySQL e outras coisas. Ele captura os dados e salva esses pontos de dados, então você precisará de alguma outra ferramenta para recuperar os dados - por exemploalguns front-ends da web para exibir os dados.
Então, para solucionar problemas, talvez uma ferramenta para atingir seu servidor e criar um cenário de alto uso. Apache Benchmark (ab) ou Siege são boas ferramentas para isso.