Talvez mudar a aplicação para gravar em a/b/c/abcdef.jpg seja um problema.
Com mod_rewrite você consegue fazer com que um retrieve da image (abcdef.jpg) redirecione para um script em PHP que acessa o banco e obtém os dados....
Mas realmente, concordo que o problema não é tão simples devido ao volume de dados e acessos, e principalmente, pela importancia da aplicação....
Se puder simular um ambiente e fazer as comparações, você poderá tomar uma decisão mais segura e inteligente que os nossos "achismos" ;-)
boa sorte! =)
2009/11/27 Giovanni Tirloni tirloni@gmail.com
2009/11/27 "Fábio Jr." fjuniorlista@gmail.com:
Fabio Rampazzo Mathias escreveu:
Fabio,
Vamos com calma....você não tem 4 milhões de figuras....você tem aprox. 1,34 milhão de figuras (4/3).... o resto é resize da mesma, que você pode armazenar no mesmo registro do MySQL. Só programar para trazer a figura conveniente. Depois, você está compartilhando um diretório via NFS. Eu diria que, o gargalo está no NFS, pois ele não é performático como o filesystem.
Tenho 4 milhões de aquivos no total. Uma imagem tem 3 tamanho diferentes e são 3 arquivos diferentes. Ok, acho q foi isso q vc entendeu mesmo, só pra confirmar. Concordo com você ao dizer que nfs é gargalo, mas ele é um dos gargalos, já que a medida que eu aumento o numero de arquivos no mesmo diretório, o próprio filesystem começa a perder performance na hora de me retornar o arquivo. Pelo menos foi isso que eu percebi aqui.
Outro ponto importante é a aplicação. Há a viabilidade de requisitar as 7 ou 10 figuras de uma vez só?
Através de uma conexão ao banco sim, mas não através de uma consulta só. Eu posso abrir uma conexão, e fazer as minhas 7 ou 10 consultas nessa mesma conexão.
Acho que mesmo que a pergunta anterior não seja respondida de forma afirmativa, um banco de dados traria ganhos em termos de performance.
Você sabe qual é a média de acessos e o pico de acessos (em quantidade) ??? Quanto ao cluster, qual máquina que você possui para o servidor NFS ?
O pico é de 120 requisições por segundo, e a média do dia é 40 req/seg. Isso pq de madrugada a quantidade de requisições é muito baixa. A média de requisições em horário comercial é de 60 req/sec.
O servidor nfs é um Dual Xeon 5405 com 2 GB de memória com discos SAS de 15k RPM com espelhamento.
Todas as soluções apresentadas são ótimas do ponto de vista de cada um. Entretanto o seu maior problema, pelo que entendi, é o tempo que o fs demora para buscar o arquivo nesse diretório. Como já sugeriram, fazendo a simples mudança de criar mais diretórios irá resolver seu problema.
abcdef.jpg -> a/b/c/abcdef.jpg
Essa mudança na aplicação deve ser infinitamente mais fácil que colocar tudo em um banco de dados e mudar a lógica toda.
Tenho lá minha dúvidas se adicionar camada de abstração em cima de camada de abstração vai melhorar a performance. Como sempre, o melhor é montar um ambiente separado e testar para a sua situação.
A Internet está cheia de dicas de como otimizar o NFS.
-- Giovanni. _______________________________________________ CentOS-pt-br mailing list CentOS-pt-br@centos.org http://lists.centos.org/mailman/listinfo/centos-pt-br