Eu tenho um site wordpress no qual fiz um teste de carga pesada. Como você pode ver abaixo, o uso da CPU é alto, mas ao mesmo tempo o uso da RAM nunca ultrapassa 0,4%. O teste de carga não produz erros, mas o tempo de carregamento do site é muito longo. Estou preocupado que a capacidade disponível da RAM não seja realmente utilizada. Ou esse baixo uso de RAM é normal para 10.000 clientes/segundo?
Especificações do servidor:
- CPU: Processador AMD Ryzen 7 PRO 3700 de 8 núcleos (16 núcleo(s))
- RAM: 64GB
- SSD: 960GB NVMe
- Largura de banda: 1 Gbps
- SO: Ubuntu 20.04.4 LTS
Nenhum cache ativado
Eu obtenho esses resultados com o top
comando
top - 14:12:22 up 4:11, 2 users, load average: 29.49, 16.27, 7.29
Tasks: 467 total, 143 running, 301 sleeping, 23 stopped, 0 zombie
%Cpu(s): 27.6 us, 45.5 sy, 0.0 ni, 24.8 id, 0.0 wa, 0.0 hi, 2.1 si, 0.0 st
MiB Mem : 64306.9 total, 50683.7 free, 7559.5 used, 6063.7 buff/cache
MiB Swap: 7630.0 total, 7630.0 free, 0.0 used. 55881.2 avail Mem
PID USER PR NI VIRT RES SHR S %CPU %MEM TIME+ COMMAND
37346 nginx 20 0 270356 266728 6364 R 78.1 0.4 2:19.89 nginx
57982 fibonac+ 20 0 355720 153908 105132 S 14.0 0.2 0:03.36 php-fpm
61772 fibonac+ 20 0 353552 150692 105776 S 14.0 0.2 0:01.26 php-fpm
1524 mysql 20 0 9117616 192712 20468 S 13.6 0.3 1:17.50 mysqld
57048 fibonac+ 20 0 355788 153888 105072 S 13.6 0.2 0:04.08 php-fpm
59186 fibonac+ 20 0 353712 151920 105132 S 13.6 0.2 0:02.86 php-fpm
61435 fibonac+ 20 0 353680 150108 105120 R 13.6 0.2 0:01.66 php-fpm
57693 fibonac+ 20 0 355760 153964 105132 S 13.3 0.2 0:04.53 php-fpm
59195 fibonac+ 20 0 353684 151912 105124 S 13.3 0.2 0:02.86 php-fpm
51154 fibonac+ 20 0 357824 156160 105136 R 12.3 0.2 0:08.10 php-fpm
51197 fibonac+ 20 0 357780 156064 105088 R 12.0 0.2 0:07.05 php-fpm
58034 fibonac+ 20 0 355728 153616 105132 R 11.0 0.2 0:03.17 php-fpm
51261 fibonac+ 20 0 357780 156064 105136 R 10.0 0.2 0:06.74 php-fpm
52563 fibonac+ 20 0 358116 162056 110892 R 10.0 0.2 0:06.62 php-fpm
57410 fibonac+ 20 0 355728 153948 105132 R 10.0 0.2 0:03.86 php-fpm
59521 fibonac+ 20 0 351636 149816 105136 R 10.0 0.2 0:01.98 php-fpm
60246 fibonac+ 20 0 353752 151856 105140 R 10.0 0.2 0:02.70 php-fpm
51147 fibonac+ 20 0 357812 156156 105136 R 9.6 0.2 0:07.93 php-fpm
51210 fibonac+ 20 0 357780 156136 105136 R 9.6 0.2 0:08.08 php-fpm
51225 fibonac+ 20 0 357776 156112 105128 R 9.6 0.2 0:07.47 php-fpm
51241 fibonac+ 20 0 357780 156112 105136 R 9.6 0.2 0:06.95 php-fpm
51251 fibonac+ 20 0 357784 156072 105136 R 9.3 0.2 0:06.92 php-fpm
51255 fibonac+ 20 0 357784 156132 105140 R 9.3 0.2 0:07.43 php-fpm
57054 fibonac+ 20 0 355784 153952 105124 R 9.3 0.2 0:03.91 php-fpm
57056 fibonac+ 20 0 355768 153960 105132 R 9.3 0.2 0:03.85 php-fpm
59192 fibonac+ 20 0 353708 151508 105120 R 9.3 0.2 0:02.73 php-fpm
61746 fibonac+ 20 0 343316 140124 105140 R 9.3 0.2 0:00.74 php-fpm
51233 fibonac+ 20 0 357776 156112 105140 R 9.0 0.2 0:06.65 php-fpm
51243 fibonac+ 20 0 357784 156140 105120 R 9.0 0.2 0:07.97 php-fpm
55161 fibonac+ 20 0 355728 153988 105132 R 9.0 0.2 0:04.28 php-fpm
57424 fibonac+ 20 0 355736 153600 105132 R 9.0 0.2 0:03.30 php-fpm
59185 fibonac+ 20 0 353684 151496 104832 R 9.0 0.2 0:02.73 php-fpm
51177 fibonac+ 20 0 357812 156132 105136 R 8.6 0.2 0:07.17 php-fpm
57401 fibonac+ 20 0 355728 153620 105132 R 8.6 0.2 0:03.25 php-fpm
51239 fibonac+ 20 0 357836 156128 105136 R 8.3 0.2 0:06.93 php-fpm
54835 fibonac+ 20 0 357776 155544 104892 R 8.3 0.2 0:04.93 php-fpm
61764 fibonac+ 20 0 345492 143512 105588 R 8.3 0.2 0:01.07 php-fpm
50951 fibonac+ 20 0 357860 156164 105140 R 8.0 0.2 0:08.77 php-fpm
51024 fibonac+ 20 0 357816 156128 105136 R 8.0 0.2 0:07.97 php-fpm
51160 fibonac+ 20 0 357808 156156 105136 R 8.0 0.2 0:07.45 php-fpm
54833 fibonac+ 20 0 357832 155788 104816 R 8.0 0.2 0:06.09 php-fpm
57047 fibonac+ 20 0 355788 153864 105068 R 8.0 0.2 0:03.91 php-fpm
59193 fibonac+ 20 0 355760 153208 105080 R 8.0 0.2 0:03.08 php-fpm
63679 fibonac+ 20 0 260456 107648 80836 R 8.0 0.2 0:00.24 php-fpm
63682 fibonac+ 20 0 260456 107672 80860 R 8.0 0.2 0:00.24 php-fpm
51028 fibonac+ 20 0 357856 156068 105136 R 7.6 0.2 0:06.58 php-fpm
53620 fibonac+ 20 0 357776 156048 105132 R 7.6 0.2 0:05.68 php-fpm
54832 fibonac+ 20 0 357776 155968 105052 R 7.6 0.2 0:05.61 php-fpm
55152 fibonac+ 20 0 357780 156040 105132 R 7.6 0.2 0:05.36 php-fpm
57981 fibonac+ 20 0 355732 153596 105132 R 7.6 0.2 0:03.30 php-fpm
58035 fibonac+ 20 0 355736 153604 105132 R 7.6 0.2 0:03.29 php-fpm
59184 fibonac+ 20 0 353736 151484 105100 R 7.6 0.2 0:02.47 php-fpm
59189 fibonac+ 20 0 356072 159176 110760 R 7.6 0.2 0:05.38 php-fpm
63683 fibonac+ 20 0 260456 106668 80072 R 7.6 0.2 0:00.23 php-fpm
51208 fibonac+ 20 0 357780 156188 105140 R 7.3 0.2 0:07.25 php-fpm
51237 fibonac+ 20 0 357776 156184 105136 R 7.3 0.2 0:07.43 php-fpm
Responder1
10.000 clientes/segundo?
Que ordem de magnitude de solicitações você realmente espera receber? Stack Exchange, toda a rede, atinge talvez um pico5.000 solicitações por segundopara aproximadamente 1,3 bilhão de visualizações de páginas por mês. Uma comparação direta é difícil, mas presumo que o que você está fazendo seja menor que isso.
a capacidade disponível da RAM não é realmente utilizada.
Você está certo ao dizer que grande parte da sua memória não é usada neste momento. 50.683 MB livres é muito tanto em número absoluto quanto em 78% do total de 64.306 MB. Se tratar isso como uma alocação generosa e um desperdício para o crescimento ou se um tamanho único serve para a maioria dos servidores de 64 GB, depende de você, como parte do planejamento de capacidade.
Sessenta (?) processos de servidor web, além de algumas outras probabilidades, não são grande coisa para 64 GB de memória. Observe RES de cerca de 150 MB cada. Embora, em teoria, isso possa somar 5.000 MB, a contabilidade da memória é sempre mais complicada do que as simples suposições que as pessoas fazem. O Linux é preguiçoso e tende a alocar páginas de memória física para dados exclusivos. Dezenas de cópias da mesma tarefa são bem "compactadas". Especialmente para cargas de trabalho de benchmark computacional, que provavelmente podem aumentar a CPU com um pequeno conjunto de trabalho.
Com muita memória livre, mas tempo de resposta insuficiente para um aplicativo, definitivamente existem outros fatores limitantes ao desempenho. Encontrá-lo requeruma abordagem metódicaexaminar todos os aspectos do sistema. Qualquer coisa, desde parâmetros de ajuste de php a outros recursos (rede?), até problemas de simultaneidade de aplicativos.
Por uma questão prática, no Linux instale símbolos de depuração e execute. perf top
Saber quais funções estão na CPU pode ajudar a analisar o que está acontecendo profundamente no código do usuário ou do kernel. Idealmente, você também tem algo como uma ferramenta APM que pode criar perfil de código.