[ vilyu @ 16.02.2006. 11:52 ] @
Ćao,

Imam da napravim CMS i sajt za iznajmljivanje i prodaju privatnih/poslovnih kuća, stanova, garaža, vikendica, ... Znači, tu će klijentske firme i pojedinci unositi podatke o objektu, a ostali korisnici će pretraživati, naručivati, itd. Konkurentski sajt mesečno ima nesto preko pola miliona jedinstvenih poseta, oko milion i ostamsto hiljada poseta i oko 60 miliona prikazanih strana. Broj ponuđenih objekata (zapisa) u bazi je oko 40 hiljada.

Interesuje me šta mislite koji su neophodni parametri sistema:
- jedna ili više serverskih mašina i kakvih?
- broj konekcija koje web server mora da prihvati kako bi obradio ovu količinu zahteva
- broj konekcija koje SQL server mora da prihvati da bi obradio predviđene zahteve
- protok: da li trošiti procesorsku snagu na neki mod_deflate za komprimovanje strana pre slanja korisniku?
- backup baze: da li staviti diskove u RAID i ne razmišljati, ili backupovati jednom dnevno?

Na kraju, da li je za ovakav sistem dovoljan MySQL, ili na MyISAM tabele ne smem ni da pomislim? InoDB bese imaju nekih problema sa licencom? Firebird 1.5.3 mi je alternativa. Ili ne treba ni rešavati ovaj problem kombinacijom php-a i neke od ove dve baze?

Ako imate podpitanja, rado ću odgovoriti. Hvala unapred za svaki komentar.
[ SmilieBG @ 16.02.2006. 13:05 ] @
Hmzz, hmzz....

Ako imas mogucnosti svakako bi trebao da razdvojis web i db masine, jer ce se samo jedan server pogusiti. Sto se tice specifikacija, sto novije to bolje, po mogucstvu bolje viseprocesorski server (2 x 1,4 bolje nego 1 x 2,8). Sto vise rama, sa minimumom od 1 GB.

Sto se tice konekcija, najbolje da postavis apache na jednu masinu, a onda ga testiras. Pogledaj ovu alatku, koja dolazi standardno sa apache instalacijom:

http://httpd.apache.org/docs/1.3/programs/ab.html
(savet: ab pokreni sa druge masine, kako bi ostavio CPU apache-a da se bori samo sa zahtevima a ne i sa samim ab programom ;)).

sa njom mozes da simuliras broj konekcija i da vidis kako ce apache reagovati na to. Na osnovu toga, mozes da tweakujes apache. Sa mod_deflate nemam iskustva, ali mozes da testiras bez, zatim sa mod_deflatom i da vidis ima li kakvih poboljsanja ili ne. Zend optimiser (besplatna verzija) moze takodje dosta da doprinese odazivu stranica.

Nakon ovih testova mozes blize da odredis, jel jedna masina dovoljna ili ne. Onda mozes da razmisljas o load balanceru i ostalim zezancijama...

Za MySQL ne znam ni jedan benchmark tool slican ab-u za apache :( Znam da koristimo mysql bazu za oko 4 miliona zapisa, ali ne toliko intenzivno koliko ti planiras... Mada verujem da ce se ok ponasati baza, stim da pazis da konekcije maximalno koristis (persistant, keep alive etc) iz php-a... Za broj konekcija je gotovo ne moguce reci, to zavisi od toga sta sajt sve treba da radi i kako ces napisati kod.

Eto, toliko znam i mogu ti pomoci... Ako imas jos neka pitanja - fire away :)

Poz,
Sale
[ vilyu @ 17.02.2006. 19:35 ] @
OK. Brinu me još uvek dve stvari: backupovanje baze i da li je PHP pravi jezik za ovaj posao.

Koliko sam upoznat, Firebird ima alatku gbak kojom može da backupuje bazu nesmetano i za vreme njenog korišćenja, što mi je izuzetno značajno jer je potrebno da se sajt ne zaustavlja zbog backup-a. Koliko shvatam, MySQL nema takvu mogućnost, ili sam je ispustio iz vida?

