DevProTalk

DevProTalk (http://www.devprotalk.com/index.php)
-   Web Hosting, web serveri i operativni sistemi (http://www.devprotalk.com/forumdisplay.php?f=11)
-   -   Query koji optereti server ? (http://www.devprotalk.com/showthread.php?t=2423)

bluesman 13. 02. 2007. 19:13

Query koji optereti server ?
 
Primetili ste da se poslednjih dana server "ružno" ponaša, dešava se po 2-3 puta dnevno da je nodostupan. Nije pao, već mu je load veliki pa ne prolaze http zahtevi, i posle dugog učitavanja dobije se "not found".

Sada, ustanovili smo da je problem ili do mysqld ili httpd ili oba. Restartovanje jednog od ova dva servisa, ili ponekad oba, rešava problem, ali je to prilično glupo rešenje, ne možeš da sediš ceo dan i čekaš kad ćeš da restartuješ servise...

Elem, ustanovili smo da su problemi počeli pre par dana, baš kada smo otvorili jedan novi domen koji je osim što je prilično veliki, izgleda i loše napisan, pa smo pronašli da se neki mysql query-ji izvršavaju po 5 minuta ?!?!

Danas smo suspednovali taj nalog, ako ništa drugo bar da proverimo da li je to uzrok svih problema, i što se kaže "so far so good". Ali da se ne radujem prerano, da li neko ima drugu ideju šta može da pravi te probleme?

Takođe smo danas isključili i mogućnost permanent konekcije u mysql, da vidimo da možda i to ne utiče. MySQL je 5.0.24a a PHP je 5.0.4 sa Zend 2.0.4-dev, Zend Optimizer 2.6.2

Peca 13. 02. 2007. 19:26

Sa SQL query-jem SHOW PROCESSLIST; mozes da vidis spisak query-ja koji se tog trenutka izvrsavaju, vidi se nalog i duzina izvrsavanja, pa tako mozes da vidis koji nalog 'obara' server na kolena...

phatsa 13. 02. 2007. 19:39

Citat:

Originalno napisao bluesman
pa smo pronašli da se neki mysql query-ji izvršavaju po 5 minuta ?!?!

sunce ti... query od 5 minuta... moguce da u mysql bazi nema indeksa po potrebnim poljima koja se koriste u queriju, ili primarnih kljuceva?

Petar Marić 13. 02. 2007. 19:50

Mysql ima tzv slow query log - da bi ga omogućio dodaj ovaj kod u konfiguraraciju servera:
Kôd:

log-slow-queries = /var/log/mysql/mysql-slow.log
long_query_time = 10

Dodatne informacije možeš naći ovde.

dinke 13. 02. 2007. 19:50

Ne zaboravi da ukljucis i bacis pogled na "slow queries" log u MySQL-u.

http://dev.mysql.com/doc/refman/5.0/...query-log.html

kodi 13. 02. 2007. 19:55

kad ustanovis koji je to query, daj molim te postuj ga ovde, bas me zanima.

dinke 13. 02. 2007. 20:02

Licno sumnjam da je bas query u pitanju, jer bi query od 5 minuta podrazumevao i vrlo velike(i neindeksovane) tabele.

Moj tip je na nekoj nekompatibilnosti nekog od (apache)modula, tim pre sto je instalacija bila relativno nedavno. S tim u vezi treba dobro pogledati u apache i sistemski error log.

jablan 13. 02. 2007. 21:18

Citat:

Originalno napisao dinke
Licno sumnjam da je bas query u pitanju, jer bi query od 5 minuta podrazumevao i vrlo velike(i neindeksovane) tabele.

Nije nemoguće da je query, svakakve sam perverzije viđao u SQL-u. U nekima sam bio prinuđen i da učestvujem... ;) Ako ima velikih tekstualnih polja, blobova, string operacija itd itd, svaša može da se dešava.

Petar Marić 13. 02. 2007. 21:39

Ja tipujem na bar jedno od sledećih 4:
1. Podaci se ne nalaze u 3NF,
2. Povezivanje tabela podupitima ili preko dekartovog proizvoda umesto join-a,
3. Složenija operacija nad tabelom koja ne koristi indekse,
4. Varijanta za 3. - pretraga tekstualnih polja pomoću LIKE "%nešto%" umesto preko full-text pretrage.

MorenoArdohain 13. 02. 2007. 21:48

Ne lici mi na mysql problem..

Pocelo kladjenje :)

bluesman 13. 02. 2007. 22:20

Iskreno i meni je malo verovatno da je mysql (zato sam i stavio znak pitanja u naslovu teme), kakav god da je query, ne bi trebalo da toliko utice. Ja pre tipujem na ovo sto dinke kaze (apache) ili na neki "memory limit" setting u .conf...

nixa 13. 02. 2007. 22:52

Ili da jednostavno promenis admin-a ? :)

Petar Marić 13. 02. 2007. 23:03

Heh, imao sam prilike da vidim upit nad jednom tabelom sa oko 1.5M redova koji traje 60+ sekundi upravo zato što su ljudi kostili LIKE "%nešto%" umesto full-text pretrage. Što je još gore - dotična aplikacija se još uvek koristi :(

@Blues, izem ga - trebao bi se pojaviti u apache, mysql, system, ... logu ako je u pitanju programska greška.

Peca 14. 02. 2007. 05:21

Znate li kako jedan OR koji se slucajno nasao bez obaveznih zagrada, u upitu koji spaja dve vece tabele, moze da ubije i mysql i apache...
Samo tako :)
Jer mysql zbog neopreznog OR pocne svasta da spaja... zagarantovan prekid na nekoliko minuta... mozda i vise...

