salut, am un server dell, dual xeon la 2.8 Ghz, cu 2 GB de ram si hdd-s
scsi care logheaza trafic la clienti in genul unui web trafic monitor.
am pe el rhel 3.3 si mysql 4. din cand in cand am probleme cu el si nu ma
descurc de nici o culoare:
1. apar tabele corupte din cand in cand. filesystem e ok, nu sunt
bad-uri pe disk. coruperea tabelelor se pare ca apare in momente de high
load. cum serverul de mysql este singurul care interactioneaza efectiv cu
tabelele, nu inteleg ceva: in mod logic, nu ar trebui sa nu se intample
asta? e vreo problema cu mysql-ul in general sub high load sau cum?
inteleg sa mearga mai greu, dar de ce sa se ajunga la tabele corupte?
2. logurile: nu le gasesc de loc reliable, cel putin in genul in care le
poti customiza la apache: in prezent e pus pe:
log-long-format
log=/var/log/mysqld_all.log
dar nu vad nicaieri data si ora la care e logat fiecare entry. in slow log
e si mai rau: data si ora apar numai din cand in cand ("#time: data, ora")
si totul e logat pe mai multe linii si deci nu e eficient de grep-uit. as
vrea sa am tot pe o linie: data, ora, query time, sql suery, etc.
am sapat la ei pe site si nu am gasit nimic concret pana acum.
3. mysql-ul este folosit de niste scripturi php rulate din apache. desi la
apache am pus sa logheze pid-ul fiecarui thread, nu am gasit nici o
posibilitate de a face legatura intre fiecare intreare din logul de httpd
cu una sau mai multe intrari in logul de mysql. cum as putea face sa stiu
din logul de mysql ca query-ul X este resultatul accesului facut de
threadul httpd cu pid-ul Y? poate loga cumva mysql id-ul conexiunii astfel
incat si din scripturi sa le pun sa logheze acelasi id si sa pot face
legatura?
4. cand serverul se misca greu, daca dau `/etc/init.d/httpd stop` poate
dura si un sfer de ora pana se opreste, timp in care upload-ul urca la
nivele "astonomice": am vazut si:
Load Avg 1023: 1 Times(s)
in timpul cat "moare" httpd-ul, nu mai pot face nimic, evident, decat sa
ma rog sa moara mai repede.
5. dupa ce apare o perioada de slow si restartez httpd si mysql, totul
merge bine. totusi, incetineala nu apare dinntr-odata, ci se pare ca este
rezultatul unei acumulari care dureaza o vreme. daca ma uit in loguri la
ultimele query-uri de mysql inainte de restart, nu e nici una suspeta. am
incercat chiar si ultimele 200, una cate una si nici una nu a rulat mai
mult de 1 secunda. totusi in anumite contiditii care nu le gasesc, toate
incep sa se miste greu de la un moment dat. cum as putea face sa ma prind
ce cauzeaza acest comportament? am zeci daca nu chiar sute de scripturi in
php, dezvoltate de diferiti, daca le-as fi scris eu macar stiam unde sa ma
uit :-)
6. din cauza ca accesul la baza de date e destul de intensiv, chiar si in
conditii normale, i/o-ul e totdeauna ridicat. totusi nu inteleg din top
urmatoarele:
CPU states: cpu user nice system irq softirq iowait idle
total 43.2% 0.0% 13.6% 0.0% 2.4% 208.0% 131.2%
cum poate sa fie iowait 208%?! cum poate fi mai mar de 100%? ce sa inteleg
de aici? (serverul are activat hyperthreading, os-ul vede 4 cpu-uri).
necazul e ca serverul e in alta locatie si nu am access fizic la el.
trebuie sa fac totul remote. reboot-urile sunt excluse, e server de
productie. ce alteceva imi mai puteti sugera pe aceasta tema? in materie
de dba la mysql sunt la inceput si din pacate nu avem un om aici care sa
fie expert in asa ceva.
merci,ela
---
Detalii despre listele noastre de mail: http://www.lug.ro/