Tempo de carregamento do arquivo PHP, talvez relacionado ao NFS?

Tempo de carregamento do arquivo PHP, talvez relacionado ao NFS?

O problema

Estou tentando diagnosticar um problema de desempenho em um site Drupal que estou desenvolvendo. De manhã, quando o site não vê nenhum tráfego (nem mesmo uma execução do cron) por mais de 8 horas, a página inicial leva cerca de 3,5 segundos para carregar. Recarregar a página leva cerca de 250 ms.

Este é um servidor web de desenvolvimento, com uma versão bastante antiga do PHP instalada (5.3.3).Todos os arquivos são montados estaticamente via NFS(que acredito ser a causa raiz, mais sobre isso abaixo).

Para ajudar a diagnosticar, instaleiXHProfneste servidor de desenvolvimento e habilitou um módulo Drupal que carrega a página de perfil e exibe os dados de perfil em uma tabela bem classificável. Para quem não está familiarizado com o XHProf, ele fornece dados sobre cada função chamada e coisas como tempo total gasto, uso de memória e chamadas para essa função.

Minhas descobertas

No golpe inicial "lento", a função PHP file_existsdemorou1400msde 82 chamadas, representando cerca de 43% do tempo total de execução. No carregamento de página subsequente, a mesma função file_existsfoi novamente chamada 82 vezes, mas desta vez foi drasticamente reduzida para apenas3msrepresentando apenas 1% do tempo total de execução.

Além disso, observei o arquivo que demorou mais para o PHP carregar na memória (que é o que acredito que o load::prefixo significa no nome de uma função). Este arquivo de modelo PHP demorou muito42mspara carregar na primeira vez e somente3msna recarga subsequente!

O que eu suspeito

Está claro para mim que há algum tipo de cache acontecendo em algum lugar - só não sei onde ainda. A documentação PHP parao arquivo existemencione que a saída desta função é armazenada em cache. então descobri que possocontrolar o tamanho deste cachee provavelmente deveria ser aumentado do padrão 16k para algo mais apropriado para Drupal (que carrega toneladas de arquivos relativos).

No entanto, embora eu ache que isso reduziria a quantidade de tempo gasto em file_exists, não tenho certeza se isso afetará o tempo que o PHP realmente levacarregandoo arquivo (o que load::mencionei anteriormente) e aumentar esse valor parece apenas ocultar problemas de desempenho subjacentes com o sistema de arquivos.

Questões

  1. Se houver algum veterano do XHProf ou PHP que possa confirmar se o aumento do PHP realpath_cacheteve algum impacto no tempo relatado load::pelo XHProf?
  2. Quais mecanismos de cache subjacentes devo conhecer no Linux que podem ter um impacto?
  3. O mesmo que acima, mas para NFS?

informação relacionada