O problema é, obviamente, o aplicativo da Web que você está executando. Da saída top
, parece que você está executando algum código PHP. Você precisa descobrir qual parte do código PHP causa o problema (diretamente ou via acesso ao banco de dados).
Se o exemplo top
output descrever a situação usual, eu acho que parte de seus processos bloqueiam um ao outro no nível do aplicativo (algum tipo de contenção de bloqueio).
Eu deduzo isso dos seguintes fatos: baixo IO wait time ( wa
data em top
output), 33% idle e alto carregar . Isso significa que você não está executando todas as CPUs e não está esperando pelo IO. Nesse caso, a única maneira de tornar o sistema "muito lento" é tornar os processos em série (um processo aguardando na CPU 2 até que outro processo seja concluído na CPU 1). Isso acontece apenas se houver algum bloqueio mais ou menos explícito entre diferentes processos. Se você realmente não pode remover o bloqueio entre processos, a única opção é investir em núcleos de CPU mais rápidos em vez de vários núcleos lentos. Sua CPU já está bem perto do topo da linha, então eu consideraria investigar o código primeiro.
Você perguntou se era possível usar alguma RAM para reduzir o uso da CPU. Pode ser possível com o cache agressivo, mas apenas o código do aplicativo (PHP) que você está executando pode fazer uso dessa compensação. Novamente, você precisa criar um perfil e modificar o código PHP. Não há nenhum interruptor mágico para dizer usar mais memória, menos CPU, por favor.