Nginx - statikus fájlok kiszolgálása memcached-ből

 ( zsolt.k | 2014. augusztus 11., hétfő - 14:37 )

Sziasztok,

nginx-ből szeretném megoldani, hogy a statikus fájlokat memcached-ből szolgálja ki, aminek az egyik részét sikerült megoldani,
jelenleg megnézi, hogy benne van-e memcached-ben az adott fájl, ha igen, akkor kiszolgálja onnan, ha nem, akkor simán a diszkről,
viszont azt még nem sikerült megoldanom, hogy be is rakja memcached-be a fájlt. Van valakinek ötlete mi lehet a megoldás?

server {
listen 80;
server_name assets.domain.hu;

location ~* ^.+\.(css|js|jpg|jpeg|gif|png|ico|txt|xml)$ {
set $memcached_key "assets:$request_uri";
memcached_pass db01.vpn:11211;

error_page 404 = @cache_miss;
}

location @cache_miss {
root /srv/assets.domain.hu;
}
}

Előre is köszönök minden segítséget!

Hozzászólás megjelenítési lehetőségek

A választott hozzászólás megjelenítési mód a „Beállítás” gombbal rögzíthető.

- Mi az, ami nincs benne a memcacheben?

A statikus fájlt nem tudom hogyan rakjam be memcache-be (lehetőleg az nginx oldja ezt meg magától).

Kérdés: generált fájl X percig memcache-ból kiszolgálása okés.
Statikus fájl memcache-elését viszont nem értem, hiszen a statikus fájl eleve cache-elődik a Linux kernel miatt. Azaz újabb kiszolgálása esetén a memóriából kerül elő, tehát nem olvasódik a SATA kábelen keresztül. Mondjuk a "noatime" opció hasznos gyorsítás lehet.

Logikus lenne amit mondasz, viszont a valóságban nem állja meg a helyét. A méréseim szerint az nginx 15-20%-al gyorsabban szolgálja ki memcache-ből a statikus fájlokat. Szóval nem csak a hasamra ütöttem, és döntöttem, hogy no én akkor most memcache-be pakolok mindent.

Milyen kapcsolaton? 10Gb?
Nekem 1 Gb-nél még a lemez sem volt eddig szűk keresztmetszet, nemhogy a cache.

A /etc/fstab-ban a "noatime" opcióval próbáltad? Ekkor ugyanis nem ír vissza a diszkre (diszk cache-be) minden kiszolgálás után elérési időt.

Ezt hogy érted? 1db fájl lekérése annyival gyorsabb? A gép csúcsterhelésen annyival többet tud kiszolgálni?

tmpfs-re tett docroot-tal próbálkoztál?

Gyorsabb - mihez kepest? Azert azt latni kell, hogy a memcache plusz egy hibalehetoseg es a modul nem is a leggyakrabban hasznaltak koze tartozik. Ezzel szemben van egy gyorsulasod, amit nem tudom, hogy ertel el mert nekem random 50k-s fajlokkal sikerult mar gigabiteket is kikoppantanom nginx-szel. Sztem merjel ujra, ha lehet, akkor valos terhelessel, es ott optimalizalj, ahol tenyleg szukseg van ra.

--
Pásztor János
Üzemeltető Macik

azt irja, hogy "A response should be put in memcached in advance by means external to nginx."
https://www.igvita.com/2008/02/11/nginx-and-memcached-a-400-boost/

tehat neked kell kulso programmal berakni memcache-be az cuccot. pl orankent felolvassa egy script a /www/akarmi/static mappat, es belapatolja memcachebe, a megfelelo kulcshoz a fajlokat.

--
A vegtelen ciklus is vegeter egyszer, csak kelloen eros hardver kell hozza!

-- törölve - h*lyeséget írtam --

-torlendo-