Debian gép a plafonon van...

Fórumok

Sziasztok!

Kb. szószerint: PHP5, MariaDB és Apache2 van a gépen, de a load képes felmászni 30 felé. Ilyenkor már minden weboldal durván laggol.
Találtam egy hibás rewrite-ot, azt kiiktattam, de továbbra sem szűnt meg a hiba. Ha apache-ot újraindítom, a load visszaáll, 2 alá, de aztán visszakúszik.

Mi lehet a gond, merre érdemes keresgélni? Eddig nem csinált ilyet.

Köszi!

Hozzászólások

Ha eddig nem csinált ilyet, akkor mi változott? :). iotop, hogy nem tekeri-e valami a hdd-t.

Ugye nem írtál magadnak wrappert a mysql-hez?
Nem zrikálásnak szánom, csak velem eljátszotta két német kolléga, hogy írtak maguknak egy testhezállót.
Olyat, ami minden sql elé beteszi a connectet, utána meg a eldobja. Nem gondolták, hogy ebből baj lehet. Azóta rossz szokásom, hogy rákérdezek erre is, ha úgy hozza a helyzet.

b@szki nem talalgatni meg barkobazni kell hanem elinditani a top-ot es ott le van irva feketen-feheren
apache-on belul raadasul ott a statusz modul, mariadb-ben meg a show full processlist
de ezek 15 eves tool-ok, konyorgom. errol forumtopicot nyitni?

Legalább volt egy jó estéd...
Képzeld, első dolgom volt toppal és htoppal nézni, meg aztán jött az iotop is meg a show processlist is, de semmi kirívót nem látok, amit eddig ne csinált volna (4-5 query vagy insert), és mégse járt 11-nél a load.

Sajnálom, ha neked ez bántja a szemed, ezesetben lapozz tovább nyugodtan.

--
-- Üvegfiú - Csontkemény harc
Tégy Jót!®

Milyen filerendszert hasznalsz alatta?
A mount kimenetet esetleg idemasolnad?
Ha XFS - Red Hat/Centos default - erdemes toredezettseg mentesiteni idonkent.
Hasznalsz-e raid-et, ha igen milyent es hogyan?
dmesg|tail -n50 kimeneteben latsz valami erdekeset?
mysql-nel kapcsold be a slow-log reszt. Neha jol jon.

Rackforest VPS.
Ext4, gondolom raid-en ül.

Mount kimenet:
sysfs on /sys type sysfs (rw,nosuid,nodev,noexec,relatime)
proc on /proc type proc (rw,nosuid,nodev,noexec,relatime)
udev on /dev type devtmpfs (rw,relatime,size=10240k,nr_inodes=2056551,mode=755)
devpts on /dev/pts type devpts (rw,nosuid,noexec,relatime,gid=5,mode=620,ptmxmode=000)
tmpfs on /run type tmpfs (rw,nosuid,relatime,size=3293824k,mode=755)
/dev/vda1 on / type ext4 (rw,relatime,errors=remount-ro,data=ordered)
securityfs on /sys/kernel/security type securityfs (rw,nosuid,nodev,noexec,relatime)
tmpfs on /dev/shm type tmpfs (rw,nosuid,nodev)
tmpfs on /run/lock type tmpfs (rw,nosuid,nodev,noexec,relatime,size=5120k)
tmpfs on /sys/fs/cgroup type tmpfs (ro,nosuid,nodev,noexec,mode=755)
cgroup on /sys/fs/cgroup/systemd type cgroup (rw,nosuid,nodev,noexec,relatime,xattr,release_agent=/lib/systemd/systemd-cgroups-agent,name=systemd)
pstore on /sys/fs/pstore type pstore (rw,nosuid,nodev,noexec,relatime)
cgroup on /sys/fs/cgroup/cpuset type cgroup (rw,nosuid,nodev,noexec,relatime,cpuset,clone_children)
cgroup on /sys/fs/cgroup/cpu,cpuacct type cgroup (rw,nosuid,nodev,noexec,relatime,cpu,cpuacct)
cgroup on /sys/fs/cgroup/devices type cgroup (rw,nosuid,nodev,noexec,relatime,devices)
cgroup on /sys/fs/cgroup/freezer type cgroup (rw,nosuid,nodev,noexec,relatime,freezer)
cgroup on /sys/fs/cgroup/net_cls,net_prio type cgroup (rw,nosuid,nodev,noexec,relatime,net_cls,net_prio)
cgroup on /sys/fs/cgroup/blkio type cgroup (rw,nosuid,nodev,noexec,relatime,blkio)
cgroup on /sys/fs/cgroup/perf_event type cgroup (rw,nosuid,nodev,noexec,relatime,perf_event)
tmpfs on /etc/machine-id type tmpfs (ro,relatime,size=3293824k,mode=755)
systemd-1 on /proc/sys/fs/binfmt_misc type autofs (rw,relatime,fd=23,pgrp=1,timeout=300,minproto=5,maxproto=5,direct)
mqueue on /dev/mqueue type mqueue (rw,relatime)
debugfs on /sys/kernel/debug type debugfs (rw,relatime)
hugetlbfs on /dev/hugepages type hugetlbfs (rw,relatime)
tmpfs on /mnt/tmp type tmpfs (rw,nosuid,nodev,noexec,nodiratime,relatime,size=2048k)
fusectl on /sys/fs/fuse/connections type fusectl (rw,relatime)
rpc_pipefs on /run/rpc_pipefs type rpc_pipefs (rw,relatime)
tmpfs on /run/user/1000 type tmpfs (rw,nosuid,nodev,relatime,size=1646912k,mode=700,uid=1000,gid=1000)

