Sziasztok,
Kérlek segítsetek abban hogyan méretezik a kiszolgálót apache-php környzethez?
Az egyszerű php formoknál is egy request alkalmával 8-15MByte memóriát használó processz jön létre.
Mi a helyzet egy 1000-10000 es látogatottságú alkalmazás esetében?
Lehet optimalizálni? Van takarékosabb megoldás? (java,perl,c)
Előre is köszi,
- 1167 megtekintés
Hozzászólások
Ehhe...aki ezt tudja, az hazudik :)
Getting Rich with PHP 5 (bar ez inkabb kodoptimalizalasra pelda)
- A hozzászóláshoz be kell jelentkezni
Lehet nem is a RAM, hanem a CPU magok száma lesz a szűk keresztmetszet.
Attól függ. Ezt így nem lehet megmondani. Számolj 16MB/request-tel és szorozd el 1000-el és rögtön ki is jön egy ésszerűnek tűnő mennyiség. Java nem hiszem, hogy takarékosabb lesz, sőt!
Mit szeretnél? Lehet úgy könnyebben tud valaki segíteni innen, akár saját tapasztalatból tud neked méretezni.
- A hozzászóláshoz be kell jelentkezni
Szerintem ez nem nyelv függő, hanem sokkal inkább implementáció függő. Mennyi mindent tartasz a sessionben, mennyi mindent cache-elsz, esetleg minden requestnél az adatbázist kérdezed le újra.
- A hozzászóláshoz be kell jelentkezni
Köszönöm, engem meggyőztél :-) mert én is hasonlóan álltam neki, csak az a gond így (ezzel az egyszerűsített matekkal) elég ijesztő eredmény jön ki.
Vettem 500 usert (a megbízó szerint ennek a többszöröse is könnyen lehet), akik fixen használják az alkalmazást munkaidőben. Az azt jelenti, hogy kb. 8 óra alatt generálják az összes forgalmat. A projekt nem bonyolult, tehát egy user egy bejelentkezésvel rögzít néhány adatot, meg max egyet listáz, tehát egyszerűbb formok ajax hívásokkal. Úgy számoltam, hogy sessionönként 13 request, ez naponta kb. ötször. Ami azt jelenti, hogy a 8 órára eső requestek száma 32500. Ezekkel, meg néhány varázs számmal kijött, hogy ha csak 7000 egyidejű request van, akkor min. 80GB RAM, 12 CPU mag (T7250-ből) és kb 860Mbit sávszélesség kellene. :-)
És ebből tényleg nem a RAM tűnik soknak.
- A hozzászóláshoz be kell jelentkezni
Kezdd el 4 maggal és 16/24GB RAM-mal. Olyan szerverrel kezdj, amibe később még 1 CPU-t berakhatsz és legalább 32GB (64GB még jobb lenne) RAM-ig bővülhetsz. Hálókártyából pedig ha lehet akkor TOE-képes kártyát (Intel).
- A hozzászóláshoz be kell jelentkezni
toe-val kapcsolatban azt olvastam, h a hw-nek (NIC) es OS-nak (linux) is kene tamogatni. windowsnal allitolag vannak ilyen mukodo megoldasok, de linuxrol mindenhol azt olvastam, h nem tudja a toe-t. mert ezt driver es stack szinten kene implementalni, es nem akarja nyilta tenni a gyartok...
- A hozzászóláshoz be kell jelentkezni
7000 egyidejű felhasználó? Az elég soknak tűnik szerintem, itt már érdemes elgondolkozni cluster építésen.
- A hozzászóláshoz be kell jelentkezni
cluster, cloud, itt is kezditek? :D
- A hozzászóláshoz be kell jelentkezni
Ez kiszámolva másodpercenként 1.1 request-et kell kiszolgálni. A gond az lesz, ha egyszerre rászabadul mindenki, de ilyenkor meg a cache-eléssel lehet javítani a helyzeten.
- A hozzászóláshoz be kell jelentkezni
A kérdés az, hogy miért jön létre egy 8-15 MB-os processz (vagy csak én nem értem a problémát?)
- A hozzászóláshoz be kell jelentkezni
sub
- A hozzászóláshoz be kell jelentkezni
Hát olvasgattam a hsz-eket, de ez így akárhonnan nézzük megfoghatatlan. Úgy állj neki, hogy a web több gépre is kipakolható legyen, mert az egy überhatalmasgép sem skálázható a világ végéig. Ha 64 bites OS-t teszel, akkor rögtön számolj izmosabb memória használattal. A tapasztalat szerint egyébként egy lighttpd+php-cgi -s szolúció messze kevesebb erőforrást eszik, mint egy apache-os. Még azzal is sokat lehet segíteni a dolgon, ha az apache elé teszel egy lighty-t ami a statikus tartalmakat tolja és többi adja az apache-nak. Az php-hoz pedig eacceleratort vagy APC-t igencsak érdemes használni, mert gyorsít és a memória zabálást is csökkenti.
Ha mindenképpen külön vasban vagy vasakban gondolkodsz akkor, ahogy már hasonlót írtak, egy 8GB-12GB memós egy cpu-s szervert vennék, ami plusz cpu-val bővíthető.
- A hozzászóláshoz be kell jelentkezni
Szia, nem hiszem, hogy ennyi ekkora felhasznaloszammal neked kellene foglalkoznod, nem tunik soknak. Nyilvan, ahogy irtad, ha egyszerre rohanjak meg az alkalmazast, akkor gubanc lehet esetleg.
Ha tesztelni es meretezni szeretned, szerintem vegy egy jo kozepes gepet. Gondolok itt kb. 8 cpu magra, es 6-8G memoriara.
Aztan az Apache Benchmark segitsegevel (ab) megkuldod a kivant mertekben, akar 5 pc-rol parhuzamosan, es minden kiderul. (http://httpd.apache.org/docs/2.2/programs/ab.html)
Tippkent: egy ilyen gepnel szerintem max 25%CPU, es fele memoria fogyna esetleg.
Ui.: Az a 8-15MB-os process requestenkent ertelmezhetetelen szamomra. Mi az?
--
Joe
- A hozzászóláshoz be kell jelentkezni