O Memcached ajudaria nesse cenário?

1

Eu trabalho em um grande site na internet onde as pessoas podem compartilhar grandes textos uns com os outros. Nós armazenamos a maioria das informações nos bancos de dados InnoDB, mas as partes reais do texto são armazenadas em algum lugar nos arquivos baseados em texto. Esses arquivos baseados em texto variam entre alguns KB até 10 MB cada. Existem milhões desses arquivos, e nós configuramos uma boa estrutura de pastas / arquivos para que nunca haja muitos arquivos em uma pasta.

O servidor da web (o banco de dados é outro) onde esses arquivos são armazenados é uma máquina poderosa com 4 unidades SAS de 15k no RAID10 e com 24 GB de RAM. Nós rodamos o Nginx como um servidor web e o Xcache para acelerar o PHP. Isso tudo funciona perfeitamente, e a carga geralmente varia entre 0,7 e 1,5.

Agora, planejo apenas usar o Memcached para armazenar os arquivos 'baseados em texto' no RAM. Então, ao invés de ter que lê-los do disco toda vez que alguém solicitar uma página onde um desses arquivos 'baseados em texto' tem que ser carregado. No PHP eu uso file_get_contents (); para carregar os arquivos "baseados em texto" em uma variável e depois exibi-los em algum lugar da página depois.

A minha pergunta é: ele realmente diminuiria a carga que você acha que implementa o Memcached para esse recurso em particular, ou o Linux já possui algum tipo de cache interno de arquivos usado quando solicito um determinado arquivo via file_get_contents com muita frequência? / p>     

por Mr.Boon 05.01.2012 / 10:44

3 respostas

2

A resposta óbvia é que você precisa testar as várias opções em seu cenário específico.

Dito isso, o Linux usa toda a RAM disponível como cache de disco, mas somente enquanto não for usado para outras finalidades mais importantes.

    
por 05.01.2012 / 11:02
2

Eu diria que ler um pequeno arquivo de texto de um disco (ou, para arquivos populares, da RAM em cache) seria mais rápido do que ter uma conversa com o memcached.

Você terá que testar isso, mas lembre-se que o Linux armazena de forma muito agressiva os arquivos e as estruturas de diretórios, então provavelmente você já está servindo a maioria das coisas da RAM.

Você está observando uma E / S de disco lenta e pesada em seu servidor web?

    
por 05.01.2012 / 11:05
1

Eu suponho que você tenha munin para monitorar as estatísticas do servidor (via iostat / vmstat). Assim, você pode verificar se o seu sistema está usando muito disco IO ou não. Em caso afirmativo, o sistema não é eficiente no armazenamento em cache. Você pode conferir Verniz , se as páginas que você veicula são na maioria conteúdos estáticos.

Veja também o Linux-ftools. Isso é exatamente o que você precisa, quando quiser mexer no cache de arquivos no nível do sistema. Confira

    
por 05.01.2012 / 11:24