dmesg | tail -50:

root@tegyjotadrienn:~# dmesg|tail -n50
[14927151.524679] br0: port 2(vethBVRU5F) entered forwarding state
[14927166.556025] br0: port 2(vethBVRU5F) entered forwarding state
[14927255.349402] br0: port 2(vethBVRU5F) entered disabled state
[14927255.484186] br0: port 2(vethBVRU5F) entered disabled state
[14927255.484622] device vethBVRU5F left promiscuous mode
[14927255.484630] br0: port 2(vethBVRU5F) entered disabled state
[14927289.945641] device vethXGHYY7 entered promiscuous mode
[14927289.945681] IPv6: ADDRCONF(NETDEV_UP): vethXGHYY7: link is not ready
[14927289.945684] br0: port 2(vethXGHYY7) entered forwarding state
[14927289.945686] br0: port 2(vethXGHYY7) entered forwarding state
[14927289.947655] br0: port 2(vethXGHYY7) entered disabled state
[14927290.009851] IPv6: ADDRCONF(NETDEV_CHANGE): vethXGHYY7: link becomes ready
[14927290.009886] br0: port 2(vethXGHYY7) entered forwarding state
[14927290.009890] br0: port 2(vethXGHYY7) entered forwarding state
[14927305.052019] br0: port 2(vethXGHYY7) entered forwarding state
[14927341.575137] br0: port 2(vethXGHYY7) entered disabled state
[14927341.664754] br0: port 2(vethXGHYY7) entered disabled state
[14927341.665221] device vethXGHYY7 left promiscuous mode
[14927341.665229] br0: port 2(vethXGHYY7) entered disabled state
[14927344.933465] device vethCQ2PD0 entered promiscuous mode
[14927344.933505] IPv6: ADDRCONF(NETDEV_UP): vethCQ2PD0: link is not ready
[14927344.933509] br0: port 2(vethCQ2PD0) entered forwarding state
[14927344.933512] br0: port 2(vethCQ2PD0) entered forwarding state
[14927344.935393] br0: port 2(vethCQ2PD0) entered disabled state
[14927344.973646] IPv6: ADDRCONF(NETDEV_CHANGE): vethCQ2PD0: link becomes ready
[14927344.973676] br0: port 2(vethCQ2PD0) entered forwarding state
[14927344.973679] br0: port 2(vethCQ2PD0) entered forwarding state
[14927360.028030] br0: port 2(vethCQ2PD0) entered forwarding state
[15029482.935497] br0: port 2(vethCQ2PD0) entered disabled state
[15029482.996876] br0: port 2(vethCQ2PD0) entered disabled state
[15029482.998528] device vethCQ2PD0 left promiscuous mode
[15029482.998534] br0: port 2(vethCQ2PD0) entered disabled state
[15029489.497897] device veth59YA8N entered promiscuous mode
[15029489.497938] IPv6: ADDRCONF(NETDEV_UP): veth59YA8N: link is not ready
[15029489.497941] br0: port 2(veth59YA8N) entered forwarding state
[15029489.497944] br0: port 2(veth59YA8N) entered forwarding state
[15029489.499796] br0: port 2(veth59YA8N) entered disabled state
[15029489.533614] IPv6: ADDRCONF(NETDEV_CHANGE): veth59YA8N: link becomes ready
[15029489.533649] br0: port 2(veth59YA8N) entered forwarding state
[15029489.533653] br0: port 2(veth59YA8N) entered forwarding state
[15029504.540020] br0: port 2(veth59YA8N) entered forwarding state
[15250435.327367] nf_conntrack: falling back to vmalloc.
[15250435.327649] nf_conntrack: falling back to vmalloc.
[15250435.427615] nf_conntrack: falling back to vmalloc.
[15250435.427738] nf_conntrack: falling back to vmalloc.
[15250464.516801] nf_conntrack: falling back to vmalloc.
[15250464.516951] nf_conntrack: falling back to vmalloc.
[15430464.521828] nf_conntrack: falling back to vmalloc.
[15653797.084258] nfsacl: server backup0.rackforest.hu not responding, still trying
[15653812.379588] nfsacl: server backup0.rackforest.hu OK

