CPU muito alta e baixo uso de RAM - é possível colocar um pouco de swap do uso da CPU na RAM (com o CloudLinux LVE Manager instalado)?

2

Eu tive que instalar o CloudLinux para que eu pudesse controlar um pouco o uso da CPU e, mais importante, as Conexões Simultâneas que os Websites usam. Mas, como você pode ver, a carga do servidor é muito alta e é por isso que alguns sites demoram até 10 segundos. para carregar!

  • Carga do servidor 22,46 (8 CPUs) (!)
  • Memória usada 36,32% (2,959,188 de 8,146,632) (ok)
  • Trocar Usado 0,01% (132 de 2.104.504) (ok)

Servidor:

  • 8 x CPU Intel (R) Xeon (R) E31230 @ 3.20GHz
  • Memória: 8143680k / 9437184k disponível (código do kernel 2621k, 234872k reservado, dados 1403k, inicialização 244k)
  • Linux

Ontem: Total de 214.514 visualizações de página (Awstat)

Agora minha pergunta: Posso transferir parte do uso da CPU para a RAM?

Ou o que mais eu poderia fazer para tornar os sites mais rápidos (os sites são dinâmicos - então o SQL é pesado)

Obrigado

top - 06:10:14 up 29 days, 20:37,  1 user,  load average: 11.16, 13.19, 12.81
Tasks: 526 total,   1 running, 524 sleeping,   0 stopped,   1 zombie
Cpu(s): 42.9%us, 21.4%sy,  0.0%ni, 33.7%id,  1.9%wa,  0.0%hi,  0.0%si,  0.0%st
Mem:   8146632k total,  7427632k used,   719000k free,   131020k buffers
Swap:  2104504k total,      132k used,  2104372k free,  4506644k cached

    PID USER      PR  NI  VIRT  RES  SHR S %CPU %MEM    TIME+  COMMAND         
 318421 mysql     15   0 1315m 754m 4964 S 474.9  9.5  95300:17 mysqld          
   6928 root      10  -5     0    0    0 S  2.0  0.0  90:42.85 kondemand/3      
 476047 headus    17   0  172m  19m  10m S  1.7  0.2   0:00.05 php              
 476055 headus    18   0  172m  18m 9.9m S  1.7  0.2   0:00.05 php              
 476056 headus    15   0  172m  19m  10m S  1.7  0.2   0:00.05 php              
 476061 headus    18   0  172m  19m  10m S  1.7  0.2   0:00.05 php              
   6930 root      10  -5     0    0    0 S  1.3  0.0 161:48.12 kondemand/5      
   6931 root      10  -5     0    0    0 S  1.3  0.0 193:11.74 kondemand/6      
 476049 headus    17   0  172m  19m  10m S  1.3  0.2   0:00.04 php              
 476050 headus    15   0  172m  18m 9.9m S  1.3  0.2   0:00.04 php              
 476057 headus    17   0  172m  18m 9.9m S  1.3  0.2   0:00.04 php              
   6926 root      10  -5     0    0    0 S  1.0  0.0  90:13.88 kondemand/1      
   6932 root      10  -5     0    0    0 S  1.0  0.0 247:47.50 kondemand/7      
 476064 worldof   18   0  172m  19m  10m S  1.0  0.2   0:00.03 php              
   6927 root      10  -5     0    0    0 S  0.7  0.0  93:52.80 kondemand/2      
   6929 root      10  -5     0    0    0 S  0.3  0.0 161:54.38 kondemand/4      
   8459 root      15   0  103m 5576 1268 S  0.3  0.1  54:45.39 lvest
    
por Chriswede 18.05.2012 / 12:32

3 respostas

2

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.

    
por 25.06.2012 / 10:09
0

Eu não tenho idéia do que você quer dizer com "deslocamento do uso da CPU para a RAM", mas o que você quer dizer, com toda a probabilidade, não vai funcionar.

Você precisa descobrir quais são os afunilamentos reais que reduzem a velocidade do seu aplicativo. Isso pode incluir

  • Bandwidth de E / S muito baixa. O sistema está aguardando por discos rígidos
  • Desempenho do banco de dados
  • Software não otimizado e / ou com uso intensivo de computação para os aplicativos da web.
  • Algo totalmente diferente do seu aplicativo da web.
por 18.05.2012 / 12:54
0

Você precisa descobrir o que cria essa carga tão grande. É possível que o seu servidor seja carregado por poucas tarefas intensivas de CPU ou congestionamento de I / O.

Em caso de IO de banco de dados pesado, você pode tentar aumentar o cache do banco de dados - innodb_buffer_pool no mysql ou shared_buffers no postgres.

EDITAR: Sua saída top mostra que seu problema é com consultas mysql não otimizadas. Se você pode gerenciar bancos de dados - descubra solicitações lentas e crie índices apropriados ou reescreva consultas sql para remover o afunilamento de cpu do mysql. Se isso for impossível - compre uma CPU mais potente.

    
por 18.05.2012 / 12:53