Quiero configurar Nginx como mi servidor web. Quiero tener archivos de imagen en caché en la memoria (RAM) en lugar de en el disco. Estoy sirviendo una página pequeña y quiero algunas imágenes siempre servidas desde RAM. No deseo usar Varnish (ni ninguna otra herramienta similar) para esto, ya que creo que Nginx tiene la capacidad de almacenar en caché el contenido en la RAM. ¿No estoy seguro de cómo puedo configurar Nginx para esto? Intenté algunas combinaciones pero no funcionaron. Nginx usa el disco todo el tiempo para obtener las imágenes.
Por ejemplo, cuando probé el benchmark Apache para probar con el siguiente comando:
ab -c 500 -n 1000 http://localhost/banner.jpg
Obtuve el siguiente error:
socket: Too many open files (24)
Supongo que esto significa que Nginx está intentando abrir demasiados archivos simultáneamente desde el disco y el sistema operativo no permite esta operación. ¿Alguien puede sugerirme una configuración correcta?
Respuestas:
Si se trata de contenido estático, se almacenará en la memoria caché de forma predeterminada (a menos que no quede memoria), pero no por nginx, sino por sistema operativo; todo lo que quedará en el lado del disco será stat ().
Si desea una solución de memoria al 100%, puede configurar ramdisk y servir datos desde allí.
fuente
Una vez que el servidor ha leído un archivo del disco, se almacenará en la memoria caché en la memoria RAM (y se reemplazará por un archivo diferente si no tiene memoria RAM), el problema está en el límite de su cuenta, no puede abrir tantos archivos ( ejecute 'ulimit -a'),
Si desea cambiar este límite, lea sobre /etc/security/limits.conf
fuente
Así que sé que esto es muy viejo, pero aquí va.
fuente
¡Un archivo en caché en RAM sigue siendo un archivo!
Intente utilizar el módulo de caché Memcached de Nginx en su lugar. Pero aún así, 1000 conexiones concurrentes son enormes, ¿crees que es tu caso?
fuente