Saya ingin mengatur Nginx sebagai server web saya. Saya ingin memiliki file gambar di-cache dalam memori (RAM) daripada disk. Saya melayani halaman kecil dan ingin beberapa gambar selalu disajikan dari RAM. Saya tidak ingin menggunakan Varnish (atau alat lain semacam itu) untuk ini karena saya percaya Nginx memiliki kemampuan untuk men-cache konten ke dalam RAM. Saya tidak yakin bagaimana cara mengkonfigurasi Nginx untuk ini? Saya memang mencoba beberapa kombinasi tetapi tidak berhasil. Nginx menggunakan disk setiap saat untuk mendapatkan gambar.
Misalnya, ketika saya mencoba benchmark Apache untuk menguji dengan perintah berikut:
ab -c 500 -n 1000 http://localhost/banner.jpg
Saya mendapatkan kesalahan berikut:
socket: Too many open files (24)
Saya kira ini berarti Nginx sedang mencoba untuk membuka terlalu banyak file secara bersamaan dari disk dan OS tidak memungkinkan operasi ini. Adakah yang bisa menyarankan saya konfigurasi yang benar?
Jawaban:
Jika konten statis maka akan di-cache dalam memori secara default (kecuali tidak ada memori yang tersisa), hanya saja tidak dengan nginx, tetapi OS - semua yang akan tersisa di sisi disk akan stat ().
Jika Anda menginginkan solusi 100% memori, Anda bisa mengkonfigurasi ramdisk dan menyajikan data dari sana.
sumber
Setelah server membaca file dari disk, itu akan di-cache ke ram (dan akan digantikan oleh file berbeda jika Anda kehabisan ram), masalahnya adalah pada batas akun Anda, Anda tidak dapat membuka begitu banyak file ( jalankan 'ulimit -a'),
Jika Anda ingin mengubah batas ini - baca tentang /etc/security/limits.conf
sumber
Jadi saya tahu ini benar-benar tua tetapi, ini dia.
sumber
File yang di-cache dalam RAM masih berupa file!
Coba gunakan modul cache Memcached dari Nginx sebagai gantinya. Tapi tetap saja, 1000 koneksi konkuren sangat besar, apakah menurut Anda kasus Anda?
sumber