A za drugu stavku pitanja: Za svaki zahtev za novom stranicom će ponovo biti aktiviran PHP skript koji će za dobar broj stranica morati da učitava template iz fajla. Što znači, svaki zahtev - novo učitavanje istog template-a. Pretpostavljam da bi bolje bilo kad bih imao neku serversku aplikaciju koja bi jednom učitala razne template-ove i držala ih stalno u memoriji, pa bi vreme pristupa bilo znatno kraće. Ali onda je tu aplikaciju potrebno ugraditi u apache (povezati na neki način), pa bi ona morala da bude višenitna i sl. Pretpostavljam.

Zato me interesuje koliko je PHP rešenje zgodno u ovoj situaciji, a koliko bi mozda bolje odgovarala možda takva neka aplikacija za brži odgovor i manje opterećenje sistema.

Hvala.
[ SmilieBG @ 17.02.2006. 20:48 ] @
Nisam 100% siguran, ali verujem da mysqldump (program uz mysql), moze da odradi bez da korisnici to osete...

pogledaj http://dev.mysql.com/doc/refman/5.0/en/mysqldump.html, jedan deo tamo kaze:

Citat:

shell> mysqldump --all-databases --single-transaction > all_databases.sql

This backup just needs to acquire a global read lock on all tables (using FLUSH TABLES WITH READ LOCK) at the beginning of the dump. As soon as this lock has been acquired, the binary log coordinates are read and the lock is released. If and only if one long updating statement is running when the FLUSH statement is issued, the MySQL server may get stalled until that long statement finishes, and then the dump becomes lock-free. If the update statements that the MySQL server receives are short (in terms of execution time), the initial lock period should not be noticeable, even with many updates.


Dakle, stavlja se jednom lock, koji se ucitava u log, a zatim 'pusta' bazu da dalje funkcionise...

Sto se drugog pitanja tice, vecina php sajtova upravo i radi sa templatima... Mozda, nisam siguran, jedan deo mozes da cache-iras, pa da iz cache-a isporucujes te stranice, ali to opet zavisi od toga kako strana i kod izgledaju. Uz optimizere, mislim da mozes da ustedis podosta na resorsima servera sto se toga tice.

Poz,
Sale
[ vilyu @ 20.02.2006. 13:12 ] @
OK, snaći ću se sa keširanjem i backupom. Sada razmišljam o prenosivosti programa. Čitao sam malo o Linux Virtual Server-u, i vidim da je to idealno rešenje ukoliko poraste broj konekcija (zahteva) ka web server-u. Nije mi najjasnije šta da radim sa eventualnim povećanjem zahteva sql serveru.

Da li je nekako moguće rasporediti posao sql servera na više mašina, a da oni i dalje rade nad istim skupom podataka?

Gde bih mogao da nađem podatak o odnosu "snage" kompjutera i broja konekcija koji baza može da podnese pre nego sto zaguši procesor? Barem neku okvirnu računicu. Hvala.
[ Tyler Durden @ 20.02.2006. 13:32 ] @
Za bazu na vise masina (sto je vrlo dobro rijesenje) mozes da pogledas ovaj tutorial
http://www.davz.net/static/howto/mysqlcluster

Sad nisam siguran da li ovdje se radi load balancing. I nisam siguran kako bi se to moglo realizovati jer i meni treba :)

[Ovu poruku je menjao Tyler Durden dana 20.02.2006. u 14:39 GMT+1]
[ vilyu @ 20.02.2006. 15:43 ] @
Pogledao sam. Deluje veoma zanimljivo.

Tyler, a na cemu ti radis? Tj, sta te je navelo da razmisljas o cluster
sistemima?
[ Tyler Durden @ 21.02.2006. 11:51 ] @
Nisam se ja direktno bavio time vec jedan prijatelj, ali sam se malo zanimao oko toga.
Radi se o hosting provajderu i njegovim bazama.

Zaista ne vjerujem da ce ti za ovo biti dovoljna jedna masina, pogotovo da i apache i mysql budu na istoj.

[Ovu poruku je menjao Tyler Durden dana 21.02.2006. u 12:56 GMT+1]