Está usando um disco RAM para servir o IIS ASP.net benéfico em um servidor da Web de VM?

1

Configuração:

Windows Server 2008 R2, hospedado na máquina virtual de HyperV alocada 3 GB de memória.

Configurei um RAMDisk (capacidade de 512 MB mais do que suficiente para nossos requisitos) usando o ImDisk em este servidor da Web virtual e alocou 3 GB de RAM (os aplicativos hospedados não exigem mais que ~ 768 MB sob carga pesada).

Originalmente, o diretório WebRoot estava em um compartilhamento de rede que tinha desempenho suficiente, mas notou que, sob carga pesada, isso resultou em um aumento notável no tráfego de LAN para o servidor de compartilhamento de rede (que acredito estar acessando o compartilhamento de rede para servir as páginas da Web). para meus usuários - isso deveria estar acontecendo?).

Como a VM está hospedada em um Cluster de Failover, a unidade C: \ da VM é armazenada em uma SAN iSCSI, portanto, não houve benefício de desempenho (testado isso) em manter a pasta WebRoot na unidade C: \. / p>

Por isso, optei por colocar o conteúdo num RAMDisk, o que evidentemente melhorou bastante em termos de tempo de acesso. O conteúdo de origem ainda seria armazenado no compartilhamento de rede, mas seria sincronizado com o disco RAM a cada 24 horas.

Alguém tem boas razões para acreditar que isso aconteceria:

A) Não vale a pena?

ou mais importante,

B) Seja uma boa ideia!?

Crítica apreciada, tanto positiva quanto negativa!

    
por killercowuk 11.05.2012 / 17:25

2 respostas

4

O IIS não armazenará em cache o conteúdo de um compartilhamento de rede, e é por isso que você estava tendo um desempenho ruim. No entanto, deve armazenar em cache os arquivos quando armazenados no disco local. O fato de seu servidor ser virtual e o armazenamento em disco do host estar em um disco iSCSI não deve afetar a capacidade do IIS de armazenar os arquivos em cache.

Não consigo imaginar um ramdisk dando a você uma vantagem de desempenho em relação ao cache de disco nativo do IIS, impedindo quaisquer extremos após a primeira solicitação.

Eu me oporia a usar um disco de RAM, a menos que você tenha um caso extremo em que o tipo de conteúdo que você precisa armazenar em cache não se encaixa no cache do IIS. Eu gosto da regra KISS. ; -)

    
por 11.05.2012 / 19:11
1

Usar um disco RAM em uma VM fará praticamente a mesma coisa que usar um disco RAM em uma máquina física.

O Windows (e quase qualquer outro sistema operacional) usará qualquer RAM extra disponível para o armazenamento em cache de arquivos. Ele manterá seus arquivos recentemente usados disponíveis pelo tempo que for possível, equilibrando a demanda por memória contra o tempo de acesso ao arquivo.

Quando você usa um disco RAM, você está essencialmente dizendo que sabe, a priori, quais arquivos precisam estar disponíveis muito rapidamente e que eles não serão os usados recentemente. Se eles são realmente os arquivos usados recentemente, então, usando um disco de RAM, você está jogando fora a oportunidade de usar a memória de forma mais flexível, possivelmente melhorando o desempenho em outras áreas.

O tempo necessário para ler um arquivo do armazenamento real (não do disco RAM) em uma VM é provavelmente um pouco mais longo do que seria na mesma máquina sem a virtualização. Então você precisa se perguntar:

Am I using a big powerful VM host with a really good storage subsystem, or am I using the same machine I used to use for IIS but now I'm virtualizing the IIS server?

Se for o primeiro, a latência de leitura do arquivo pode não importar tanto. Se for o segundo, a latência de leitura do arquivo será maior na VM e, portanto, um disco RAM poderá fazer mais sentido.

Além disso, você precisa se fazer outra pergunta:

Am I hosting only one VM on this server, or am I sharing this host with several workloads?

Se você estiver compartilhando o host, precisará considerar se a RAM que está fornecendo à VM do IIS para um disco RAM pode ser melhor usada por outra VM. Se você tiver a Memória Dinâmica ativada em suas VMs, ela será embaralhada na VM que atualmente precisa dela. Você pode fazer muito mais trabalho agregado se permitir que a RAM seja usada onde for realmente necessária no momento, em vez de decidir a priori que ela deve ser usada para diminuir a latência do acesso a arquivos do IIS.

    
por 11.05.2012 / 19:08