como controlar a carga do sistema de um processo específico? por exemplo. Java

1

Então, o Java está pendurando nossos sistemas. Nossos desenvolvedores ainda estão olhando para isso, mas como um administrador, o que pode ser feito.

Em um sistema de soquete duplo com 8 núcleos, picos de carga a 40. Em média durante o dia: média da carga: 17.78, 23.18, 24.71 De acordo com isso: link
não é normal.

além de atualizar o sistema, o que pode ser feito sobre isso? nosso problema atualmente é aleatoriamente sistema trava com "tarefa java: 4242 bloqueado por mais de 120 segundos", em seguida, entra em pânico durante alta carga.

O que pode ser feito?

Durante uma carga de:      média da carga: 21.40, 21.76, 21.80

iostat:

      avg-cpu:  %user   %nice %system %iowait  %steal   %idle
                13.75    0.00    0.49    0.00    0.00   85.77

      Device:            tps   Blk_read/s   Blk_wrtn/s   Blk_read   Blk_wrtn
      xvda              2.16         1.82        32.63     832500   14917166

vmstat:

      procs -----------memory---------- ---swap-- -----io---- -system-- ----cpu----
      r  b   swpd   free   buff  cache   si   so    bi    bo   in   cs us sy id wa
      0  0  21172 1272200 138540 583268   0    0     0     3    9    5 14  0 86  0

top:

top - 14:41:02 up 5 days,  7:26,  2 users,  load average: 23.01, 22.17, 21.82
Tasks: 103 total,   1 running, 102 sleeping,   0 stopped,   0 zombie
Cpu(s):  0.0%us,  0.0%sy,  0.0%ni,100.0%id,  0.0%wa,  0.0%hi,  0.0%si,  0.0%st
Mem:   5291864k total,  4017092k used,  1274772k free,   138544k buffers
Swap:  1959924k total,    21172k used,  1938752k free,   583332k cached

  PID USER      PR  NI  VIRT  RES  SHR S %CPU %MEM    TIME+  COMMAND
25637 root      20   0 1691m 559m  13m S    2 10.8   4:46.91 java
  848 root      20   0 3044m 2.3g 9844 S    1 45.4   5521:37 java
27729 root      20   0 19272 1272  948 R    0  0.0   0:00.03 top
    1 root      20   0 23760 1696 1200 S    0  0.0   0:01.49 init
    2 root      20   0     0    0    0 S    0  0.0   0:00.00 kthreadd
    3 root      20   0     0    0    0 S    0  0.0   0:00.29 ksoftirqd/0
    4 root      20   0     0    0    0 S    0  0.0   0:00.00 kworker/0:0
    
por Tom G 10.07.2012 / 20:04

2 respostas

1

Em suma, nice .

link

    
por 10.07.2012 / 20:14
0

Eu sinto que há algo mais acontecendo que você não viu nem nos contou.

  • Você não tem problemas de E / S ou mesmo um carregamento de E / S realmente notável
  • Você não está executando em hardware descoberto. xvda é um indicador de um dispositivo virtual.
  • Você tem "todo o tempo do mundo" - seu sistema está reportando 85% ocioso, apesar de uma média de carga muito alta exibida.

Aqui estão meus palpites mais prováveis:

  • Você tirou o instantâneo demonstrativo na hora errada. A CPU está realmente muito mais sobrecarregada e você deve usar uma ferramenta como sar para relatórios. atop também é uma das minhas favoritas.
  • Você tem uma carga geralmente baixa, mas rajadas instantâneas muito altas que estão tornando a carga geral média alta.
  • Você está encontrando um problema insidioso de bug ou hardware. Você deve postar os rastreamentos de pilha que são registrados para processos mortos para que possamos adivinhar onde.

Quanto ao tópico da pergunta em si: a única maneira de diminuir a média de carga é reduzir o número de processos que competem ativamente pelo tempo de CPU.

    
por 10.07.2012 / 20:36