Quanto tempo está sendo desperdiçado no Windows Server 2008?

2

Estou usando o Windows Server 2008, em execução em uma VM do Hyper-V. O sistema executa muito mal. Temos certeza que é devido a memória insuficiente. Eu olhei para Como encontrar se meu Windows Server 2003 precisa de mais memória? , e tenho certeza de ver > 300 páginas de entrada por segundo, que a memória é o problema.

No entanto, estou fazendo uma pergunta mais ampla. Gostaria de focar a atenção da Administração na quantidade de tempo que está sendo desperdiçada enquanto aguardo por essas falhas de página. Existe uma maneira de determinar quanto tempo está sendo gasto aguardando paginação ou outros recursos? Estou especialmente interessado no tempo gasto por usuários interativos, mas um número que inclua o uso não interativo também seria útil.

Para esclarecer, isso parece menos como lamentar:

Este sistema é tão lento que demorou literalmente minutes , enquanto uma janela notepad.exe estava ativa, para ativar uma segunda janela notepad.exe que já estava aberta e exibindo. Isso é apenas ativação . O desempenho não é um pouco ruim. Eu acho que isso equivale a dezenas de homens-hora por dia desperdiçados.

Estou procurando uma maneira de deixar claro para a gerência quanto tempo está sendo desperdiçado. Isso está acontecendo em um momento em que não temos dez homens-hora a perder.

Desculpe, não forneceu mais detalhes.

Este servidor está sendo usado no desenvolvimento do SharePoint (WSS 3.0). Ele está executando o IIS 7 configurado com pelo menos um pool de aplicativos por desenvolvedor. Cada desenvolvedor tem um ou mais aplicativos da web, cada um configurado em um AppPool atribuído a essas credenciais de desenvolvedores. Estamos executando o Visual Studio 2008 SP1 e o SQL Server 2008. Os dados do SQL Server estão em um disco virtual separado do sistema operacional.

Eu vi até 8 desenvolvedores no sistema de uma só vez. O servidor está configurado com 2 GB de RAM e mais RAM não é trivial neste momento, devido a limitações do computador host. Espero que isso seja corrigido se eu puder apresentar motivos suficientes para corrigi-lo, na forma de: é quanto tempo foi desperdiçado.

EDITAR

Obrigado pelas respostas e comentários. Eu concordo com a solução - coloque a carga do SharePoint em um servidor de 4-8GB e mova o SQL Server para um segundo, com 2-4GB.

Mas a minha pergunta é mais: há algum contador ou ferramenta de desempenho que possa me dizer que a quantia de tempo passou esperando por leituras e gravações de páginas? Qualquer coisa que possa me dizer quanto tempo gasto esperando na E / S do disco na fila?

É possível obter contadores de desempenho como "Páginas de entrada por segundo", mas é mais difícil dizer quais valores desse contador são "demais". Seria melhor para o meu propósito se houvesse "contadores" que pudessem dizer quanto tempo está sendo gasto por causa da entrada de páginas por segundo.

    
por John Saunders 27.10.2009 / 20:59

3 respostas

8

This server is being used in SharePoint (WSS 3.0) development. It is running IIS 7 set up with at least one Application Pool per developer. Each developer has one or more web applications, each set up in an AppPool assigned to that developers credentials. We're running Visual Studio 2008 SP1 and SQL Server 2008. The SQL Server data is on a separate virtual disk from the OS.

I've seen up to 8 developers on the system at once. The server is configured with 2GB of RAM, and more RAM is not trivial at this time, due to limitations of the host computer. I hope that this will get corrected if I can present enough reason to correct it, in the form of: this is how much time was wasted.

Sem sequer olhar para os requisitos de hardware do SharePoint 2007, tendo até 8 programadores com os seus próprios conjuntos de aplicações. Eu assumo que o SQL Server é uma outra VM, mas se for uma a mesma máquina Win2k8, não há dúvidas sobre qual é o problema.

O desenvolvimento do AppPools for VisualStudio (versões de 2005-2008) pode facilmente aumentar para 150MB-250MB por AppPool, dependendo de vários fatores. 250mb x 8devs = 2gb usados. Não nos esqueçamos da memória que o sistema operacional precisa sozinho e possivelmente do SQL Server. Em poucas palavras: você simplesmente não tem RAM suficiente. Carregar na RAM, tanto quanto você pode obter. Eu não ficaria surpreso se resolvesse a maioria da "lentidão" do servidor, pelo menos do ponto de vista de fundo e possivelmente do primeiro plano.

FYI: A Microsoft recomenda um mínimo de 4 GB para os servidores de aplicativos do SharePoint 2007 ( link ), mas, na realidade, , qualquer coisa que a Microsoft consuma recursos o máximo possível. Agora, na mesma URL, eles mencionam um mínimo de 2 GB para servidores independentes do SharePoint, mas se os desenvolvedores estão diretamente trabalhando nesse servidor com seu próprio AppPool , fica claro que o IIS está comendo toda a memória disponível para os AppPools / Sites. Não vá com o mínimo de RAM recomendado. Tente duplicar, triplicar, quadruplicar os requisitos de RAM, se possível (orçamento permitido).

