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".