Como diagnosticar o Windows trava - qual recurso está bloqueado?

1

Temos uma máquina Windows 7 Pro executando Apache / php / postgres processando solicitações Ajax sob uma carga constante (várias a cada segundo). Também está executando vários outros aplicativos, que executam muitas gravações em disco.

Geralmente as respostas do Ajax são recebidas em menos de um segundo, mas ocasionalmente (~ uma vez em um período de 24h) por um período de até 15 segundos, nenhuma resposta é enviada e todas elas são enviadas no final, ou seja, aparece o servidor está bloqueado por até 15 segundos. Isso faz com que o Ajax expire no lado do cliente.

Registros do Apache e outros aplicativos fazem isso. O Perfmon mostra vários contadores caindo para zero / quase-zero - atividade de HD, atividade de CPU, atividade de rede, etc. O httpd # 1 parece ser o único processo que ainda tem alguma atividade de CPU, embora reduzida.

Como posso determinar a causa do problema? O perfmon ou outra ferramenta pode me informar qual recurso está bloqueando? (O 'Windows Performance Toolkit' ou 'Process Monitor' é bom para isso?)

O NB Apache tem muitos threads, conexões amplas com postgres, CPU e RAM não estão maximizadas, e nós tentamos opções de energia, drivers, sfc / scannow, chkdsk / r, memtest, etc.

Atualização 22/03/2013 10:26:

Obrigado por todas as suas respostas até agora. Mais informações:

Hardware:

  • Chassi: Westek 2U Rack Mount Motherboard: Intel Q35 1333FSB (5xPCI, 2xPCI-E, SATA II I / F, I / F VGA, 2xRS232, etc)
  • RAM: Módulo de memória 2 x 2 GB DDR2 PC2-5300 não ECC CL4 de 240 pinos (3 GB utilizável como sistema operacional de 32 bits)
  • Processador: Cache Intel Core2 Quad Q9550.2.83GHz 1066FSB 12MB
  • Armazenamento: 2x SATA 16GB Hitachi 320GB Cache 7200 NCQ na caixa de RAID SATA-II - Intel Raid 1, NTFS
  • Potência: 2x PSU de 400 W - redundante duplo
  • Modem: Modem de fax USB externo de 56k da StarTech v.92
  • placa PCI: cartão de telefonia

SO:

  • Windows 7 Pro SP1 de 32 bits

Opções avançadas de desempenho:

(Propriedades do sistema > Avançado > Desempenho > Configurações > Avançado)

  • Agendamento do processador: melhor desempenho para programas
  • Memória virtual: Gerencie automaticamente o tamanho do arquivo de paginação para todas as unidades
    • Tamanho total de paginação para todas as unidades:
    • Mínimo permitido: 16 MB
    • Recomendado: 4591 MB
    • Atualmente alocado: 3061 MB

Atualização 22/03/2013 11:46:

Screenshot do perfmon:

link (não tenho reputação suficiente para inseri-lo no post)

O período durante o qual o servidor não responde é 07:44:15 - 07:44:22 - enquanto a CPU cai abaixo de 20%. (NB isto é de outro servidor com CPU mais fraca e software não otimizado mais antigo - normalmente a CPU não é tão alta!)

Atualização 04/04/2013 16:53:

Encontramos o culpado - o HDD. Só demorou um mês!

Como chegamos lá:

O Process Monitor confirmou que o disco estava bloqueando todas as gravações durante os incidentes. Primeiro, tentamos atualizar os drivers RAID. Isso melhorou as coisas - a CPU, etc, não caiu completamente para zero, mas o disco ainda estava bloqueando. Em seguida, tentamos desabilitar o RAID - isso não teve efeito. Tentamos reduzir o uso do disco desativando vários registros e isso ajudou. Nós então tentamos trocar o HDD por outro (de menor especificação), usando a imagem do primeiro, e o problema desapareceu completamente.

Então, o que havia de errado com o nosso HDD?

O disco que estávamos usando era um "Hitachi TravelStar 7k500 (variante Enhanced Availability)". Parece que o ciclo de trabalho foi limitado para garantir a "Disponibilidade Aprimorada" para este modelo, o que pode não ser adequado para uso de disco particularmente pesado. De acordo com o Monitor de Recursos, nosso uso de disco é de cerca de 400 KB / s.

    
por Sam 21.03.2013 / 11:48

2 respostas

0

Sim, o Perfmon pode monitorar o desempenho de praticamente tudo. O problema é que você precisa saber onde procurar. Os padrões são um bom ponto de partida, mas para problemas reais, você precisa colocar algum trabalho para descobrir isso.

Supondo armazenamento local, verifique o PhysicalDisk \ Avg. Comprimento da fila de disco no PerfMon. Se for mais alto que seu número de eixos, seu sistema de armazenamento é um gargalo (ou o). Descreva seu hardware para nós também.

/ edit Ai está. O comprimento da sua fila de disco sobe muito acima de "2" (o número de fusos lentos que você tem) com bastante frequência, e está nesse nível durante o período que você nomeou. O uso da CPU cai, provavelmente porque está esperando no IO e não pode fazer nada, então aguarda.

Melhorias potenciais:

  • Ingenuamente, mova o armazenamento para discos maiores e / ou mais rápidos. RAID 10 talvez.

  • Mais inteligente - faça o benchmark do que está atingindo o sistema de disco e divida-o em fusos diferentes ou em servidores diferentes por completo. Normalmente, não se deseja que o site ou outros front-ends compartilhem muitos recursos com um back-end de banco de dados SQL; os dois tipos de processos possuem características de desempenho muito diferentes.

por 21.03.2013 / 14:40
0

Isso realmente soa como um problema de armazenamento. Que tipo de armazenamento você está usando para o arquivo de paginação?

Caso contrário, a melhor ferramenta que eu conheço para diagnosticar esse tipo de problema é procmon da sysinternals (MS agora). Ele tem a capacidade de realizar sessões longas também, mas você terá que ter uma maneira de identificar o período de tempo exato quando você tiver o problema, especialmente se você estiver indo para um monitor de sistema completo. Se não é um problema de arquivo de página, então provavelmente você vai encontrar o culpado.

    
por 21.03.2013 / 14:31