zextra 14. 02. 2007. 10:41

Ja sam uspeo malocas da blokiram mysql na 15ak sekundi sa dve left joined tabele (jedna oko 2k zapisa, druga oko 6k), pri cemu je u drugoj FK polje bilo bez indeksa, cisto probe radi :) Pitam se sta bi bilo da sam u test ubacio i LIKE ;)

Cisto da vidim jesam li dobro razumeo - ako FK polje iz tabele sa desne strane joina ne pripada indexu (a ko je jos lud da uradi tako nesto? :)), za svaki red tabele sa leve strane prolazi kroz sve redove tabele sa desne strane :) sto je u mom slucaju znacilo da je veca tabela od 6k skenirana top-to-bottom nekih 2k puta. Gresim li negde?

LiquidBrain 14. 02. 2007. 10:59

Ne, ne, ne decko, tako se ne prave avioni... Ne greshish uopshte...

Petar Marić 15. 02. 2007. 15:49

Blues, jesi li otkrio šta je u pitanju?

gastonr 15. 02. 2007. 16:16

Ja sam imao sličan problem sa očajno napisanim php kodom i funkcijom php_eregi. Kod nisam ja pisao, već sam koristio gotov skript (komponenta za joomla CMS) Wap4joomla.

Elem, problem je bio u tome što je taj Wap4Joomla navodno prečiščavao HTML kod od "nepotrebnih" kodova za formatiranje sadržaja i takav "prečišćen" kod prikazivao na Wap stranici.
E sad, kad skript naiđe na neki tag koji nije predviđen on se zakuca i digne server load u p.m. :(.
Bilo je o tome diskusije i na forum.joomla.org.
I ja sam prvo pomislio da je neki query u pitanju, ali ispostavilo se da nije.
Hoću da kažem da je vrlo moguće da i očajno napisan php kod zakucava server.

poz,
GR

ivanhoe 15. 02. 2007. 19:09

evo jedan dobar clanak o kontroli resursa koje trosi mysql:
http://www.oreillynet.com/databases/..._a_mysq_1.html

bluesman 15. 02. 2007. 22:06

"Igrali smo se" malo (u ocajanju) sa php.ini i evo vec 2 dana se nije desio problem. Sta je promenjeno? Nemam pojma :( Sve je menjano, a moguce je cak i da je na kraju zavrsio u default stanju...

Petar Marić 16. 02. 2007. 00:05

Jedna od stvari koje su nas učili na Specifikaciji i modelovanju softvera:
Kada popravljaš bug nikad ne pravi 2 izmene, inače nećeš znati koja je izmena ispravila bug.

bluesman 16. 02. 2007. 00:34

Znas koliko mi je pucala štikla za "specifikacije i modelovanje softvera" dok sam krmeljiv trazio sta mi modeluje živce 2 dana? :D


Vreme je GMT +2. Trenutno vreme je 10:34.

Powered by vBulletin® Verzija 3.6.8
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
Copyright © DevProTalk. All Rights Reserved.

Mišljenja, saveti, izjave, ponude ili druge informacije ili sadržaji nastali na Sajtu su vlasništvo onoga ko ih je kreirao, a ne DevProTalk.com, tako da ne morate da se oslanjate na njih.
Autori poruka su jedini odgovorni za ovakve sadržaje. DevProTalk.com ne garantuje tačnost, kompletnost ili upotrebnu vrednost informacija, stavova, saveta ili datih izjava. Ne postoje uslovi pod kojima bi mi bili odgovorni za štetu ili gubitak koji je posledica bilo čijeg oslanjanja na nepouzdane informacije, ili bilo kakve informacije nastale kroz komunikaciju između registrovanih članova.
Web sajt može sadržavati linkove na druge web sajtove na Internetu ili neke druge sadržaje. Ne kontrolišemo niti podržavamo te druge web sajtove, niti smo pregledali bilo kakve sadržaje na takvim sajtovima. Mi nećemo biti odgovorni za legalnost, tačnost ili prikladnost bilo kog sadržaja, oglasa, proizvoda, usluga ili informacije lociranim na ili distribuiranih kroz druge web sajtove, niti za bilo kakvu štetu nastalu kao posledica takvih informacija. DevProTalk.com drži i čuva druga prava vlasništva na web sajtu. Web sajt sadrže materijale zaštićene copyright-om, zaštitne znakove i druge informacije o pravu vlasništva ili softver. Članovi mogu poslatu informacije zaštićene pravima vlasništva njihovih nosilaca i ona ostaju zaštićena bez obzira da li su oni koji prenose te informacije to naveli ili ne. Osim informacija koje su u javnom vlasništvu ili za koje dobijete dozvolu, nemate pravo da kopirate, modifikujete ili na bilo koji način menjate, objavljujete, prenosite, distribuirate, izvršavate, prikazujete ili prodajte bilo koju informaciju zaštićenu pravima vlasništva. Slanjem informacija ili sadržaja na bilo koji deo DevProTalk.com, Vi automatski dozvoljavate i predstavljate garanciju da imate pravo da dozvolite DevProTalk.com ili članovima DevProTalk.com bespovratnu, kontinualnu, neograničenu, globalnu dozvolu da koriste, kopiraju, izvršavaju, prikazuju i distribuiraju takve informacije i sadržaje i da iz takvih sadžaja koriste bilo koji deo u bilo koje svrhe, kao i pravo i dozvolu da koriste gore navedene sadržaje. Svi zaštitni znakovi (trademarks), logotipi, oznake usluga, firme ili imena proizvoda koji se pominju na ovom web sajtu su vlasništvo kojim raspolažu njihovi vlasnici.