"Segítség, felnőttem!" - Mitől függ a teljesítmény

 ( Pingvin | 2004. június 26., szombat - 0:03 )

"Segítség, felnőttem!" - Mitől függ a teljesítmény

Hozzászólás megjelenítési lehetőségek

A választott hozzászólás megjelenítési mód a „Beállítás” gombbal rögzíthető.

a faq jó, de lehet ezt egy pc-re, pl egy debianos szerverre alkalmazni, hogy a saját forgalmát mérje?

_Joel: téged fizet valaki? :wink:
bocs, h ilyet kérdezek, de nekem egy kicsit úgy tűnik, h az open source ellen beszélsz...
ha már nem scriptből nyomja (pl php), akkor ilyen alapon cben is írhatná, nem? és akkor a java asszem meghúzhatja magát... :wink:
ja és ilyen alapon te eltemeted az összes cmst ami phpt használ? :?

[quote:fa8361a1f2="_Joel"]Ha weben normalis teljesitmenyt es skalazodast valamint fejlesztési időt akarsz, akkor hagyni kell a PHP-t es el kell kezdeni Java-zni (Servlet, JSP, JSF vagy Struts, stb).
[/quote:fa8361a1f2]

Érdemes szerintem még a Zope táján is szétnézni...

http://www.zope.org/

[quote:c7897d8405="vmiklos"]akkor ilyen alapon cben is írhatná, nem? és akkor a java asszem meghúzhatja magát... :wink: [/quote:c7897d8405]

nem, olvasd el meggegyszer

[quote:6c287da6c5="vmiklos"]_Joel: téged fizet valaki? :wink:
bocs, h ilyet kérdezek, de nekem egy kicsit úgy tűnik, h az open source ellen beszélsz...
[/quote:6c287da6c5]
Nem az allam penzen, segelybol elek, de nem is a marketing tevekenysegemert kapom a fizetesemet:)

Nem az open source ellen beszelek, csak a muszaki szemponto alapjan osszegeztem a temakort. Komolyabb webfejleszteshez a PHP olyan mintha egy atlag utcai autoval akarnal rallyzni.

[quote:6c287da6c5="vmiklos"]
ha már nem scriptből nyomja (pl php), akkor ilyen alapon cben is írhatná, nem? és akkor a java asszem meghúzhatja magát... :wink:
ja és ilyen alapon te eltemeted az összes cmst ami phpt használ? :?[/quote:6c287da6c5]

C-ben webre fejleszteni sokkal tovabb tart es sokkal bonyolultabb, mint Java-ban (pedig van olyan ismerosom, aki eskuszik a C-re, lasd hosember.hu:), ahol egyreszt alad van rakva minden (a servlet kb 5-6 eve szabvany, es a http oldali dolgokat megoldja), masreszt a platform is ved sokminden ellen (a JDBC peldaul API szinten ved pl sql injection ellen, nincs egyszeru modszer nem biztonsagos kod irasara, stb). Raadasul tenyleg szabvanyos minden es az egyetemek ontjak magukbol a Java-hoz erto embereket (szep lassan ez mar itthon is igaz lesz).

Amugy vannak erdekes mikrobenchmark-ok Java es C ugyeben: a Hotspot-ba bele van epitve nehany brutaljo optimalizacio, ami miatt neha a Java kodbol gyorsabb assembly keszul mint amit egy atlag C fordito csinal.

Még annyit erről az "open source ellen" beszélésről, hogy az általam emített technológiák mindegyikének van open source implementációja:

