NginxをWebサーバーとして設定したい。画像ファイルをディスクではなくメモリ(RAM)にキャッシュしたい。私は小さなページを提供しており、常にRAMから提供されるいくつかの画像が必要です。 NginxにはコンテンツをRAMにキャッシュする機能があると思うので、これにはVarnish(またはその他のツール)を使用したくありません。このためにNginxをどのように設定できるかわかりませんか?いくつかの組み合わせを試しましたが、うまくいきませんでした。 Nginxは常にディスクを使用して画像を取得します。
たとえば、次のコマンドでApacheベンチマークをテストしてみました。
ab -c 500 -n 1000 http://localhost/banner.jpg
次のエラーが発生します。
socket: Too many open files (24)
これは、Nginxがディスクから同時に多くのファイルを開こうとしているため、OSがこの操作を許可していないことを意味します。誰でも私に正しい設定を提案できますか?
静的コンテンツの場合、nginxではなく、デフォルトで(メモリが残っていない場合を除いて)メモリにキャッシュされますが、OS-ディスク側に残されるのはstat()だけです。
100%のメモリソリューションが必要な場合は、ramdiskを構成してそこからデータを提供できます。
サーバーがディスクからファイルを読み取ると、そのファイルはRAMにキャッシュされ(RAMがなくなった場合は別のファイルに置き換えられます)、問題はアカウントの制限にあり、あまり多くのファイルを開くことができません( 'ulimit -a'を実行)、
この制限を変更したい場合-/etc/security/limits.confをお読みください
これが本当に古いのはわかっていますが、ここにいきます。
RAMにキャッシュされたファイルはまだファイルです!
代わりにNginxのMemcachedキャッシュモジュールを使用してみてください。しかし、それでも1000の同時接続は巨大です、あなたはあなたのケースだと思いますか?