Editar: Você menciona que os dados do SQL Server estão em um disco virtual separado, mas o SQL Server está instalado no mesmo servidor do SharePoint? Quanto armazenamento livre está disponível no servidor do SharePoint também? Esses fatores adicionais podem facilmente consumir recursos do servidor e não devem ser negligenciados.

Editado novamente: Desde que você mencionou (e eu não consegui ler) que "RAM não é trivial neste momento, devido às limitações do computador host" , há somente uma solução real : obtenha um novo computador host. 2 GB não é suficiente para executar o SharePoint / SQL / IIS / qualquer período. Desculpe dizer, mas IMHO, uma máquina rodando isso deve ter um mínimo de 8GB de RAM.

Editado após a edição OP:

But my question is more like: are there any performance counters or tools that can tell me the amount of time spent waiting for page reads and writes? Any that can tell me amount of time spent waiting on queued disk I/O?

Eu não encontrei sua situação exata, mas há um bom artigo ( link ) do Microsoft TechNet sobre os fundamentos das métricas do monitor. Não tenho certeza se o tempo gasto esperando na E / S de disco em fila é a melhor maneira de obter o que você quer (estou assumindo o suporte de gerenciamento).

It's possible to get performance counters like "Pages input per second", but it's harder to say what values of that counter is "too much". It would be better for my purpose if there were "counters" that can say how much time is being spent because of the pages input per second.

Um artigo do Windows Networking ( link ) no Server 2003 explica melhor esses contadores do que eu poderia. FTA:

The Memory\Pages/sec counter indicates the number of paging operations to disk during the measuring interval, and this is the primary counter to watch for indication of possible insufficient RAM to meet your server's needs. A good idea here is to configure a perfmon alert that triggers when the number of pages per second exceeds 50 per paging disk on your system. Another key counter to watch here is Memory\Available Bytes, and if this counter is greater than 10% of the actual RAM in your machine then you probably have more than enough RAM and don't need to worry.

You should do two things with the Memory\Available Bytes counter: create a performance log for this counter and monitor it regularly to see if any downward trend develops, and set an alert to trigger if it drops below 2% of the installed RAM. If a downward trend does develop, you can monitor Process(instance)\Working Set for each process instance to determine which process is consuming larger and larger amounts of RAM. Process(instance)\Working Set measures the size of the working set for each process, which indicates the number of allocated pages the process can address without generating a page fault. A related counter is Memory\Cache Bytes, which measures the working set for the system i.e. the number of allocated pages kernel threads can address without generating a page fault.

Finally, another corroborating indicator of insufficient RAM is Memory\Transition Faults/sec, which measures how often recently trimmed page on the standby list are re-referenced. If this counter slowly starts to rise over time then it could also indicating you're reaching a point where you no longer have enough RAM for your server to function well.

Então, eu diria que essa explicação realmente aborda suas métricas e a compreensão do que as métricas realmente significam para você. O Monitor de Desempenho é um pouco complicado, especialmente se você não entender completamente o que os contadores significam no grande esquema das coisas. Eu geralmente me vejo lendo sobre contadores, pois é fácil esquecer o significado de "mundo real".

    
por 27.10.2009 / 23:23
0

Parece que você precisa começar a usar o perfmon. Você vai querer definir contadores para coisas como memória (MBytes disponíveis (meu palpite é que será próximo ou a 0),% Bytes comprometidos em uso) e talvez alguns monitores de disco. É provável que o seu disco rígido não seja interrompido, aumentando seu arquivo de paginação para seu tamanho máximo. No entanto, só estou oferecendo essas sugestões para que você possa visualizar o desempenho sozinho. A resposta para o problema estava na primeira resposta: memória. Se suas limitações de memória para o servidor em questão forem de 2 GB, você precisará comprar ou juntar um servidor extra. Eu não tenho certeza se você tem as licenças para outro, mas 2GB não é suficiente para executar o SharePoint e muito menos a infinidade de outros aplicativos / ambientes que você está executando. Dito isto, não há nada como um bom desafio. :) Boa sorte!

    
por 28.10.2009 / 14:40
-1

Um servidor não está otimizado para tarefas em primeiro plano, portanto, alternar entre as janelas do bloco de notas não será uma métrica de desempenho válida. Você precisa iniciar o Process Explorer ou o Gerenciador de Tarefas e começar a analisar algumas estatísticas, talvez fazer alguns contadores de desempenho e ver o que eles lhe devolvem. Examine também as outras tarefas em execução no servidor (você não diz quais são as funções, por isso é impossível ser mais específico).

    
por 27.10.2009 / 22:49