Servlet + JSP: Tomcat (jakarta.apache.org), ez a szabvány referencia implementációja is
JSF: MyFaces (http://www.marinschek.com/myfaces/tiki/tiki-index.php)
Struts: jakarta-s projekt ez is, tehát teljesen open source és a jelenleg leghasználtabb Java-s MVC framework

[quote:a74514931a="pete"]a faq jó, de lehet ezt egy pc-re, pl egy debianos szerverre alkalmazni, hogy a saját forgalmát mérje?[/quote:a74514931a]

Ez alatt most mit értesz? Az mrtg-t tipikusan a gépben lévő hálókártya ki és bemenő forgalmának a megjelenítésére szokták ismereteim szerint használni. A lo interfészt kérdezed vagy valami másra gondoltál. Szerintem a rövid válasz, hogy igen lehet :wink:
Általában egy snmp mib-et tud az mrtg lekérdezni, és annak az adatait tudja megjeleníteni. A hálózati interfészek forgalmát tartalmazz a mib. En woody-ra valami snmp csomagot tettem fel, amiben van snmpd, meg egyéb utilok, pl. snmpwalk a kézi mib lekérdezéshez. Egy picit kell csak az snmp konfigba belenyúlni, hogy legyen jogosultság a mib olvasáshoz.

Ha valaki meg tudná mondani, hogy mást, pl. load-ot, vagy hdd, cpu ill. mem kihasználtságot hogy lehet vele megjeleníteni, annak meg én örülnék. A felrakott snmp csomagban lévő mib-ben nem találtam ilyen értékeket, amiket meg tudnék adni a mrtg-nek, hogy figyelje és ábrázolja.

Ja, és ha valaki elárulja, hogy hol látom, hogy hány hitet kap a szerver azt is megköszönném :lol:

D.

itt egy-két példa MRTG-s dolgokra:

Aktív TCP kapcsolatok száma:
[code:1:922a52686a]Target[net_tcp]: .1.3.6.1.2.1.6.9.0&.1.3.6.1.2.1.6.9.0:monitor@localhost[/code:1:922a52686a]
Szabad memória:
[code:1:922a52686a]Target[sys_mem]: .1.3.6.1.4.1.2021.4.11.0&.1.3.6.1.4.1.2021.4.11.0:monitor@localhost[/code:1:922a52686a]
Saját scriptekkel is figyelhetsz ezt-azt, ekkor az a fontos, hogy a megfelelő formában adják vissza az eredményt: első sorban a 'letöltésnek' megfelelő értéket, másodikban a 'feltöltésnek', a többi kettő üres, legalábbis nálam:
[code:1:922a52686a]Target[sys_temp]: `/var/scripts/temperature.sh`[/code:1:922a52686a]
Az ide tartozó script pedig:
[code:1:922a52686a]
#!/bin/bash

# alaplap
ERTEK1=`sensors | grep temp1 | awk -F ' ' '{ print $2 }' | cut -c2-3`

# processzor
ERTEK2=`sensors | grep temp2 | awk -F ' ' '{ print $2 }' | cut -c2-3`

echo $ERTEK2
echo $ERTEK1
echo ""
echo ""
[/code:1:922a52686a]

A hiteket meg gondolom valamilyen statisztikakészítő progival nézik, pl. Webalizer.

(bocs a félig offtopicért:)

Kedves Mindenki!

Egy régi kérdést szeretnék feltenni itt:

Szerintetek mitől függ - hardverszinten - legnagyobb mértékben egy nagy látogatottságú (~100-350 hits/min), PHP4 & MySQL alapú honlap teljesítménye, Linux oprendszer alappal?
(A szerveren esetleg helyet kap egy BIND DNS, Postfix, Mailman, ProFTPD, SSH, stb.)

Melyik lehet a döntő: alaplap, memória, buszsebesség, processzorok száma, -típusa, -sebessége, vinyók típusa, -fajtája, -sebessége, stb.

Milyen fájlrendszer a legmegfelelőbb webes alkalmazásokhoz és adatbázisokhoz?

Végül: egyáltalán, mikor érdemes teljesítményelosztásos rendszerre (több gép, szerverfarm, külön DBServer, etc.) váltani?

Remélem, nem csak az én kíváncsiságomnak felel meg ez a kérdés. :)

imho ha sok a kapcsolat, akkor ott a memória lesz a korlátozó tényező
ld. hup.hu, mikor kijött a knoppix, akkor trey az 1giga ramra panaszkodott és nem másra
filerendszernek vmi naplózót tegyél: ext3, reiser, stb. :wink:

Igazából amin nagyon sok függ, az a php progi, hogy mennyire van jól megirva. egy harmad ekkora látogatottsággal is meg lehet fektetni duál xeonos rendszereket is, és dupla ekkora látogatottságot is simán birsz, kód függő.

Ami ajánlott egy Zend optimizer a php-hez, vagy egy MM-cache(ha még megvan)

A php másik gyenge pontja a memória, ebből szereti ha sok van, és a mysql is komálja ha nem a diszkről kell össze vadásznia a táblákat, hanem a gyakran használt dolgok a memóriában vannak.

Összességében, saját tapasztalatként annyit mondok, hogy nekem nem egy lap, hanem 5, de kihozza a fenti hitet, és egy 2.2-es Athlon XP egy IDE raid5 tömb, és fél G ram társaságában eddig simán elég.

[quote:e7a935c232="vmiklos"]filerendszernek vmi naplózót tegyél: ext3, reiser, stb. :wink:[/quote:e7a935c232]

