Jump to content
php.lv forumi

php scriptu izpildes atruma samazinashana


lizard

Recommended Posts

Sveiki, lieta sekojosha ir lapa kurai ir paliels klucis datubaze, un lapa ir iebuveta cleanup sistema kas reizi stunda iztira datubazi. Jautasiet kapec reizi stunda vai nav padaudz? Nav padaudz jo viss lapa griezash uz statistiku, vinja mainas pa sekundem un diena norita vai vakara ir pavisam citi skaitlji. Nu ir ta ka palaizhas php fails aks tira datubazi, shamais sak rit nost no servera cik var, tai bridi php vairs nevar pievienoties pie mysql un lapa ka vinja ir iebuvets parada ka serevra parslodze lai lietotaji uzgaida. Bet ka zinam cilvekam nepatik gaidit, un visnh spiezh vislaik refresh, pieprasijums nosutas un serveris vinju megjina apstradat un viss uzkaras. Nu izpauzhas tas ta ka avarige lozad uzkapj pari simtam(piemeram shodien 170) un par shells bremze uzrakstu burtu pec sekundem tik paradas. AKdrez kad defaulta slodze, nu ta k nooed serevris darbiba bija maza tad tirishanas scripts paris sekundes izgaja cauru DB un vis atgriezas savas vietas a tagad ir ta ka idle vakaros stav uz 0, jo slodze tiesham zveriga un kad palaizhas scripts ir vaks. Paiet tik kadas 20 minutes kamer serevris visu izmalj cauri un laa sak iet. Tas ir nereali un tipa es domaju, nevar kka limitet vainu atsevishkju useri vai no ieksh php iestradat ka vinsh to visu nedara cik atri spej bet lenam, lai nav tads varjants ka pa durvim iet 10 cilveki ja visi kultural izies secigi ara tad vis bus bumbas bet ja visi skries pa galvu pa kaklu un 3 iesprudis durvis :). A un no cron taba var palaist izpildei php scriptu?

Link to comment
Share on other sites

Nu shaubos, kr4 lab ko tur daudz slept ta lapa ir ou**aw.lv bittorent trakeri, noslepu 2 burtus lai nepadoma ka spamoju. Nu vo un vinjam tas db ir visai pieklajigs 450 000 ieraksti 72 mb! Un cleanup scripta darbiba ir tad piemeram vinsh parbauda katra lietotaja pedejo laiku akd vinsh savienojies iztira ara tos kas pus stundas laika nav sutijushi signalu no klientiem apdeito uzreis torentu tabulu, respektivi viss novisa saistits! Es jau ta esu iztirijis lidz pedejam atstajis visu vajadzigo tikai. Nu piemeram funkcija kas izrubij lietotajus ar shvaku atiecibu, padomajiet pashi, nav tik viegli iziet cauri 17k shunam un izmainit kas mainams, un tilidz shta funkcija palaizhas serveris megjina ispiest ko var un sak akrties parastajiem lietotajiem lapa, vinji psiho spiezh refresh un slodze vel vairak rodas. vajadzetu tas funkcijas izpildes laiku samazinat nevis tik cik vinja atri var bet tik cik es lieku. Nu tak sapratat ideju?

Link to comment
Share on other sites

Neej visam cauri - ej pa 100 rindām, un biežāk kā reizi stundā. Tb izej pirmajiem 100 ierakstiem cauri, nākamreiz nākamajiem 100. (tas 100 ir no zila gaisa izrauts skaitlis, pietvīko to pēc vajadzības).

Indeksi datubāzē pareizi salikti?

 

Komati joprojām tev trūkst - grūti lasīt tavu teikto.

Link to comment
Share on other sites

lizard --> 1. saliec DB indeksus !!!

Tavaa gadijumaa skjiet ka peec laika .... + skaties kur vel vajag...

2 ne tikai iztiiri DB bet arii Palasi ieksh Mysql manuaalja ko dara shie zveeri....

-----------------

OPTIMIZE TABLE

FLUSH TABLE

-------------------

+ iespeejams ka kaadu no tabulaam (users online utt. (tai kurai dati ir pagaidu)) vari tureet atminjaa

HEAP vai MEMORY (tik naizmirsti vinjijaam noraadiit maksimaalo ROWu skaitu jo savaadaak skjirsies no gandriiz visas Op atminjas...)

+ Serverim Peec iespeejas lielaaku RAMu....

--------

P.S. + Panjem kaadu gramatikas gramatu un palasi kaa textus daliit pa paragraafiem.....

(varu pacuksteet ievadot tekstu DRIKST izmantot ENTER ;) )

Link to comment
Share on other sites

Vienkāršākais jautājums būtu .. kāda tipa tabulas MySQLā tās ir? MyISAM vai InnoDB?

Ja MyISAM būtu vērts pārkonvertēt uz InnoDB jo pieņemu tajā brīdī kad tas cleanup skripts tur darbinās varbūt ieslēdzas kāds neforš SELECTs uz visu tabulu un tā tiek nolockota līdz ar to nekādi INSERT/UPDATE gaida rindā un protams nekas neveras.

Link to comment
Share on other sites

Nu vo un vinjam tas db ir visai pieklajigs 450 000 ieraksti 72 mb!

 

kā būtu ar 2,040,871 ierakstiem un 187.6 MiB db? :)

 

ja tu vēl neesi savu db un querijus sakārtojis tad pat uz 3Ghz xeona ar 4GB ram tev viss lieksies :D

 

1) peeru tabulu konvertē uz MEMORY engini...

2) čeko slow query logu

3) optimise table katra cleanupa laikā

4) varbūt netik svarīgi... mysql_query vietā izmanto mysql_unbuffered_query...

5) jāsāk lietot kkādu cache...

 

vispār titos trackeristus vajadzētu sākumā pamocīt uz kāda p2 500Mhz lai saprot kā visu optimizēt...

 

 

ko tad es, es jau neko...

Link to comment
Share on other sites

Biezhak vajag tirit messagies, tad nebus 2 miljoni ierakstu!

 

1) nav nemazakas saprashanas par ko t runa

2) kastas tads?

3) Ka izpauzhas optimizeshana

4) shbos vai ko tas dos

5) visa statistika un tops ir zem cache, parejas sadaljas neko butiski need, un tur ipashi neko no cache'ot nevar

 

Vispar uz mysql lielu uzsvaru nevajag likt jo amn vinsh diezgan normali sakonfigurets ir, jo vairak pa 5% need nu cleanup laika lidz 10 medz uzbraukt, visu pasakumu jau tizlais apacis grauc :(

Link to comment
Share on other sites

iemācīšu gudru vārdu - lighttpd. Ne velti traukiem un inbox izmanto shito serveri. Bet tas tikai gadījumam, ja pudeles kakls ir webserveris ...

Lighttpd nav nekāda sakara ar DB un datu normalizāciju :)

Tikai savādāks mehānisms kā apstrādāt dinamiskos php pieprasījums..

 

Šeit pudeles kakls aiz kam nav webserveris bet DB :) un lighttpd burtiski nepalīdzēs (protams risinājums ar lighttpd būs saudzīgāks ar atmiņu un to varēs iedžiebt vairāk DB serverim (ja uz vienas kastes))

Link to comment
Share on other sites

×
×
  • Create New...