Otimizando a exibição de imagens usando nfs para um sistema com alta taxa de leitura para gravação

1

Nosso sistema usa principalmente o NFS para replicar e exibir imagens de vários nós.

Novas imagens não são adicionadas com muita frequência. Portanto, as gravações são raras. Quase todos os pedidos serão lidos solicitações de.

Como posso otimizar meu sistema para obter o máximo desempenho de leitura (apenas com o nfs). Algum teste rápido e confiável para verificar se o sistema está com melhor desempenho?

Existem maneiras melhores de exibir imagens rapidamente? O mecanismo de squid / caching pode ser usado no topo do nfs mount para acelerar as coisas?

Já estamos usando módulos de cache de memória do apache.

servidor & uso do cliente - nfs v3, todos executando o RHEL 4.

Configuração do servidor h / w: RAM: 3 GB, Intel Xeon (TM) @ 3 Ghz.

cat / proc / net / rpc / nfsd "no servidor fornece:

rc 0 3584710 221921733 fh 1506 0 0 0 0 io 4274869225 1474485090 816 581669 39835,922 7449,989 1396,547 0,000 879,767 604,030 436,573 320,797 0,000 1362,017 ra 16 3454951 13954 4091 8186 3920 6990 6421 3003 5574 2727 2467399 net 225510008 0 225488411 41217 rpc 225506272 0 0 0 0 proc2 18 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 proc3 22 57 144259928 359775 11723001 58910204 0 5977165 2145920 546253 3829 0 0 509776 3718 15256 165 21497 79725 10067 59 0 867450 proc4 2 0 0

    
por letronje 30.06.2009 / 14:14

6 respostas

3

Em vez de usar o NFS, considere o uso do rsync para enviar o conteúdo para todos os nós de exibição de imagens. As gravações podem ocorrer em um ponto central e depois serem riscadas quando necessário (ou seja, quando as imagens são adicionadas) ou com um cron job.

Isso proporcionará melhor desempenho geral e permitirá que o cache habitual do sistema de arquivos seja usado em vez de ter que implementar algo sobre o NFS.

    
por 30.06.2009 / 14:43
3

Você não mencionou qual é o seu servidor NFS nem os clientes nfs. Eu suponho que ambos são algum tipo de sistemas Linux recentes.

  1. Verifique o desempenho do disco bruto no seu servidor de arquivos. Geralmente, o desempenho do NFS não pode ser melhor que cerca de 50% do desempenho do disco bruto.
  2. o desempenho da rede do seu servidor NFS deve ser maior que a soma dos clientes. Por exemplo, com 10 clientes com 100Bt ethernet, tenha pelo menos uma interface de 1Gb no seu servidor.
  3. otimize suas configurações de leitura antecipada e armazenamento em cache no servidor. Não posso ajudá-lo sem conhecer a configuração de hardware.
  4. Otimize sua rede: compare NFS sobre TCP e NFS sobre UDP. Experimente jumbo frames, se aplicável.
  5. Execute processos de servidor suficientes no servidor NFS. Idealmente, você deve ter tantos servidores quanto conexões ativas, mas YMMV.
por 30.06.2009 / 14:51
0

Você diz que está usando o cache de memória do apache. O Apache também possui armazenamento em cache baseado em disco, que pode ser usado aqui. Veja a seção de armazenamento em cache baseada em disco no Guia de Cache do Apache. Isso exigiria a dedicação de algum espaço em disco local a um cache de imagem e executando um programa utilitário de vez em quando para limpar o cache.

O Solaris tem um sistema de arquivos em cache que pode ser usado como uma camada na parte superior do NFS, mas você marcou o linux para que eu não ache que seja uma opção para você.

    
por 30.06.2009 / 17:24
0

Você não mencionou se está ou não pensando em lançar hardware no problema, mas uma possível solução de cache seria o NetApp FlexCache . Eles certamente não são baratos, mas são feitos para resolver exatamente esse problema.

    
por 30.06.2009 / 18:39
0

Desativar o tempo de acesso (atime) no sistema de arquivos que atende ao leitor NFS.

Basicamente, por padrão, seu disco rígido está executando uma gravação para atualizar o tempo de acesso de cada arquivo que está sendo lido. Desativá-lo pode levar a um melhor desempenho de leitura.

Mais informações sobre o atime podem ser encontradas aqui e aqui .

    
por 30.06.2009 / 19:38
-2

Parece uma aplicação perfeita para SSD. Isso reduziria sua latência de leitura.

    
por 30.06.2009 / 18:26