Quero configurar o Nginx como meu servidor da web. Quero ter arquivos de imagem armazenados em cache na memória (RAM), em vez de no disco. Estou servindo uma página pequena e quero algumas imagens sempre veiculadas na RAM. Não desejo usar o Varnish (ou quaisquer outras ferramentas) para isso, pois acredito que o Nginx tem a capacidade de armazenar em cache o conteúdo na RAM. Não tenho certeza de como posso configurar o Nginx para isso? Eu tentei algumas combinações, mas elas não funcionaram. O Nginx usa disco o tempo todo para obter as imagens.
Por exemplo, quando tentei o benchmark do Apache para testar com o seguinte comando:
ab -c 500 -n 1000 http://localhost/banner.jpg
Eu obtenho o seguinte erro:
socket: Too many open files (24)
Acho que isso significa que o Nginx está tentando abrir muitos arquivos simultaneamente do disco e o sistema operacional não está permitindo essa operação. Alguém pode me sugerir uma configuração correta?
Respostas:
Se for um conteúdo estático, ele será armazenado em cache na memória por padrão (a menos que não haja mais memória), apenas não pelo nginx, mas pelo sistema operacional - tudo o que restará no lado do disco será stat ().
Se você deseja uma solução com 100% de memória, basta configurar o ramdisk e fornecer dados a partir daí.
fonte
Depois que o servidor ler um arquivo do disco, ele será armazenado em cache no RAM (e será substituído por um arquivo diferente se você estiver fora do RAM), o problema está no limite da sua conta, e você não poderá abrir tantos arquivos ( execute 'ulimit -a'),
Se você deseja alterar esse limite - leia sobre /etc/security/limits.conf
fonte
Então eu sei que isso é muito antigo, mas aqui vai.
fonte
Um arquivo em cache na RAM ainda é um arquivo!
Tente usar o módulo de cache Memcached do Nginx. Ainda assim, 1000 conexões simultâneas são enormes, você acha que é o seu caso?
fonte