slow-log -ot bekapcsoltam:
root@tegyjotadrienn:/var/log/mysql# cat mysql-slow.log
/usr/sbin/mysqld, Version: 10.0.30-MariaDB-0+deb8u2 ((Debian)). started with:
Tcp port: 3306 Unix socket: /var/run/mysqld/mysqld.sock
Time Id Command Argument
# Time: 170718 22:48:46
# User@Host: tegyjothu[tegyjothu] @ localhost []
# Thread_id: 79 Schema: tegyjothu QC_hit: No
# Query_time: 10.800704 Lock_time: 0.000049 Rows_sent: 2509 Rows_examined: 1616852
use tegyjothu;
SET timestamp=1500410926;
SELECT option_name, option_value FROM tegyjot_options WHERE autoload = 'yes';
# Time: 170718 22:48:50
# User@Host: tegyjothu[tegyjothu] @ localhost []
# Thread_id: 86 Schema: tegyjothu QC_hit: No
# Query_time: 10.002664 Lock_time: 0.000068 Rows_sent: 2509 Rows_examined: 1616862
SET timestamp=1500410930;
SELECT option_name, option_value FROM tegyjot_options WHERE autoload = 'yes';

Nagyjából ennyi...

--
-- Üvegfiú - Csontkemény harc
Tégy Jót!®

mount, dmesg OK
A slow log egy nap vagy tobb utan lesz relevans. Ez a terhelesetol fugg a szervernek. http://www.ducea.com/2006/11/06/identifying-mysql-slow-queries/

top -n1|head -n20 meg esetleg

Hasznalsz valami ertelmesebb php cacheing mechanizmust?

mysqltuner mit mond egy hosszabb nap utan? Neha erdemes elgondolkodni a tippjein.

"A slow log egy nap vagy tobb utan lesz relevans."
Ezt mire alapozod, vagy arra erted hogy kene egy preload indexekre, esetleg tablakra bufferhez?
Slow logban ott van hogy 10 masodpercig futott, ha esetleg nem volt meg akkor cache-ben de utana lefuttatja kezzel ujra es akkor is lassu akkor egy explain-el lehet elemezni, siman lehet csak annyi is, hogy tabla merete elerte az a szintet ahol abban keresve mar nem fer bele session bufferekbe a query.

Igen lehet mellette mas is ami kesobb jon elo, de mar ennyibol is latszik, hogy ugyanaz a query 2-szer egymas utan is 10 sec-ig futott pedig "csak" par ezer sort adott vissza kb masfelmilliobol.
Ez igy aligha jo, vagy a query-t kell atirni vagy a mysql buffer ertekeket modositani a megnovekedett tabla merethez vagy a tablabol torolni a felesleges/regi elemeket.
Ha ez meg van akkor jo esellyel hasonlo okra visszavezetheto lesz a tobbi hiba is ha elojon masik ami utobbi idoben jelentkezett mysql lassusag es ugyanarra az analikitara meg lehet oldani.

autoload mezon nincs index.
Lattam mar ilyet, valamelyik plugin feltolti az options tablat sokezer sorral, autoload ertekere szur, de az index az lemaradt rola.

Csak boolean ertekre altalaban nincs ertelme indexet tenni, mert ugyse fogja hasznalni.
Ha tobb mezobol all az index vagy covering index, netan ha az az allapot amit altalaban keresel a boolean-ban ritkan fordul elo akkor lehet haszna, de explain-el ki lehet probalni ezeket.
Nem szabad esz nelkul se indexet pakolni mindenre hatha jo lesz alapon.

Amit javaslok meg, mert az index meg fogja oldani a problemat, de sok potencial van meg itt:
- PHP Zend opcache-et bekapcsolni
- MySQL/MariaDB csereje Percona Forkra
- MySQL bufferek (join, sort, tmp stb), query cache emelese
- Wordpress total cache vagy hasonlo hasznalata memcached-vel (alapertelmezetten az APC/APCu-t fogja ajanlani, de ne dolj be neki!)
- Apache helyett NGINX+PHP-FPM

iowait, IOps ertekek elemzese, io scheduler valtas, halozati kernel ertekek stb.

Tegyel fel egy netdatat, a lenyeget meg fogja mondani:
https://github.com/firehol/netdata