LAMP++

Amit egy Linuxos webszerverből (ésszerű határok közt) ki lehet hozni az itt megtalálható.

Kapcsolódó oldalak

Címkék

apache (8) backup (1) blog (1) cache (1) chroot (4) cms (1) daemontools (2) ddos (1) djb (1) dns (2) dos (1) email (1) geoip (1) google (2) ip (1) kvm (1) lamp (1) linux (1) mail (1) mysql (4) nginx (3) pdumpfs (1) php (8) pound (1) proxy (2) regcheck (1) seo (2) shell (1) shorewall (1) snapshot (1) spl (1) ssl (1) statisztika (1) szerver (1) thttpd (1) tinydns (1) tűzfal (1) ubuntu (1) virtualizáció (1) wordpress (2) Címkefelhő

Utolsó kommentek

  • aFoP: Írtam bash szkriptet ami a fent letölthető hu.csv-ből legenerálja az összes hálózat-címet, így már... (2014.04.26. 10:51) Magyar IP tartományok
  • Oszi: A JPEG support -hoz nem árt még ez is: --with-jpeg-dir=/usr/include (2009.06.08. 10:52) PHP fordítás
  • Oszi: @bagoj ur: OK, össze szedem magam és blogba vésem amit tudok. Hamarosan... (2009.03.05. 20:18) Virtualizáció KVM -el
  • Utolsó 20

Feedek

Lassú weboldalak felderítése

2009.04.11. 10:00 Oszi

Egy olyan kérés ami súlyos másodpercekig fut a webszerveren elég gáz tud lenni, viszont nem mindig könnyű kideríteni, hogy melyek is ezek. Ebben fog segíteni az alábbi kis összeállítás.

Előszőr a proxy -n lehet vizsgálódni. Az nginx log moduljából kideról, hogy a $request_time -ot érdemes lelogolni és akkor kiderül, hogy melyik kérést mennyi ideig tartott kiszolgálni. Ezt igazából csak a teljesség kedvéért írtam, mert a proxy eléggé ártatlan szokott lenni esetekben.

A fő bűnös általában a PHP, vagyis az őt futtató Apache. Az apache doksijából látszik, hogy a %P The process ID of the child that serviced the request. és a %T The time taken to serve the request, in seconds. -t hasznos lehet lelogolni. Előbbi hibakeresésénél (beragadt child), míg utóbbi a lassú kérések megkeresésénél lehet hasznos. Annak ,akinek nagyon jó rendszere van és mindne kérés egy másodperc alatt lefut van egy másik lehetőség: %D The time taken to serve the request, in microseconds..

Szerencsére erre is van már célszerszám: a modlogslow. Ez egy apache modul, amivel le lehet logolni a lassú kéréseket. Mivel csomagban nincs, ezért le kell fordítani, amihez a apache2-prefork-dev -kell. Konfigurálása ennyi:

LogSlowEnabled On
LogSlowLongRequestTime 4000
LogSlowFileName /var/log/apache2/slow.log

A modlogslow kimenetét is lehet még tovább finomítani:

cut -d ' ' -f 13,15,5 /var/log/apache2/slow.log| \
sed -r "s/^([0-9.]+) (.+) (.+)/\2 \3 \1/" |sed -r "s/^www\.(.+)/\1/" |sort

ha ezt még egy egyszerű PHP programmal rendezgetjük, akkor a userek számára is emészthető eredményt kapunk..

Az apache persze igen gyakran a nem jól megírt SQL parancsok miatt lassú. Ezt úgy lehet kideríteni ha bekapcsoljuk a slow logot:

log_slow_queries = /var/log/mysql/mysql-slow.log
long_query_time = 4

Ennek a kimente elég nagy tud lenni, ugyhogy nemárt ha kiemeljük a lényeget a mysql-log-filter -el. Ennek futtatásához kell a php5-sqlite (már amennyiben PHP -ban futtatjuk). Használata pedig ilyen:

php /usr/local/mysql-log-filter/mysql_filter_slow_log.php -T=3 --no-duplicates \
--sort-execution-count --top=10 --incremental /var/log/mysql/mysql-slow.log

Én úgy vettem észre, hogy a log váltásokat nem kezeli jól,úgyhogy havonta nem árt letörölni az sqlite adatbázisát (pl.: cron.monthly -ban).

Szólj hozzá!

Címkék: apache mysql

A bejegyzés trackback címe:

https://lamp.blog.hu/api/trackback/id/tr311056270

Kommentek:

A hozzászólások a vonatkozó jogszabályok  értelmében felhasználói tartalomnak minősülnek, értük a szolgáltatás technikai  üzemeltetője semmilyen felelősséget nem vállal, azokat nem ellenőrzi. Kifogás esetén forduljon a blog szerkesztőjéhez. Részletek a  Felhasználási feltételekben és az adatvédelmi tájékoztatóban.

Nincsenek hozzászólások.
süti beállítások módosítása