Hm... eddig ext2-t használtam az SQL partíciónak és a /var/www-nek egyaránt. Mivel a szervert nagy valószínűséggel alapjaiból kell majd újraépíteni lásd [url=http://www.hup.hu/modules.php?name=Forums&file=viewtopic&p=19134]ezt a témát[/url], lesz rá alkalmam, hogy megfogadjam a tanácsot. Köszi! :)

[quote:8c45ff417a="TLoF"]Ami ajánlott egy Zend optimizer a php-hez, vagy egy MM-cache(ha még megvan)[/quote:8c45ff417a]

Köszi! :)

Amikor először kezdtem bele a PHP-be, olvastam erről a lehetőségről. De akkoriban még csak kis ürlapokat és vendégkönyveket írogattam, és nem is volt egy szerverem sem. Tehát nem volt szükségem az Optimizerre, és így szép lassan feledésbe merült... :)

Viszont az MM-Cachéról még nem hallottam (bár furcsamód ismerősen cseng...). Vettem a bátorságot és utánanéztem. A sourceforge.net-en a honlapját most építik újjá, de abból, amit a [url=http://turck-mmcache.sourceforge.net/index_old.html]régi honlapon[/url] láttam, fantasztikus. :)

Még egyvalami ezzel kapcs: Ezeket elég egyértelmű, hogy nem lehet ill. szabad együtt használni. Tévedek? :) Ha nem tévedek, akkor szerintetek melyiket "érdemes" alkalmazni? Miért? :)

[quote:930676247a="Pingvin"]Viszont az MM-Cachéról még nem hallottam (bár furcsamód ismerősen cseng...). Vettem a bátorságot és utánanéztem. A sourceforge.net-en a honlapját most építik újjá, de abból, amit a [url=http://turck-mmcache.sourceforge.net/index_old.html]régi honlapon[/url] láttam, fantasztikus. :)

Még egyvalami ezzel kapcs: Ezeket elég egyértelmű, hogy nem lehet ill. szabad együtt használni. Tévedek? :) Ha nem tévedek, akkor szerintetek melyiket "érdemes" alkalmazni? Miért? :)[/quote:930676247a]

Az MMCache-sel vannak tapasztalataim, csak röviden (az előbb elszállt egy baromi hosszú POST-tól ez a %!$@%^@&^ Firefox :evil:

Látványosan dob a teljesítményen, bár számszerű adatokkal nem tudok szolgálni. MRTG-vel grafikonoztatom a loadot két kezem alatt levő gépen is, és a föltelepítése után csökkent elég nagy mértékben.

Sziasztok!

Nem tudom illik-e belekérdezni a válaszokba, ha más irányvonalat mutat, de talán hasznos lehet az eredeti vonal szempontjából is. Elhangzott itt, hogy hány hitet kap az oldal, meg, hogy a loadot mrtg-vel nézte az író.

Honnan lehet látni, hogy egy lapnak mekkora a hit-je?
A "top" ugye megmutat egy aktuális loadot, de hogy lehet mrtg-vel ezt nézni? Esetleg más hw teljesítményt? (CPU terhelés, hdd, mem foglalás...)
(mrtg-t eddig csak NIC forgalom figyelésre használtam :oops: )

Egyébként szerintem is a memória az egyik leglényegesebb tényező egy szerver esetén.

Raidnek hw-es vagy sw-es raidet szoktatok használni?

D.

Ha weben normalis teljesitmenyt es skalazodast valamint fejlesztési időt akarsz, akkor hagyni kell a PHP-t es el kell kezdeni Java-zni (Servlet, JSP, JSF vagy Struts, stb).

Csak összehasonlításként néhány dolog:

Környezet:
- PHP: minden kérés 0-ról kezd, session csak szerializálás útján létezik, minden kiszolgáló entitás önálló process, adatbázis spooling nem létezik a különböző process-ek között, pl IMAP kapcsolatot minden kérésnél újra fel kell építeni egy webmail rendszer esetén.
- Java: egyetlen megosztott virtuális gép működik, a mai VM-ek a gyakran használt részeket gépi kódba fordíŧják és natívan futtatják (JIT). Minden objektum memóriában marad (HA megoldásoknál a session szerializálódhat, de ez a programozó számára transzparens). Minden 1 process-ben fut, teljesen többszálúan. Van Application scope, amibe ha elhelyezünk egy objektumot, az az összes felhasználó összes kérésében elérhető lesz (session: csak az adott felhasználó összes kérésében, request: csak az adott felhasználó adott HTTP kérésében).

1 kérés lekezelése:
- PHP: cache nélkül interpretálás, rossz esetben fork(), nulláról indul minden
- Java: egy új szál kezd el futni és egy már meglévő, példányosított objektum (servlet) egy metódusát futtatja le. Ez lényegesen gyorsabb és kevesebb rendszerbeli erőforrást igényel, mint a PHP.

Ha power kell: CPU (a php miatt) + RAM + RAID. Lehetőleg annyi ram kell, hogy a mysql bent tarthassa a tábláit a cache-ében. Ha nem letöltőszervert üzemeltetsz, akkor ha van elég RAM a raid nem fontos (de biztonság miatt jól jöhet a mirroring, ha van pénzed 2x annyi vinyóra)

nem tud valaki egy jó kis mrtg-hogyant?

Nadehogy az eredeti kérdéshez is mondjak valamit...
[quote:49f93ad13d="Pingvin"]
Egy régi kérdést szeretnék feltenni itt:

Szerintetek mitől függ - hardverszinten - legnagyobb mértékben egy nagy látogatottságú (~100-350 hits/min), PHP4 & MySQL alapú honlap teljesítménye, Linux oprendszer alappal?
[/quote:49f93ad13d]

PHP: a kód minőségétől, méretétől. Túl sokat ne várj tőle önmagában, de a már említett technológiák segíthetnek...
MySQL: indexek, szükséges mértékű denormalizálás segíthet (a leggyakoribb lekérdezések jobb, ha nem tartalmaznak join-t). Van statisztikád a lekérdezéseidről?

[quote:49f93ad13d="Pingvin"]
Melyik lehet a döntő: alaplap, memória, buszsebesség, processzorok száma, -típusa, -sebessége, vinyók típusa, -fajtája, -sebessége, stb.
[/quote:49f93ad13d]

Háhá, ez egy külön tudomány:) Vegyük sorra...

