Sziasztok!
Van egy nginx, amin futtatott php lassan tölt be, főleg, ha képek is tartoznak épp az oldalhoz. Cirka 20 mp kell, hogy egy galéria oldalt megnyisson (80 index kép). Ha a galéria oldalon a betöltés után rákattint az ember, akkor egy kép nagybani kinyitásához már nem kell sok idő 1 mp.
Az internet kapcsolat a megnyitó gépről 40 Mb/sec, a kiszolgáló pedig elméletileg 100 Mbit sávszélességben szolgáltat, így azt gondolom, hogy valami beállítás nem jó az nginxünkön.
user www-data;
worker_processes 1;
#worker_cpu_affinity 0001 0010 0100 1000;
pid /var/run/nginx.pid;
worker_rlimit_nofile 4096;
events {
worker_connections 768;
# T├║l sok kapcsolat eset├ęn kikapcsolni:
multi_accept on;
use epoll;
}
http {
sendfile on;
tcp_nopush on;
tcp_nodelay on;
keepalive_timeout 65;
reset_timedout_connection on;
client_header_timeout 60s;
client_body_timeout 60s;
send_timeout 60s;
types_hash_max_size 2048;
open_file_cache max=100000 inactive=20s;
open_file_cache_valid 30s;
open_file_cache_min_uses 2;
open_file_cache_errors on;
include /etc/nginx/mime.types;
default_type application/octet-stream;
##
# Logging Settings
##
access_log /var/log/nginx/access.log;
error_log /var/log/nginx/error.log;
##
# Gzip Settings
##
gzip on;
gzip_disable "msie6";
gzip_min_length 10240;
gzip_proxied expired no-cache no-store private auth;
include /etc/nginx/conf.d/*.conf;
include /etc/nginx/sites-enabled/*;
}
van még a conf.d ben olyan conf, amiben ezek vannak:
limit_req_zone $binary_remote_addr zone=one:10m rate=1r/s;
limit_req zone=one burst=100;
e két soron kívül még logformat meghatározás és ssl config van, ami nem okoz gondot.
Mi lehet elszúrva?
Hozzászólások
A PHP-FPM beállításának környékén vagy a kódba keresgélj inkább.
CLI-ben futtatva mennyi idő alatt fut le ugyanaz a PHP fájl?
Linux üzemeltetési, rendszergazdai szolgáltatások
kösz az ötleteket! Mindjárt megnézzük a phpfpm -t.
Ha helyben futtatjuk a php-t akkor az villámgyors.
Javaslom valami teszt eszközzel is megnézni, ami nem a te gépedről tölti le, pl. tools.pingdom.com, lehet, hogy valami más tartalomra vár ami lassú.
Valamint nézd meg telnettel is, hogy úgy milyen gyorsan kapod vissza a HTML-t.
Linux üzemeltetési, rendszergazdai szolgáltatások
Ha a böngészőben megnézi az ember developer tools ban (fejlesztői eszköz vagy miszösz) az oldal betöltését, akkor az látszik, hogy a betöltendő képek "pending" állapotban vannak, egyesével veszi elő őket, és betölteni pedig 6ms alatt tölti be az egyes képeket.
Hány kép jönne egyszerre? A böngészők 6-nál több erőforrást nem töltenek le ugyanazon domainről (js, css, képek, stb.), hanem sorba állítódnak.
Linux üzemeltetési, rendszergazdai szolgáltatások
igen, igaz, viszont itt egyesével jönnek a képek, tehát egyszerre mindig csak egyet tölt, és vlhogy a következő elindításáig is egészen sokat vár, maga az áttöltés 6 ms.
javaslat:
lazy-load vagyis oldalletöltés után töltsd csak be a képeket..
pl:
http://dinbror.dk/blazy/
A konkrét oldal és config fájlok nélkül kb. ennyi tanácsot lehet adni.
Linux üzemeltetési, rendszergazdai szolgáltatások
Kezdetnek a epoll-t vedd ki, és a gzip-et offold. Aztán majd meglátjuk.
--
Fontos! Ha berágok, nem feltétlen személyed ellen szól...
openSUSE 13.1 x86_64
okok, mindjárt kipróbáljuk!
Szerintem az epoll Linux-on (ha nem őskövület) jó választás, ha jól emlékszem a dokumentáció is ezt javasolja.
De pl. BSD-n már másik érték kell.
A gzip pedig alap esetben csak a html fájlokat tömöríti, a jpeg-et nem (azt nem is célszerű ;-).
Itt pedig a képek betöltésével van probléma.
De igazad van, ha sok és nagyobb méretű html fájlokat kell kiszolgálnia az nginx-nek egymás után, akkor mivel csak 1 mag van munkára bírva, ezért a gzip használata is lassító tényező lehet.
Lehet, hogy benne van a doc-ban. De nálam ez kikommentezett, a gzipnek meg minden át van adva alapban (már legalább is azt hiszem, nem csak html-t tömörít). és azért javasoltam, hogy hátha ez a megoldás.
--
Fontos! Ha berágok, nem feltétlen személyed ellen szól...
openSUSE 13.1 x86_64
gzip_types mondja meg, hogy milyen mime tipuso fájlokat tömörítse, a default érték text/html
Linux üzemeltetési, rendszergazdai szolgáltatások
Ühüm, nálam ez alapban gzip_types *; szokott lenni. (anno így csináltam meg valamiért a konfigot, azóta meg csak behúzogatom fordításkor.)
--
Fontos! Ha berágok, nem feltétlen személyed ellen szól...
openSUSE 13.1 x86_64
Ez nem a legoptimálisabb, mert pl. képek estén fölösleges erőforrásokat pazarolsz a tömörítéssel (az már amúgy is tömörített). Célszerű csak azokat a típusokat beállítani a változóba, ami jól tömöríthetőek.
Kommentezd ki a limit-re vonatkozó két sort, indítsd újra az nginx-et, majd próbáld meg úgy.
Kösz! megnézzük ezt is!
Nagyon tanulságos volt amiket írtatok, de végül a nginx limit conf ban zone rátát emeltük meg 1 ről 10 re, és most már hihetetlenül begyorsult!
Minden eshetőséget végignéztünk, amik itt szóba kerültek, hogy azokkal mi a helyzet,kösz mindent!
Ráhibáztam