A leitura de um desempenho lento do sistema de arquivos NFS?

2

Se um cliente NFS lê um arquivo, algum tráfego de rede acontece? ou é apenas escreve (por qualquer nó) que resultam em tráfego de rede?

Em particular, estou interessado em saber se fazer uma chamada file_exists() em um script PHP será mais caro se o arquivo de destino estiver em NFS do que se o arquivo de destino estiver no sistema de arquivos nativo?

Para referência, esta é a minha configuração do NFS:

Servidor /etc/exports :

/var/www/staging/uploads 192.168.0.1(rw,sync,no_root_squash)

Cliente /etc/fstab :

192.168.0.1:/var/www/staging/uploads /var/www/staging/uploads nfs soft,intr,rsize=8192,wsize=8192
    
por Tom 20.07.2010 / 07:50

2 respostas

2

As leituras causam tráfego. as chamadas do stat () do arquivo causarão tráfego. Os clientes têm um cache, mas ele é muito curto e não é realmente algo em que se pode confiar.

Ninguém nunca acusou o NFS de ser rápido e eficiente, embora possa ser ajustado.

    
por 20.07.2010 / 07:57
2

Sim, o tráfego ocorre. Em seu caso de uso particular, o PHP irá testar para ver se o arquivo realmente existe.

No entanto, você ficaria surpreso com o quão popular é o NFS para serviços da web. Eu posso pensar em uma grande casa de blogs que usam como armazenamento de arquivos para imagens. No entanto, eles só chamam um arquivo do NFS uma vez e depois são armazenados em cache.

A melhor coisa a fazer é criar um perfil do seu script algumas vezes para ver quanta sobrecarga está envolvida com a solicitação do NFS vs. um pedido local. Xdebug irá ajudá-lo lá.

Para determinar quanta sobrecarga de rede está envolvida, execute o TCPDump / Wire Shark enquanto a solicitação está sendo feita. Em seguida, analise a saída. Isso deve lhe dar uma ideia do que estaria envolvido em cada solicitação.

Você também pode montar o compartilhamento NFS com a opção UDP. Isso acelerará um pouco as coisas.

Você precisa de uma rede de back-end rápida, se quiser fazer isso em um farm da Web muito comprado. Então, se você tem capacidade para usar o armazenamento local, eu tentaria fazer isso.

    
por 20.07.2010 / 08:16