CPU sebesség + cache méret + memória latency: - elsősorban a végrehajtás sebességét befolyásolja ez a három tényező. Hiába gyors a processzorod, ha a kicsi cache és a nagy memória latency miatt a processzor az idő 20-40%-ában csak arra vár, hogy megjöjjön egy lekért adat a memóriából valamelyik regiszterbe.

Processzorok száma: Csak az ütemezőtől függ, vagyis az OS-től. Az apache+PHP páros mondjuk nem fog olyan jól skálázódni kétprocesszoros gépen, mint egy többszálas végrehajtással rendelkező szoftver.

Diszkek: RAID 5 csak hardveresen, RAID 1 mehet szoftverből is. Nem érdemes nagy diszkekből összedobni: jobban jársz 4 db 36 GB-os diszkkel mint 2 db 73-ssal (több spindle - magasabb az IO sávszélesség). Arra figyelj, hogy ha RAID 5-öt használsz, akkor a filesystem blokkmérete egész számú többszöröse legyen a RAID 5 stripe méretének (tehát ha a RAID mondjuk 4k-s stripe-pal dolgozik és 3+1 diszk alkotja a tömböt, akkor te 12k-s, 24k-s 36k-s, stb blokkmérettel dolgozz filesystem szinten, mert így egy blokk írásánál visszaolvasás nélkül képes kiírni az adatot és a paritást is a vezérlő).

[quote:49f93ad13d="Pingvin"]
Milyen fájlrendszer a legmegfelelőbb webes alkalmazásokhoz és adatbázisokhoz?
[/quote:49f93ad13d]

A memóriában lévő:) Jól teszed, ha amit csak tudsz azt alkalmazásszinten is cache-elsz (vannak nagyszerű OR mapping technológiák Java-ban amik tudnak transzparens módon cache-lni adatokat (pl Hibernate)... nem hiszem, hogy van hasonló PHP-ban.

[quote:49f93ad13d="Pingvin"]
Végül: egyáltalán, mikor érdemes teljesítményelosztásos rendszerre (több gép, szerverfarm, külön DBServer, etc.) váltani?
[/quote:49f93ad13d]

Ha olcsóbb így növelni a teljesítményt, mint egyéb eszközökkel. Persze vannak épeszű ember számára egyértelmű teljesítménynövelő módszerek. Pl: statikus tartalmak, képek és egyebek külön gépre helyezése. így ezek ott nagy valószínűséggel mindig a memória cache-ben maradnak (ha elég nagy a memória) és egy kernel szintű webszervertámogatás (mint pl az NCA a Solaris-ban, vagy Linuxban is volt valami ilyesmi) segítségével piszok nagy teljesítményre lesz képes a gép . Ez azért is jó, mert így több memória jut a dinamikus tartalmat kiszolgáló gépben a programfuttatásra.

[quote:1ddfad5223="pete"]
nem tud valaki egy jó kis mrtg-hogyant?[/quote:1ddfad5223]

Pl. faq.mrtg.org? :?: Hálózati interfészre elég jól leírja a dolgot, de azt megköszönöm, ha valai felhomályosít, hogy egyébre hogy lehet használni...

D.