Navigacija
Lista poslednjih: 16, 32, 64, 128 poruka.

Brzina, opterecenje i testiranje skripte

[es] :: PHP :: Brzina, opterecenje i testiranje skripte

[ Pregleda: 1477 | Odgovora: 2 ] > FB > Twit

Postavi temu Odgovori

Autor

Pretraga teme: Traži
Markiranje Štampanje RSS

metvsmet

Član broj: 223029
Poruke: 27
93.87.130.*



Profil

icon Brzina, opterecenje i testiranje skripte19.05.2009. u 09:05 - pre 181 meseci
Pozdrav svima,

evo ovako, sta mene muci, primera radi, dajem sledeci primer,

kreirao sam tabelu latestactivity i u fajlu members.php stavio sledeci kod

Code:
if(isset($_GET['userid']))
{
    $userid = $_GET['userid'];
    $query = mysql_query("SELECT * FROM useractivity WHERE userid = '$userid'") or die(mysql_error()); 
    while($user = mysql_fetch_array($query))
    {
        echo "".$user['activity']."<br>";
    }
}


sto znaci, da kada se ispise members.php?userid=4 da se dobiju svi redovi sa korisnickim ID-om 4, e sad, mene zanima sledece:
sta ako imam 20 000 registrovanih clanova, i svaki clan ima po nekih 50 poslednjih aktivnosti koje se nalaze u tabeli latestactivity, sto znaci 1 000 000 kolona u tabeli, po meni je to veoma mnogo, i zanima me ucitavanje, kakva bi bila brzina ucitavanja, isto primera radi, sta ako bi se u istom trenutku naslo 2 000 clanova na istoj stranici, kakvo bi bilo opterecenje ...
isto tako, ako moze neko da mi objasni o sledecem: video sam dosad jedno 5-10 sajtova koji kad im se pristupi izbaci MySql gresku na stranici da ne moze da se konektuje jer ima previse konekcija na MySql bazi, too many connections ...

u sustini me to najvise zanima, sta se dogadja kad je veci broj posetilaca na istoj stranici, sta se desava sa bazom, osim sto sporije ucitava, iako ne znam koliko ...

i jos jedno pitanje, da li postoji neki software ili neki sajt ili nesto trece, gde moze da se testira vasa php skripta da se vidi kako se ponasa pri vecem broju posetilaca ...

Hvala na pomoci i objasnjenjima
 
Odgovor na temu

kazil
Robert Bašić
Full time PHP dev :)
Bačka Topola - Novi Sad

Član broj: 120044
Poruke: 686
*.dynamic.stcable.net.

Jabber: robertbasic@elitesecurity.org
ICQ: 446475288
Sajt: robertbasic.com


+2 Profil

icon Re: Brzina, opterecenje i testiranje skripte20.05.2009. u 08:28 - pre 181 meseci
Prvo, mani SELECT *, koristi SELECT ime_kolone1, ime_kolone2.

Sumnjam da ce se mysql buniti za milion redova, al' to ce vec neko da potvrdi ili opovrgne. Negde u mysqlovim podesavanjima (mysql.conf?) ima parametar koliko korisnika moze biti odjednom prikaceno na mysql server (default 100 cini mi se).

Za testiranje imas AB (Apache Bench), na Linuxima se instalira zajedno sa Apacheom, WAMP server isto sadrzi (ab.exe negde u bin folderu). Evo jedan linak za ab: http://www.petefreitag.com/item/689.cfm

Svako dobro :)
 
Odgovor na temu

vilyu
Web Developer
Beograd, Srbija

Član broj: 1188
Poruke: 444



+2 Profil

icon Re: Brzina, opterecenje i testiranje skripte20.05.2009. u 08:40 - pre 181 meseci
Prvo, promenljivu userid ne smes da stavis u query string pre nego sto je prethodno "ne ocistis" sa mysql_real_escape_string ili prostim kastovanjem u integer, u zavisnosti od tipa podataka koji ti je potreban. Time sprecavas SQL Injection napad.

Dalje, verovatno te ne interesuju sve prethodne aktivnosti u svakom trenutku, pa ces u query ubaciti neki LIMIT x, 10. Tako ces rezultate prikazivati na vise stranica u grupama od po deset.

Brzina pretrage ove tabele, ako je userid polje primarni kljuc, ili indeksirano je minimalno i ne treba da te brine zato sto nema spajanja tabela ili slicnih komplikacija. Sta ako se pojavi n korisnika istovremeno, gde je n mnogo veliki broj? Pa ako vec imas veliku posecenost, a ti ces je na neki nacin pratiti. Logovaces u neku tabelu najcesce trazene stranice (mozda cak i ukupno vreme njihovog izvrsavanja), pratices kroz neki MySQL admin najsporije upite, kontrolisaces opterecenje procesora i RAM-a servera. Primetices vec kad pocnu da nestaju resursi. Uglavnom se ta nagla velika opterecenja ne javljaju bas nenajavljena.

Niko ne moze da ti kaze koliko ce ti se usporiti pretraga baze. To mnogo zavisi od tvoje masine, podesavanja servera, toga koliko si kvalitetno napisao SQL upite, projektovao bazu. Mozes samo da pratis ponasanje.

E sad "too many connections" zavisi od podesavanja RDBMS-a (MySQL-a) i nema veze s PHP-om. Isto mozes da ga pratis kroz neke od admin alata, pa da dostelujes po potrebi.
Pera električar 0637129710, BG, preporučujem.
 
Odgovor na temu

[es] :: PHP :: Brzina, opterecenje i testiranje skripte

[ Pregleda: 1477 | Odgovora: 2 ] > FB > Twit

Postavi temu Odgovori

Navigacija
Lista poslednjih: 16, 32, 64, 128 poruka.