Chcę skonfigurować Nginx jako mój serwer WWW. Chcę, aby pliki obrazów były buforowane w pamięci (RAM), a nie na dysku. Podaję małą stronę i chcę, aby kilka obrazów zawsze było wyświetlanych z pamięci RAM. Nie chcę do tego używać Varnish (ani żadnych innych podobnych narzędzi), ponieważ uważam, że Nginx ma możliwość buforowania zawartości pamięci RAM. Nie jestem pewien, jak mogę w tym celu skonfigurować Nginx? Próbowałem kilku kombinacji, ale one nie działały. Nginx używa dysku przez cały czas, aby uzyskać obrazy.
Na przykład, gdy próbowałem testu porównawczego Apache, aby przetestować za pomocą następującego polecenia:
ab -c 500 -n 1000 http://localhost/banner.jpg
Otrzymuję następujący błąd:
socket: Too many open files (24)
Myślę, że to oznacza, że Nginx próbuje otworzyć zbyt wiele plików jednocześnie z dysku, a system operacyjny nie pozwala na tę operację. Czy ktoś może zasugerować mi prawidłową konfigurację?
Odpowiedzi:
Jeśli jest to zawartość statyczna, wówczas będzie domyślnie buforowana w pamięci (chyba że nie będzie już żadnej pamięci), tylko nie przez nginx, ale system operacyjny - wszystko, co pozostanie po stronie dysku, będzie stat ().
Jeśli chcesz 100% rozwiązania pamięciowego, możesz po prostu skonfigurować ramdysk i udostępniać stamtąd dane.
źródło
Gdy serwer odczyta plik z dysku, zostanie on buforowany do pamięci RAM (i zostanie zastąpiony innym plikiem, jeśli nie masz pamięci RAM), problem dotyczy limitu konta, nie możesz otworzyć tylu plików ( uruchom „ulimit -a”),
Jeśli chcesz zmienić ten limit - przeczytaj o /etc/security/limits.conf
źródło
Wiem, że to naprawdę stare, ale proszę bardzo.
źródło
Plik buforowany w pamięci RAM jest nadal plikiem!
Spróbuj zamiast tego użyć modułu pamięci podręcznej Memcached firmy Nginx. Ale wciąż 1000 równoczesnych połączeń jest ogromne, czy uważasz, że to twoja sprawa?
źródło