Nagy terhelésű szerver optimalizálása

Fórumok

Nagy terhelésű szerver optimalizálása

Hozzászólások

[quote:055194c7d6="pdx"]nem tudja valaki, hogy hol lehet magyarországon silicon image 3124-es sataII kontroller kártyát kapni? a tomshardware elég jó véleménnyel volt róla, és tudja a NCQ-t is, ha a HDD is.

Ezt a linket erdemes megnezned, ha
SATA controllert akarsz venni.

Par idezet:
Innen:
Silicon Image 3124
Summary: Full TCQ/NCQ support, with full SATA control including hotplug and PM.
libata driver status: early review driver available.

Innen:
Even though some SATA host controllers on the market already support command queueing (a.k.a. "TCQ"), libata does not yet support it.

Egyszer volt valami CPU intenziv szamolasi taskom. ~2.4.28-es kernel volt, elinditottam 2 peldanyban a szamolast, es igy 10%-ban gyorsabb volt az egesz, mintha 1 peldanyban futott volna.

Ennyit jelentett a Hyperthreading. egy probat megerhet. Bar lehet a fedora-s kernel tamogatja alapbol, es mar most is hasznalod?

Silicon Image SATA vezérlővel vigyázni, mert a 3112-es (SATA 1) bizonyos fajta Seagate vinyókkal összeakad, workaround miatt teljesítménycsökkenés lesz a vége. A pontos vinyótípusok a kernel megfelelő forrásfile-jában megtekinthetőek. :)

nnnya. időközben sikerült egy kicsit lejjebb venni a server loadot, bizonyos szerver-szintű változókat eacceleratorral shm-be mentek, plusz a ramdiskeket átállítottam tmpfs-re (basszus, nem is tudtam, hogy van ilyen, na ez a vége annak, ha az ember a 2.2-es kernel környékén foglalkozott utoljára komolyan a linux fejlődésével; szóval eddig rendes /dev/ramdisk volt soron, ext2-vel formázva... én barom). kipróbáltam a session-kezelést eacceleratorból, de az még nem igazán kiforrott, úgyhogy maradtam a tmpfs-re bemountolt (--bind) session könyvtárnál.

eaccelerator egyébként érdekes bugokat mutat, alapértelmezésben 32MB-ot foglal le magának SHM-ből, viszont az, ha a sessionöket is vele akarom kezeltetni, nagyon csíra. viszont, amint megpróbáltam feljebb vinni az értékeket (egyáltalán, értéket beírni az eaccelerator.shm_size-ra) az eacc fogta magát, és megdöglött ezzel:
[code:1:686329e0b5]
PHP Warning: [eAccelerator] Can not create shared memory area\n in Unknown on line 0
[/code:1:686329e0b5]
és utána, mintegy bizonyítandó, mennyire függök az eacceleratortól, a gyorsítás nélküli php-s oldalak kb. 20 mp(!) alatt 120 körülire húzták a LA-t. lekapcsolni is nehéz volt az apache-ot (node killall -9 httpd éjjen!). a hibajelenséget már megküldtem az eacc fejlesztő csapatnak, továbbá a session dolgaiban is kérdeztem 1-2 dolgot.

úgy tűnik, hogy végül is egy dual xeon-os hp proliant ml150 lesz az új szerver. nem tudjátok, hogy a benne levő scsi kontroller hardverből tud-e RAID1-et? ja igen, még egy kérdés: a Xeon melyik generációjától kezdve van benne EM64T? (remélem, ebben van, mert akkor az FC3 x86_64-es verzióját pakolom fel.) meg az scsi mellé beraknék egy rém eccerű SATA kártyát is, hogy a nem kritikus tartalmaknak (lesz rádió is a szerveren, önjáró, és annak a számkészletét már ide raknám) és a mentéseknek legyen egy független és olcsó tárhelye. ismer valaki valamilyen olcsó és megbízható, nem-kell-hogy-raides-legyen SATA kártyát? esetleg olyat, amin kombináltan SATA és PATA is van?

/proc/sys/kernel/shmmax határozza meg, mekkora lehet a maximálisan foglalható shared memory szegmens.

áááá! hogy neked mennyire igazad van! köszikösziköszi!!! :D

hello all,

HUP-on új, linuxokkal már régóta foglalkozok, tehát nem vagyok igazán newbie. ennyit bemutatkozásnak.

na most akkor a probléma:

egy rettentő nagy forgalmú site-ot (és több kis site-ot, továbbá DNS-t és mailt) futtató szerverről van szó, a nagy forgalmat értsd >1,5M hit naponta (lassanként 2M körül kezd lenni, sikeres a site, na).

a platform: P4 (Prescott asszem) 2.4G, 2GB DDR (non-ECC, párban 4x512MB, Kingston, párba válogatottx2), 2x80GB SATA (Samsung) nem RAID-elve az alaplapi SATA interface-en, ASUS P4P800DLX alaplap, alaplapi ETH (Marvell Yukon sk98lin driverrel), USB+hangkártya lekapcsolva.

a szoftver: FC2 rendszeresen frissítve (tényleg, miért nincs külön FC übertopik? tudom, hogy sokan utálják, de közel sem olyan rossz, és mivel én redhatos voltam világéletemben, nem sok választásom volt), 2.6.10-es kernel, e2fs, apache 2.0.51 mod_rewrite-tal (kell, mivel a site egy php scriptből működik, de egy csomó virtuális könyvtárból), mysql 3.23.58, php 4.3.10 (a 11-re várok épp, hogy kiadják), php-eaccelerator 0.9.2a (a scriptek shared memoryba fordításával és tárolásával engedélyezve). a swap engedélyezve van, de mint az alábbi top-ból látható, nincs használatban.

van egy back-end szerver is (külön PC, egy külön 3com kártyával crosslink kábellel összekötve, privát IP-n), ami csak a nagy forgalmú site mysql-jét szolgálja ki (a szoftver konfig ugyanaz, mint a fő szervernél).

a probléma: egy rakat optimalizálás (mind a PHP progi, mind hardver, mind konfig) után még mindig k**va nagy a terhelés (durvább peakeknél nem ritka a 40-es LA sem). a rendszer reagál, a web is gyors, de pl. a sendmail nehezn fogad leveleket, a dovecot IMAP is lagzik, az SSH bejelentkezés is éveket vesz el.

a top tipikusan így néz ki terhelt időszakokban:

[code:1:1c6f2d870e]top - 17:56:43 up 4 days, 1:51, 1 user, load average: 37.90, 30.94, 25.17
Tasks: 141 total, 28 running, 113 sleeping, 0 stopped, 0 zombie
Cpu(s): 85.7% us, 13.1% sy, 0.0% ni, 0.0% id, 0.0% wa, 1.2% hi, 0.0% si
Mem: 2075968k total, 2022584k used, 53384k free, 156384k buffers
Swap: 1052248k total, 0k used, 1052248k free, 1125096k cached

PID USER PR NI VIRT RES SHR S %CPU %MEM TIME+ COMMAND
7630 httpd 16 0 60156 22m 14m R 3.5 1.1 21:34.20 httpd
7712 httpd 16 0 55164 16m 12m S 3.2 0.8 20:20.86 httpd
6495 httpd 16 0 59844 20m 12m R 2.9 1.0 22:52.87 httpd
7714 httpd 15 0 59884 21m 13m S 2.9 1.1 21:39.19 httpd
1979 httpd 16 0 58700 20m 13m R 2.6 1.0 22:55.38 httpd
1982 httpd 15 0 59816 21m 13m R 2.6 1.1 23:18.91 httpd
2073 httpd 16 0 60172 22m 14m R 2.6 1.1 23:25.37 httpd
2095 httpd 15 0 58744 20m 13m S 2.6 1.0 23:01.04 httpd
6077 httpd 16 0 59924 21m 13m R 2.6 1.1 23:11.94 httpd
7343 httpd 15 0 56584 18m 13m S 2.6 0.9 22:03.07 httpd
1965 httpd 15 0 56604 18m 13m S 2.3 0.9 23:43.50 httpd
1968 httpd 16 0 59100 20m 13m R 2.3 1.0 22:49.98 httpd
1978 httpd 16 0 60156 20m 12m R 2.3 1.0 23:14.93 httpd
2026 httpd 15 0 55940 17m 13m S 2.3 0.9 23:39.07 httpd
6091 httpd 16 0 60136 22m 13m R 2.3 1.1 23:08.51 httpd
6503 httpd 15 0 56560 18m 13m S 2.3 0.9 22:42.46 httpd
[/code:1:1c6f2d870e]

a /proc/interrupts így néz ki:
[code:1:1c6f2d870e] CPU0
0: 352485308 XT-PIC timer
1: 444 XT-PIC i8042
2: 0 XT-PIC cascade
4: 3019950 XT-PIC serial
5: 174743286 XT-PIC SysKonnect SK-98xx
7: 116321651 XT-PIC eth1
8: 1 XT-PIC rtc
9: 0 XT-PIC acpi
11: 1103190 XT-PIC libata
15: 478 XT-PIC ide1
NMI: 0
ERR: 0
[/code:1:1c6f2d870e]

az apache-ban a releváns "sokszorozódási" szabályok:
[code:1:1c6f2d870e]
<IfModule prefork.c>
StartServers 15
MinSpareServers 20
MaxSpareServers 60
MaxClients 60
MaxRequestsPerChild 0
</IfModule>
<IfModule worker.c>
StartServers 40
MaxClients 60
MinSpareThreads 5
MaxSpareThreads 75
ThreadsPerChild 25
MaxRequestsPerChild 0
</IfModule>
[/code:1:1c6f2d870e]

a nagy kérdés: mit tehetek, hogy csökkentsem a load average-et?

a következő megoldások kizárva:
- vegyek még egy gépet
- terheléselosztásos szerver
- ne használjak FC-t
- ne használjak PHP-t

amiket eddig megtettem (és segítettek is, csak sajnos mindössze annyit értem el vele, hogy még többen jöttek, mert gyorsabb lett a szerver...):
- tűzfal (támadások jobbára megszűntek), de ez 1értelmű
- az sk98lin driverrel hajtott alaplapi Marvell ETH-et átállítottam IRQ-moderációra (AUTO beállítás, 2000 IRQ/msec nagy terhelés esetén) (ez nagyon nagyot dobott, mert nem csinált megszakítást minden egyes megkapott/kiküldött packethez, hanem szépen sorba állította őket)
- a PHP-eaccelerator berakása (szintén nagyot dobott)
- a site statikus elemeinek (js, css, képek, egyes statikus szövegelemek) és a PHP session filejainak ramdiskre rakása
- a mysql kéréseket amennyire lehetett, optimalizáltam
- szintén a PHP kód lefutását
- kipróbáltam -- egy tipp alapján -- egy külön apache futtatását, ahonnan az összes statikus (nem-PHP) elem jött, ebben a konfigban nem volt sem mod_rewrite, sem mod_php, sem semmi dinamikus dolog, tehát egy lecsupaszított apache -- nem sok eredmény, le is lőttem azóta
- az apache-ban az adott site-ra az AllowOverride None-ra raktam, az összes PHP konfig direktívát direkbe beraktam az apache konfigba az adott site virtual konfigjába
- HostNameLookups Off, természetesen, EnableSendfile=On, a loggolás is le van kapcsolva az adott site-hoz (/dev/null-ba megy)
- az összes felesleges csicsa-modul le van állítva.

...akkor a KÉRDÉSEK:

- okozhatja-e ezt a nagy LA-t a SATA lassúsága ill. processzorfüggése? ha igen, akkor egy SCSI (Ultra160) alrendszer ezen jelentősen segíthet? ha igen, akkor milyen kontroller-kártyát ajánlotok? (Tekram?)
- esetleg egy független SATA kontroller segíthet a helyzeten? (nem nagyon hinném, de ha valakinek van ezirányú tapasztalata, szóljon...)
- ilyen esetekben akár egy single xeon nagyot tud dobni a rendszeren? ha igen, akkor a 64-bites linux verziót telepítsem?
- egyes híresztelések szerint a 2.6.xx kernel-ág rosszabul teljesít nagy terhelés alatt, mint a 2.4.xx. igaz ez? ha igen, mekkora teljesítményt nyerhetek egy esetleges kernel-visszaállással?
- esetleg van tippetek apache konfig ügyében?
- a fenti szoftverek közül valamelyikben van valami köztudomású bug, ami hatással lehet a teljesítményre?
- bármi egyéb ötlet az optimalizálásra?

minden segítséget és tippet előre köszönök. ha további konfig-információk kellenének, írjatok, és belinkelem őket.

köszi előre is,
-p

...ja, azt meg kihagytam, hogy a back-end szerveren (ahol a site adatbázisa van kiszolgálva) a terhelés elhanyagolható, kb. 1-2-es LA között ingázik, de nem ritka a 0.1-es sem. tehát nem az a szűk keresztmetszet (valszeg...)

-p

nem tudom nalad mennyire szuk keresztmetszet a db backend, illetve milyen a select/insert aranyod, de egy MySQL 4.x biztos nem rontana a helyzeten ( http://dev.mysql.com/doc/mysql/en/query-cache.html )

SZERK: hupsz csak az elsot olvastam, bocs

egy jo scsi de inkabb scsi raid sokat segithet ;
a lecsupaszitott weblapokhoz tux nem jo ?
a 2.6.x -es kernel szvsz sokkal jobb mint a 2.4-es szeria ; kivetelt az rh advanced server extratunningolt kernele kepez.

ami meg a sendmailt illeti valahol van a konfigjaban egy ilyen :

O QueueLa=8
O RefuseLA=12

ami azt jelenti,hogy 12-es load felett mindenkeppen elutasitja a bejovo kapcsolatot ; lasd a konfigban a kommentet ; emeld meg,ha nagyon kellenek a levelek.

[Mem: 2075968k total, 2022584k used, 53384k free, 156384k buffers
Swap: 1052248k total, 0k used, 1052248k free, 1125096k cached

erdekes. miert nem hasznal egyetlen byte swapot sem ? hm. hm.

Én mod_rewrite helyett inkább egy reverse proxy-t tennék be redirectorral.
Ekkor még a proxy miatt mellékhatásként MaxClients-et lecsökkenthetnéd felére, harmadára, ami a csökkenő context-switch-ek miatt sokat dobna a dolgon.
Aztán lehetne a php-ból kijövő tertalom cache-elhetőségével is játszani, ha elég az, hogy mondjuk 5 bercenként van új tartalom. Persze pl. chat-nél ez a cache-elés nem nagyon jönne be :)

Nekem sokat segitett, a kernel TCP paramaterek optimalizalasa:
net/ipv4/tcp_tw_recycle=1

Meg van meg egy csomo TCP paramater ami nem jut most eszembe, de a google segithet, meg a probalkozas.

[quote:4d877ab60c="szipka"]tcp_tw_recycle=1

ez nem kavar be a csomagszuronek?

ugy jobban belegondolva ; a memoria eleg ; hiszen nem hasznal swapot es ha ez telleg atlagos top,akkor meg szabad is van vmennyi ; a cpu-t a webszerver eszi meg ; ergo vmi gyorsabb proci valamennyit javithat a helyzeten ; de ez csak tuneti kezeles.
a kernelt magad forgattad,vagy valamelyik fc rpm-jebol a binaris megy ?

[quote:02f40b7dcf="snq-"][quote:02f40b7dcf="szipka"]tcp_tw_recycle=1

ez nem kavar be a csomagszuronek?

Eddig nem volt vele baj, viszont teljesitmenyben sokat dobott, elotte volt vagy 6-800 TIME_WAIT socket.

irtad, hogy mar megoldottad a statikus tartalom kulonvalasztasat (a 2 apache instance-os felallashoz). valamelyik tiny http szervert javaslom a kepekre/css file-okra/stb kiprobalni, konkretan mi mathopd-vel futunk, "a tapasztalatok jok" :))

húú, köszi a sok választ! :D

akkor az én válaszaim/kérdéseim:
- hmm, a tux mennyivel nagyobb teljesítményt tud nyújtani és mennyire könnyen konfigolható?
- kernelben egy stock kernelt használok, tehát csak az rpm-et raktam fel, és abból is a FC2 2.6.10-es legfrissebbet 1 procira, i686 architekturára. mivel ha SCSI-re áttérünk, úgyis felrakok egy FC3-at, abban már valószínűleg saját kernelt forgatok forrásból. ez tapasztalaltotok szerint mennyit segít?
- ha már FC3, tudom, hogy valszeg hülyeség, de van benne valami teljesítményváltozás az FC2-höz képest?
- a sendmail trükköket már megcsináltam (sőt, van benne olyan, hogy elkezdi korlátozni a bejövő kapcsolatokat 1mp/kapcsolatra), 20-as LA-nál van az 1kapcs/mp, 30-as LA-nál kezd queue-olni, 40-nél van csak a refuse. (és mindezt mc-ből, hogy újrahúzásnál gyors legyen a dolog, höhö.)
- gondolkoztam azon, hogy átlépek az mbox formátumból a maildirre, hiszen mind a procmail, mind a dovecot támogatja. ezzel nyerek egy kis erőt, de mivel össz 30 mailes userünk van, ez elenyésző terhelés amúgy is.
- tehát akkor SCSI. melyik RAID-et javasoljátok? gondolom a leggyorsabb a RAID0 lenne (stripe), de én jobban örülnék egy RAID1-es mirrornak, első a biztonság, ugye... ha már itt tartunk, milyen hardveres RAID0/1-es SCSI adaptert ajánlotok, ami nem PCI-X interface-ű? esetleg HDD-ben van javaslatotok? az Ultra320 tényleg annyival többet bír, mint az Ultra160?
- filerendszerre van tippetek? ext2/ext3/xfs/reiser?
- ezt a proxys apache dolgot viszont annyira nem értem. a backenden nem fut apache szerver, tehát max a localhostra routolhatnám a forgalmat, és sajnos az 5perces cache sem működik, mert egyrészt van chat, másrészt az oldalak nagyban változnak attól függően, hogy be vagy-e lépve, vagy hogy ki van online (igen, közösségi site). amúgy egyszerre általában 200+-an vannak belépve, és chatelnek legalább 150en közülük, több csatorna is van, meg privik... meg 12E+ regisztrált felhasználó... ezek a számok alapján (na meg a napi 1,5-2M-s oldalletöltés alapján) reális, hogy a szerver ennyire senyved egy full dinamikus site alatt?

köszi megint előre is, kezdem látni a fényt az alagút végén.
-p

Szevasz Cöme! :)

Pár kósza ötlet csak:

- vmstatot figyeled néha? Miből van legtöbbször nem nulla, r/b/w?

- Ha durva a site, felejtsd el az alaplapi SATA vezérlőket. Egyrészt a SATA még mindig viszonylag lassú, másrészt ez is fogja a procit, mint az IDE. Minimum egy 3Ware 8000-res sorozatú kártya kell RAID10-zel, esetleg a 9000-resek közül egy, de az I/O terhelést igazán a SCSI RAID nyomja le. Ajánlom az Intel SRCU42X kártyáját, memóriával alaposan megpakolva és elemmel, mert akkor van csak write back cache! Ez PCI-X-es kártya, de fut 64bit/66MHz-es PCI slotban is, én is így használom. Ha gyors és redundáns tömböt akarsz, akkor RAID10 kell neked, mint az előbb is írtam.

- MySQL-t frissítsd 4.0/4.1-re, gyorsabb. Bár a topból úgy néz ki, hogy az Apache zabálja meg a procit. Esetleg fordítsd az Apache-ot statikusan újra, bármilyen horrorisztikusan is hangzik. Az x86 architektúra kevés regisztere miatt :? ez is jelent sebességnövekedést.

- Ha külön webszerver alá pakolod a statikus tartalmat, az valami jobban erre kihegyezett legyen, mint az Apache. Akár Tux, akár pl. thttpd (nekem ez bejött nagyon), esetleg Boa stb.

- Ha van rá lehetőséged (tudom, írtad, hogy új gépet ne :) ), akkor inkább duálprocis gép felé mozdulj el. Jobban bírja a rászakadó hirtelen terheléseket és jobb a válaszideje.

- Filerendszer ügyében nekem az a tapasztalatom, hogy az XFS általában lenyomja az Ext3-at, mint a rajzszöget (a Reisert nem használtam soha, nem ismerem). Ha mégis Ext3-at használsz, a dir_index opciót mindenképpen kapcsold be.

- Szinte minden partíciót csatolhatsz noatime kapcsolóval. Ezzel is lemez I/O-t spórolsz meg.

Ha továbbra is "döglenek a libáid", csak szólj, van még ötlet! :lol:

Ha a biztonság és a gyorsaság együtt kell, akkor egy RAID5 vagy ha még inkább biztonságcentrikus vagy, akkor RAID6 vagy RAID5 + hot-spare lenne az ideális megoldás szerintem. A RAID tömbe a vinyókat érdemes jól megválasztani, Seagate vagy WD szvsz. Mi RAID5-öt használunk. A RAID5 a három vinyó együttes használata miatt szerintem elég jó sebességgel bír, még ha a parity kezelést beleszámítjuk akkor is. Biztonságilag is szerintem okés, mert egyszerre nem szokott elszállni két vinyó, ha meg egy elszáll akkor lehet pótolni, vagy pedig hot-spareben eleve odarakni egy új vinyót. A RAID6 jóval drágább, de két vinyó elszállását engedi meg alapból, de akkor szerintem a RAID5 + hot-spare még mindig kapacitás- és költségtakarékosabb megoldás. Mindezt valami gyors (Ultra 3 Wide SCSI) interfészen kéne megvalósítani.

Ja, a filerendszer kérdésben szerintem a /boot mindenképp ext2, az adatoknak meg XFS, esetleg Reiser.

[quote:8d556ba9d8="Beanie"]Ha a biztonság és a gyorsaság együtt kell, akkor egy RAID5 vagy ha még inkább biztonságcentrikus vagy, akkor RAID6 vagy RAID5 + hot-spare lenne az ideális megoldás szerintem. A RAID tömbe a vinyókat érdemes jól megválasztani, Seagate vagy WD szvsz. Mi RAID5-öt használunk. A RAID5 a három vinyó együttes használata miatt szerintem elég jó sebességgel bír, még ha a parity kezelést beleszámítjuk akkor is. Biztonságilag is szerintem okés, mert egyszerre nem szokott elszállni két vinyó, ha meg egy elszáll akkor lehet pótolni, vagy pedig hot-spareben eleve odarakni egy új vinyót. A RAID6 jóval drágább, de két vinyó elszállását engedi meg alapból, de akkor szerintem a RAID5 + hot-spare még mindig kapacitás- és költségtakarékosabb megoldás. Mindezt valami gyors (Ultra 3 Wide SCSI) interfészen kéne megvalósítani.

A paritásszámolós RAID szintekkel az a baj, hogy írásnál halál mind. Ha módosítasz egy csíkban valamit, akkor a másik n-2 lemezről (RAID5-nél) be kell olvasnia a többi adatblokkot is, kiszámolni az új paritást, kiírni az adatblokkot és visszaírni az új paritásblokkot.

RAID5 oda való, ahol elsődlegesen a nagy tárterület a fontos, sok olvasás van és viszonylag kevés írás. Pl. webszerver alá, esetleg fileszervernek, de adatbáziskezelőhöz semmiképpen se.

Na igen, de itt főleg erről van szó ahogyan én látom. Az adatbáziskezelést a back-end szerver végzi, a szerveren a fő cél a webes kiszolgálás.

hehe... kicsi a világ. :)

no, vmstat szerint a világ:
[code:1:54b98e63dc]
procs -----------memory---------- ---swap-- -----io---- --system-- ----cpu----
r b swpd free buff cache si so bi bo in cs us sy id wa
22 0 0 162904 156968 1009980 0 0 3 35 11 39 50 8 42 0
1 0 0 162904 156968 1010004 0 0 0 0 2487 2945 82 18 0 0
24 0 0 162904 156968 1010004 0 0 0 0 2807 2847 84 16 0 0
17 0 0 162776 156968 1010020 0 0 0 0 2922 2672 88 13 0 0
35 0 0 162696 156968 1010048 0 0 0 130 3007 2514 88 12 0 0
11 0 0 162632 156968 1010060 0 0 0 0 2702 2510 87 13 0 0
4 0 0 162440 156968 1010072 0 0 0 0 2778 2217 87 13 0 0
4 0 0 162376 156968 1010100 0 0 0 8 2508 2405 86 14 0 0
19 0 0 162392 156968 1010120 0 0 0 0 2585 2570 89 11 0 0
15 0 0 162264 156968 1010136 0 0 0 143 2445 2293 85 15 0 0
32 0 0 162136 156968 1010136 0 0 0 0 2561 2189 87 13 0 0
45 0 0 162136 156968 1010140 0 0 0 0 3006 2618 88 12 0 0
24 0 0 162008 156968 1010176 0 0 0 0 2948 2604 86 14 0 0
10 0 0 162008 156968 1010188 0 0 0 99 2527 2162 89 11 0 0
2 0 0 162008 156968 1010216 0 0 0 0 2464 2495 83 17 0 0
15 0 0 161944 156968 1010240 0 0 0 0 2352 2370 83 17 0 0
6 0 0 161944 156968 1010280 0 0 0 0 2680 2709 85 15 0 0
12 0 0 152024 156968 1011516 0 0 1488 100 2197 3066 77 21 0 2
[/code:1:54b98e63dc]

...hagytam egy kicsit futni.

tehát mint látható, a procs/r szinte sosem 0, a b viszont 0 mindig (w-m nincsnen, a man szerint linux alatt nincs is ilyen). ebből mit lehet kihozni? hogy a HDD még bírná, de a procinak nincs elég ereje? (remélem, nem... mert akkor csúnyán drága lesz a dolog.)

hmmm. asszem első körben, mivel bár a legtöbb olvasási művelet, de a mail miatt kell írás is (meg a user accountok kezelésénél is sok írási művelet fordulhat elő), maradnék egy RAID1-nél, itt mondjuk sajnos fontos szempont a pénz is (max. 2 SCSI HDD-t engedhetünk meg magunknak, mivel 73GB nem árt), és gondolom, egy 100%-osan hibatűrő rendszert, amiben van valami striping elem is, nem lehet 2 HDD-ből összehozni.

"sajnos" már én is gondoltam rá, hogy újraforgassam az apache-ot, de akkor php-t is, meg az összes extensionjét, és aaaarrrrrgh. főleg, ha valamikor akarok majd ssl-t is használni (emlékszem még a régi redhat 7.1-es időkre, amikor a factory rpm elég buta volt, és mindent nekem kellett külön leforgatnom... de micsoda szenvedés volt az).

a tcp-s kernel paraméterek tuningolása sajnos nem sokat segített, egy halvány árnyalatnyit lejjebb ment a terhelés, de igazán jelentős változást nem hozott (pedig átnéztem a többi paramétert is, 1-2n változtattam is (max_orphans pl)).

jah, amúgy az új gép tilalom nem azt jelenti, hogy nem vehetünk új gépet, csak MÉG egy gép beállítása durva lenne (a colocation díjak miatt). ezen egyébként nagyon töröm a fejem, mi lenne jobb:
- egy saját magam által összeállított dual-képes, xeon-alapú gép (asus-nak van 70E körül egy elég szimpatikus alaplapja), scsi-vel,
- vagy most van akciós HP ProLiant ML150-es dual-képes szerver, ami árban alacsonyabb lenne egy kézzel összerakott géphez képest (értsd és mondd: legalább 100E-rel), csak ott azon aggódok, hogy egyrészt hol kapok PC2700-as ECC DDRAM-ot, másrészt, hogy prociügyileg akkor a HP Xeonjaira vagyok utalva, harmadrészt, mi a lócsöcsöt csinálok a benne lévő 37GB-os SCSI HDD-vel (mert az kevés, és ha veszünk egy ugyanolyat a RAID1-hez, akkor az is csak HP lehet, ami drága, és amúgy is hamar kiszaladunk a helyből)... bár a fene se tudja, talán helyileg elég lenne, de akkor sem akarok egy pl. Maxtort a HP-től megvenni, amikor legalább 10-20E-el olcsóbban megkapom saját label alatt.

nagy a dilemma. ti mit javasolnátok?

Szia,

nehany kulcsszoban, a kerdeseidre:

[quote:0a195c6bd9="pdx"]
- az sk98lin driverrel hajtott alaplapi Marvell ETH-et átállítottam IRQ-moderációra (AUTO beállítás, 2000 IRQ/msec nagy terhelés esetén) (ez nagyon nagyot dobott, mert nem csinált megszakítást minden egyes megkapott/kiküldött packethez, hanem szépen sorba állította őket)

Ertheto, tenyleg nagyot tud dobni, nem ismerem a Linux ide vonatkozo lehetosegeit, de pl. FreeBSD -n is az ember elso dolga a device polling bekapcsolasa, a Solaris 10 meg ugye automatikusan valt polling es irq mode kozott. (Kicsit utananeztem, ugy tunik mindket oprendszer ide vonatkozo resze 'okosabb' a Linuxenal.)

[quote:0a195c6bd9="pdx"]
- a PHP-eaccelerator berakása (szintén nagyot dobott)

Ertheto. Az e-accelerator-nak egyebkent erdemes kihasznalni a kodbol az explicit caching lehetosegeit.

[quote:0a195c6bd9="pdx"]
- a site statikus elemeinek (js, css, képek, egyes statikus szövegelemek) és a PHP session filejainak ramdiskre rakása

Reg rossz az a rendszer, ahol a ramdisk-re rakas segit, hiszen a gyakran hasznalt file objektumokat az operacios rendszer ugyis cache-ben tartja.

[quote:0a195c6bd9="pdx"]
- kipróbáltam -- egy tipp alapján -- egy külön apache futtatását, ahonnan az összes statikus (nem-PHP) elem jött, ebben a konfigban nem volt sem mod_rewrite, sem mod_php, sem semmi dinamikus dolog, tehát egy lecsupaszított apache -- nem sok eredmény, le is lőttem azóta

A kulon apache ertelme, hogy hasznalhatod a worker modult akkor is, ha kulonben a PHP nem tenne lehetove (pl. ha olyan php modulokat hasznalsz, amelyek nem thread safe-ek). Igy kis memory footprint-tel eleg sok object-et ki tudsz szolgalni eleg gyorsan, meghagyva a memoriat a dinamikus oldalak es a _file system cache_ szamara. Azonkivul nehany beallitast maskepp szokas a php-kat futtato apacs-ban beallitani: pl keepalive off.

[quote:0a195c6bd9="pdx"]
- okozhatja-e ezt a nagy LA-t a SATA lassúsága ill. processzorfüggése? ha igen, akkor egy SCSI (Ultra160) alrendszer ezen jelentősen segíthet? ha igen, akkor milyen kontroller-kártyát ajánlotok? (Tekram?)

En inkabb arra tippelnek, hogy a PHP scriptek megeszik a processzort. Termeszetesen minden komponens upgrade-je segit, de kellene lennie annyi memoriadnak, hogy ne forduljon annyit a diszkekhez, hogy ez szamitson - ha nincs annyi memoriad, akkor regen rossz, de egyebkent a vmstat kimeneted is azt mutatja, hogy processzorbol van keves.

[quote:0a195c6bd9="pdx"]
- ilyen esetekben akár egy single xeon nagyot tud dobni a rendszeren? ha igen, akkor a 64-bites linux verziót telepítsem?

Ha 64-bit capable xeonod van, akkor kiprobalhatod a 64 bites linuxot, attol fugg.

[quote:0a195c6bd9="pdx"]
- egyes híresztelések szerint a 2.6.xx kernel-ág rosszabul teljesít nagy terhelés alatt, mint a 2.4.xx. igaz ez? ha igen, mekkora teljesítményt nyerhetek egy esetleges kernel-visszaállással?

A 2.6 szerian belul valoban tapasztalhatoak eleg komoly teljesitmeny-hullamzasok a verziok kozott. Alapvetoen sok uj lehetoseg van a 2.6 -os szeriaban, de alkalmazasfuggo, hogy aktualis verzioval mit lehet kiaknazni.

[quote:0a195c6bd9="pdx"]
- a fenti szoftverek közül valamelyikben van valami köztudomású bug, ami hatással lehet a teljesítményre?
- bármi egyéb ötlet az optimalizálásra?

A legtobb az alkalmazason mulik. Az eaccelerator pl. egy jo eszkoz, ha tudod hasznalni. (Jo programozo tudja hasznalni) Cserebe viszont ez is csak egy ujabb hack a kodban. Mivel irtad, a PHP lecserelese, rendes load balancing, ill. gepcsere kizart, ezert sok hozzafuznivalom nincs is a dologhoz: ebben a szituacioban a legtobbet a kodban javithatsz (leszamitva aprobb konfiguracios tippeket, amiket boven megtalalsz a google-ban mindenhol). Nem tudom pl. mennyit memoriat eszik az eacceleratorod, erdemes kiserletezni hatha SHM nelkul jobb eredmenyt ad - vegul is itt az derulne ki, hogy a Linuxnak az SHM implementacioja vagy a filerendszer cache-e a rosszabb. :) Kiprobalhatsz egy FreeBSD 5 -ot, Solaris 10 -et, abbol a szempontbol jobb lesz, hogy biztosan nem kell majd ssh loginra varnod (persze itt is nemi tuningot igenyel), de amig a hardver adott, es a hardvert a programod viszi el, csak a programon tudsz valtoztatni.

Udv,

Mico

[quote:641de0e9b0="pdx"]hehe... kicsi a világ. :)

a tcp-s kernel paraméterek tuningolása sajnos nem sokat segített, egy halvány árnyalatnyit lejjebb ment a terhelés, de igazán jelentős változást nem hozott (pedig átnéztem a többi paramétert is, 1-2n változtattam is (max_orphans pl)).

Csodak nincsenek, nekem az 5-s load ment le tole 2-3 -ra, egyebkent szerintem ott a gondok talan a php-s kodokkal lehetnek, egy ilyen szervernek birnia kell 1-2M hit-et, bar ez attol, is fugg ehhez mekkora halozati forgalom tarsul. Egy teljesen hasonlo szervert lattam mar ami 2-3M hitet is kiszolgalt(igaz izzadt rendesen 3-4-es load), pedig az nem is php-volt hanem jsp es Tomcat.

[quote:8969c55655="szipka"]Egy teljesen hasonlo szervert lattam mar ami 2-3M hitet is kiszolgalt(igaz izzadt rendesen 3-4-es load), pedig az nem is php-volt hanem jsp es Tomcat.

"Pedig" ? A szerver oldali Java alapvetoen gyorsabb, mint a PHP. (Alapvetoen, mert a programon mulik)

Szia,

lasd elozo hozzaszolasomat, plusz:

[quote:32cb08a7e3="pdx"]húú, köszi a sok választ! :D

akkor az én válaszaim/kérdéseim:
- hmm, a tux mennyivel nagyobb teljesítményt tud nyújtani és mennyire könnyen konfigolható?

A statikus oldalak teljesitmenyen fog javitani. Sajnos Tux-szal nincs sok tapasztalatom, a Solaris NCA mar eleg regota letezik, bizonyos esetekben sokat tud dobni. De ugy gondolom nalad egy rendes konfiguracio eseten a PHP -k vinnek el ugyis a CPU-t.

[quote:32cb08a7e3="pdx"]
- kernelben egy stock kernelt használok, tehát csak az rpm-et raktam fel, és abból is a FC2 2.6.10-es legfrissebbet 1 procira, i686 architekturára. mivel ha SCSI-re áttérünk, úgyis felrakok egy FC3-at, abban már valószínűleg saját kernelt forgatok forrásból. ez tapasztalaltotok szerint mennyit segít?

Ha a dolgok ugy mukodnenek, ahogy kellene nekik, akkor nem sokat segitene.

Adi-nak teljesen igaza van abban, hogy ha uj gep, akkor dualproc legyen; az outputjaid alapjan nalad talan nem is annyira, de bizonyos muveleteknel sokat segit a response timeokon, ha van egy masik CPU, ami tud dolgozni mikozben az egyik spinlockban kenytelen varni.

A "hiszen nem hasznal swapot" hozzaszolasokkal nem ertek egyet, nem tudom mennyi contentrol beszelunk, de az hogy nem swappel a gep, nem jelenti azt, hogy az operacios rendszer nem hasznalna meg szivesen 1-2 GB RAM -ot, pl filerendszer cache-nek.

udv,
M.

Ez bizony a vmstat szerint elsősorban karcsú procit jelent. A w amúgy a swap oszlopnak felel meg, csak az újabb vmstat már így írja ki.

Ha upgrade-eltek, akkor inkább duál Opteron és sok memória. Túrjál egy-két tesztet neten, ha jól rémlik, akkor Anandéknál volt egy nagyobb lélegzetvételű MySQL-es móka. Az opteronos gépek elég csúnyán elkalapálták a xeonos versenytársakat.

Az előző hozzászólásokban azt hiszem nagyon hasznos dolgokat írtak, nagyon jó a topic :). Néhány saját tapasztalatot azért hozzátennék:
Mico kolléga említette, hogy nagyon sok múlhat a PHP-kódon. Ezzel teljesen egyetértek. Én egy nagyon általános programozói hibával találkoztam, ami rettentően vissza tudja vetni a PHP sebességét:
Sokan óriási tömböket használnak, amiknek aztán csak egy-két sorát használják fel, pl. LIMIT használata nélkül írnak SQL SELECT-eket.
A PHP memóriakezelése katasztrofálisan lassú. sokszor hosszabb ideig tart a memória lefoglalása és felszabadítása, mint az oldal legenerálása. Nagyon oda kell figyelni a tömbökre!

A másik gond: Ha jól emlékszem az apache nálad 60 szálon fut. A szálak (persze itt processzek) között az ütemező váltogat, 2.6-os kernel-nél 1000-szer másodpercenként (desktopon ez jót tesz). Egy ilyen váltás (context-switch) nagyon költséges művelet. Szerintem első körben ezt le kéne vinned 100-ra (2.4-es default).

A harmadik gond: Az apache szálak száma nem nagyon vihető le, mert akkor viszont rengeteg connect-re váró user lenne, nagyon lecsökkentve a válaszidőt. Ennek az alapja az, hogy míg normális esetben a PHP-nak néhány ms alatt sikerül összeraknia az oldalt, a felhasználók másodpercek alatt töltik le a sávszélességi korlátok miatt.
Erre a problémára írtam korábban a reverse proxy-s megoldást (fordított proxy). A squid egyetlen szálon, conext-switch-ek nélkül dolgozik. Web-szerverként üzemel és a localhost-on futó apache-nak adja tovább a kéréseket. Mivel a proxy gyorsan leszívja a választ az apache-tól, nincs szükség annyi apache processzre, mégis jobb lesz a válaszidő és magasabb lehet az egyidejű kapcsolatok száma. Szóval a lényeg: az adott idő alatt végrehajtott context-swich-ek drasztikus csökkentése! Nálunk ez a megoldás kb. tizedére csökkentette a loadot, lehet, hogy nálad is bejönne, talán egy próbát megér.

[quote:99a1d71732="pdx"]
egy rettentő nagy forgalmú site-ot (és több kis site-ot, továbbá DNS-t és mailt) futtató szerverről van szó, a nagy forgalmat értsd >1,5M hit naponta (lassanként 2M körül kezd lenni, sikeres a site, na).

Csak nem pcforum.hu? :wink:

Viccen kívül: nem jeleztél vissza, hogy noatime benne van-e az fstab-ban.

Ha kevés a pénz, akkor 3ware SATA RAID, jól.

Üdv,
Dw.

hm... nekem is ez volt a szörnyűbb sejtésem, mármint, hogy a PHP kódok viszik el a terhelés nagy részét (chat, főleg, 2-3 mp-ként egy request (igaz, gyorsan lefut) per ablak per fő).

hirtelenjében egy-két dolgot tudok fejből, ami sokat elvihet:
- az unserialize() függvény vajon sokat eszik? (relatíve, persze.) ugyanis a site központi konfigját + 1-2 lecache-elt minitáblát (szótártáblák) ebben a formában tárolok a vinyón, hogy ne kelljen mindig PHP kódnak lefutnia az összes értékadáshoz. ha ezt bepakolom shared memóriába (az eaccelerator_get/put függvényével), akkor ezzel elméletileg egyrészt minimum 1 file-műveletet megtakarítottam, és unserializeálnom sem kell...
...SZERK... közben megírtam a kérdéses kódot. a load hirtelen a felére csökkent. DURRRVA. de jó. ;) most egyelőre 60 másodpercenként egyszer újra beolvassa a konfigot, nem akartam külön signal file-t.
- még az apache-ban a mod_rewrite. vajon kikerülhető lenne-e ez a modul <Location>-ök használatával? (ugyanis néhány valósan létező könyvtáron kívül *minden* aliasolva van ugyanarra az index.php-ra.)
- az SQL kérések és eredményeik minden esetben optimalizálva vannak, a LIMIT nálam, ahol értelmezhető, mindig megadásra kerül. tehát igazán sok felesleges memóriát nem használ a scriptem.

viszont, mielőtt még tovább mennék, hadd osszak meg egy gyöngyszemet veletek... dual opteronos alaplapra kerestem rá. ez a site mindent visz: http://www.feketehurrikanco.hu/termek_magyar/pc/pc_menu_msi.html nem is tudom, hogy 8O vagy :lol:

szóval:
- milyen dual opteron alaplapot tudtok ajánlani?
- abba is csak ECC DDRAM jó?
- megközelítőleg mennyi egy ilyen jó dual alaplap és két proci beléje? reális áron? ugyanígy 1-1,5-2GB ECC DDRAM?

aztán:
- vajon segíthet-e az, hogy átkapcsolok az eaccelerator session handlerjére (ami asszem SHM alapú)? akkor kidobhatnám a session ramdiskemet. (úgy általában 15-20E session file-om szokott lenni, 40M körül foglalnak helyet. így legalább megspórolhatnám az ext2 meg úgy általában a file-rendszer overheadjét.)
- kevés file per directory, viszont sok directory (10E+), ezt bírja-e az xfs?
- ha lekapcsolom az atime módosítást az fstabban, ez nem cseszi-e el valamelyik program (főleg szerverek) működését? mert egyébként tényleg, kell a halálnak az atime módosítás. :D a ramdiskjeimen mindenesetre már a kezdetektől le van tiltva az atime bejegyzése...

köszi az eddigi segítséget is!
-p

folyt...

2.6-os kernelben hogy tudom megadni a context-switchek gyakoriságát, tehát az általad javasolt 1000-ről 100-ra vitelét? van erre valami egyszerű /proc/sys/... dolog vagy töltéskor kernel paraméter megadás, vagy neadjisten kernel-forgatás?

most már értem a squid-proxy használati javaslatodat, de az HTTP/1.1-es proxyként is üzemel, tehát az apache-om megkapja azt is, hogy milyen hostként hívták be? (bocsi, láma vagyok a squid-ben.)

és nem a pcforum.hu. :)

félig offtopic:

komolyan mondom, sírni tudnék. az eaccelelrator.net-en néhány sikersztori:
- havi 5M hit, két szerveres load balancing, és lement a terhelésük.
- éves(!) 6M hit és 370,000 fórumbejegyzés, 3 gép clusterben...

...és így tovább. én meg napi 2M hittel...

ezek után asszem büszke kezdek lenni a PHP scriptemre, hogy még ennyire is elfut egy mezei P4-esen. :lol:

na offolás vége.

nem ertem a rinyalast, napi 2M hittel mar szep penzeket lehet keresni...
azaz fogalmazzunk ugy hogy havi 2M-el lattam mar szep penzeket keresni embereket... :)

szerintem ez off:

na igen, de nem 2 hónap működés után. persze, nálunk is lesz majd reklámbevétel, de a site kifejlesztése és az eddigi hardver is rettentő sok pénzt vitt el, bőven veszteséges még a dolog. szóval ezek után... érted.

off off

Ez a hardver rettentő sok pénzt vitt el? Öhöhöhö. :lol: Azért ne essünk túlzásokba, ez egy egyszerű asztali Asus lap, ha jól látom. Majd ha barebone/brand szerverre, redundáns tápra, SCSI hot-swap szekrénykére és RAID-vezérlőre költesz, az lesz drága! :)

Az eAccelerator get/put függvényeit nem ismerem, de esetleg megpróbálhatod a memcached-t is még. Persze sok memória kell neki, de a LiveJournal terhelését anno eszetlenül lenyomta, amikor kifejlesztették és bevezették.

Dual Opteronhoz való deszkából nálunk leginkább a Tyan cuccai érhetőek el, alaplapfüggő, hogy milyen memória kell bele. Pontosabban proci, mert ugye integrált memóriavezérlő van rajtuk. Ha jól rémlik, az újabb Opteronokhoz nem kell feltétlenül regiszteres memória (de ez szerverbe nem árt). Lehetőleg persze olyan lapot vegyél, amin nem csak 32bit/33 MHz-es PCI csatik vannak, hanem gyorsabbak is, több PCI buszon. Ha az eszközöket több buszra szétrakod, akkor a megemelt áteresztőképesség is csökkenti a loadot, mégha közvetlenül nem is ez a kevés, hanem a processzoridő.

A SATA vinyókat is cseréld le, pontosabban minimum a vezérlőt, mert az is visz el CPU-időt.

A noatime-mal kapcsolatban: én még nem futottam bele olyan daemonba, vagy egyéb programba, aminek megártott volna

Ezt a 10k könyvtárat nem mondtad!
Kegyetlen lassan kezel ennyi alkönyvtárat a Linux (tapasztalataim szerint Solaris is). Ezért szoktak többszörös alkönyvtár-kezelést alkalmazni, pl. név alapján (pl. kezdőbetű alapján külön alkönyvtárba tehetnéd).
Másik általában nagyon lassú dolog file-okban tárolni dolgokat, pl. session-t. shm, de még adatbázis is nagyságrendekkel gyorsabb, bár shm szerintem veszélyes a fix mérete miatt.
Squid kezel HTTP/1.1-et.

Helló

Bár a problémádat nyilván nem a sendmail okozza, de nem gondolkoztál még a lecserélésén? Az eredeti leveledben írtad, hogy gyakran nem fogad levelet. Megpróbálkozhatnál a Qmail -lel, hiszen sebességben, megbízhatóságban szerintem jócskán felülmúlja a sendmailt.

mint mondtam, a kifejlesztése ÉS a hardver vittek el sokat. a hardver persze magában nem olyan sokat vitt. eddig. most már fog, az a gyanúm. :(

az opteronnál kb. hogy kell számolni, teljesítményügyileg, hányas opteron felel meg hányas xeonnak? persze csak megközelítőleg.

a sendmail bírja, csak a beállítások miatt nem fogad már nagy terhelés alatt leveleket. ha végül is úgy akarnám, akár 100-ra is rakhatnám a refuse LA-t.

hááát, szerintem nem lenne rossz ötlet a sessionöket shm-be pakolni, mert php-s serialize'd formában foglal valami 32MB-ot a sok file, ami amúgy is egy ramdisken van, kb. ennyi szabad memóriám mindenképp van. és ha figyelembe vesszük, hogy nem kell minden egyes dinamikus (PHPs) requestnél:
- beolvasni a session file-t
- unserializálni és berakni változókba a tartalmát
- majd a végén serializálni a változókat
- és kimenteni a file-t
- plusz minden x-edik (nem emlékszem, talán 1000 kérésenként 1-re van beállítva) lekérésnél elindítani a gc-t, ami vagy 10E file-on söpör végig, mtime-ot keresve
- mindehhez persze még az ext2 filerendszer szokásos belassulása a sok-sok file-t tartalmazó session file könyvtártól (még akkor is, ha ramdisk-en van)...
csak:
- kivenni a cookie-nak megfelelő session adattömböt és bemásolni az adott változóba
- a végén az adott változót visszanyomni a memóriába
- és minden x-edik kérésnél egy gyors láncon végigmenni, és a lejárt sessionöket free-zni...
...szóval asszem átállok az eaccelerator-féle session kezelésre. :lol:

egyébként az eaccelerator-os get, put, rm stb függvények rettentő egyszerű shm-elérést valósítanak meg, nagyon hasznosak. csökkent is a terhelés, mióta a site konfigot shm-ből szedem. következő menetben kipróbálom, hogy mennyit enyhít a terhelésen az eaccelerator session-kezelése.

a sok-sok file problémájára: régen (amikor még nagyon néztem a kernel dispatch-eket, úgy a 2.2 ág környékén), ha jól emlékszem, a reiserfs-t pont a sok kicsit file-t tartalmazó filerendszerekre optimalizálták, hogy azt majd nagyon gyorsan fogja kezelni. viszont pár napja azt a (rém)hírt kaptam, hogy a reiser is nagyon lassú. erről valakinek van tapasztalata?

köszi,
a

"A "hiszen nem hasznal swapot" hozzaszolasokkal nem ertek egyet, nem tudom mennyi contentrol beszelunk, de az hogy nem swappel a gep, nem jelenti azt, hogy az operacios rendszer nem hasznalna meg szivesen 1-2 GB RAM -ot, pl filerendszer cache-nek."

jogos az egyetnemertes; de ha jol megnezem azt a topot,akkor azt latom,hogy -- igaz nemsok,de -- van meg ott szabad memoria ha kellene neki megette volna cache-nak.

Reszlet a www.sunvolume.hu-rol (ingyen regisztracio utan elerheto a Benchmark resz alatt):

"Persze nem csak ez a két program fontos, ezért egyéb teszteket is végeztünk. Példának okáért néhány program fordítási idejét mértük a Sun V20z-n (mind egy, mind két processzort használva), valamint egy AMD Athlon XP 2400-on. Egy kisebb program, ami az Athlonon körübelul fél perc alatt fordult le, a V20z-n egy processzorral 10, két processzorral 6 másodperc alatt. Ilyen kis programnál ekkora különbség igencsak tetszetős. A linux kernel fordítás volt a másik tesztünk, ott is drámai különbséget tapasztaltunk, hasonló kernel konfiguráció esetén: Míg az Athlonon 40 perc volt, mire kész kernelt kaptunk, a V20z-n egy processzorral 25, kettővel 18 perc. És ez egy igencsak nagy kernel volt.."

Amugy az aprc.hu-n talalhato feltetelek mellett barki bemehet, es letesztelheti a sajat alkalmazasat ezeken a hardvereken...

[quote:b0cae0d87f="Adi"]
A paritásszámolós RAID szintekkel az a baj, hogy írásnál halál mind. Ha módosítasz egy csíkban valamit, akkor a másik n-2 lemezről (RAID5-nél) be kell olvasnia a többi adatblokkot is, kiszámolni az új paritást, kiírni az adatblokkot és visszaírni az új paritásblokkot.

Egy jo trukk az, hogy ha a filesystem blokkmeretet a RAID-5 csik netto meretere, vagy egesz szamu tobbszorosere valasztod meg. Vagyis ha 3+1 diszked van 16k-s blokkmerettel, akkor a filesystem blokkjait 48k-ra meretezve egy iras idealis esetben az egesz csikot irni fogja, es nem kell veszodni a visszaolvasassal/paritasl szamolgatassal.

[quote:c2a619542c="nzmark"]Helló

Bár a problémádat nyilván nem a sendmail okozza, de nem gondolkoztál még a lecserélésén? Az eredeti leveledben írtad, hogy gyakran nem fogad levelet. Megpróbálkozhatnál a Qmail -lel, hiszen sebességben, megbízhatóságban szerintem jócskán felülmúlja a sendmailt.

Akkor már inkább Postfix. Nem hitvitából írom :), a Qmail I/O-igényesebb.

[quote:981c887ca8="hokuszpk"]
jogos az egyetnemertes; de ha jol megnezem azt a topot,akkor azt latom,hogy -- igaz nemsok,de -- van meg ott szabad memoria ha kellene neki megette volna cache-nak.

Jogos, nem is vettem eszre. Persze sok beallithato lehetoseg van ezzel kapcsolatban is, ugyhogy akkor lehetne nyilatkozni, ha lattunk volna mindent. Pl nekem nagyon gyanus hogy /tmp -> ramdisk atallas eseten jelentosen nott a teljesitmeny.

[quote:d08ade0d58="pdx"]
az opteronnál kb. hogy kell számolni, teljesítményügyileg, hányas opteron felel meg hányas xeonnak? persze csak megközelítőleg.

(...)

hááát, szerintem nem lenne rossz ötlet a sessionöket shm-be pakolni, mert php-s serialize'd formában foglal valami 32MB-ot a sok file, ami
amúgy is egy ramdisken van, kb. ennyi szabad memóriám mindenképp

(...)

- plusz minden x-edik (nem emlékszem, talán 1000 kérésenként 1-re van beállítva) lekérésnél elindítani a gc-t, ami vagy 10E file-on söpör végig, mtime-ot keresve
- mindehhez persze még az ext2 filerendszer szokásos belassulása a sok-sok file-t tartalmazó session file könyvtártól (még akkor is, ha ramdisk-en van)...
csak:
- kivenni a cookie-nak megfelelő session adattömböt és bemásolni az adott változóba
- a végén az adott változót visszanyomni a memóriába
- és minden x-edik kérésnél egy gyors láncon végigmenni, és a lejárt sessionöket free-zni...
...szóval asszem átállok az eaccelerator-féle session kezelésre. :lol:

egyébként az eaccelerator-os get, put, rm stb függvények rettentő egyszerű shm-elérést valósítanak meg, nagyon hasznosak. csökkent is a terhelés, mióta a site konfigot shm-ből szedem. következő menetben kipróbálom, hogy mennyit enyhít a terhelésen az eaccelerator session-kezelése.

Látom, Opteron-ügyben már Joel elkezdett lobbizni. :) Amúgy Kugli a te barátod, hogy ezeket megnézd, de mint írtam, az Anandtechen van MySQL teszt régebbről még.

A memcached-be meg mindenfélét el lehet rakni, nem csak a session-ök adatait. Bár az általad írtak alapján az eAccelerator is hasonló módszert használhat. Mondjuk a memcached-nek megvan még az az előnye is, hogyha van olyan géped, amiben még van szabadon memória, akkor azt is bevonhatod, futtathatsz ott is memcached processeket. Ha jól emlékszem, azt írtad, hogy van még egy backend gép is, ugye?

Jut még eszembe: nem okvetlenül muszáj fix méretű ramdiskkel szívni, pakolhatod a cuccokat /dev/shm alá is.

Szia,

[quote:8f2aed4871="pdx"]
az opteronnál kb. hogy kell számolni, teljesítményügyileg, hányas opteron felel meg hányas xeonnak? persze csak megközelítőleg.

Nagyon megkozelitoleg: Opteron 252 -> Xeon 3.6, 248 -> 3.2.
Nehez osszehasonlitani, vannak alkalmazasok es operacios rendszerek, amik jobban szeretik az egyiket vagy masikat.

[quote:8f2aed4871="pdx"]
hááát, szerintem nem lenne rossz ötlet a sessionöket shm-be pakolni, mert php-s serialize'd formában foglal valami 32MB-ot a sok file, ami amúgy is egy ramdisken van, kb. ennyi szabad memóriám mindenképp van. és ha figyelembe vesszük, hogy nem kell minden egyes dinamikus (PHPs) requestnél:

A php session tamogatasaval a szerializacio fuggetlen attol, hogy hogyan tarolod az adatokat. Pl. attol hogy a session save handler az eaccelerator lesz, a szerializacio ugyanaz marad. (nem kotelezo azt hasznalni persze)

[quote:8f2aed4871="pdx"]
következő menetben kipróbálom, hogy mennyit enyhít a terhelésen az eaccelerator session-kezelése.

Korabban irtad, hogy egy /tmp -> ramdisk atallitas is segitett, nekem furcsan hangzik, de ha igy van, mindenkepp allitsd be az eacceleratort, hogy csak shm-et hasznaljon, tempfilet ne.

Udv,
M.

[quote:56eb648bef="_Joel"]Egy kisebb program, ami az Athlonon körübelul fél perc alatt fordult le, a V20z-n egy processzorral 10, két processzorral 6 másodperc alatt. Ilyen kis programnál ekkora különbség igencsak tetszetős. A linux kernel fordítás volt a másik tesztünk, ott is drámai különbséget tapasztaltunk, hasonló kernel konfiguráció esetén: Míg az Athlonon 40 perc volt, mire kész kernelt kaptunk, a V20z-n egy processzorral 25, kettővel 18 perc. És ez egy igencsak nagy kernel volt..

Szezont a fazonnal...

mico a device polling nem zavar be az altq-nak?

mi a kulcs a freebsd.hu -hoz? :)

Szerintem a P4 az kepes hyperthread-amit celszeru lenne egy sajat forditasu kernel formajaban magadeva tenni.

Processor type and...
Processor family: P4.....
Generic x86 ...: OFF
SMP on 2 proci
SMT (Hyperthread)...: ON
Preemptible kernel: OFF
Loadable module support
OFF

Device drivers
Block devices
IO Sheduler
CFQ :ON

Alapertelmezesnek a CFQ boot soran kernel parameterkent elevator=cfq

Ertelem szeruen nem ez az ossz config csak ami jelen esetben mindenkeppen fontos lenne. Szepen pontrol pontra vegig kell menni es beallitani mindent es csak azt forditani a kernelbe ami kell.

Nem tudom FC-ben van-e de Debianban van libc6-i686 csomag az sem art

UI.:

Kernel confignal ajanlom meg a elvegre ez egy szerver es mukodni kell
Code maturity level options: OFF
A modulokra szinten a szerver mivoltbol nincs szukseg elvegre egy szerverben az ember nem cserel minden nap hardwaret es nem dug USB eszkozoket a gep seggebe.

FS-nek en Reisert hasznalok, nem muszaly ezt de ext2 ill. ext3 max boot particionak

[quote:a35086d601="drastik"]mico a device polling nem zavar be az altq-nak?

Nem hasznalok most ALTQ-t, nem tudom, ki fogom probalni...

[quote:a35086d601="drastik"]mi a kulcs a freebsd.hu -hoz? :)

pista

[quote:90d11530af="zsalab"]Szerintem a P4 az kepes hyperthread-amit celszeru lenne egy sajat forditasu kernel formajaban magadeva tenni.

Linuxnal mennyire ismeri mar a scheduler ezeket a cpu felepiteseket?
Desktop hasznalat eseten egyertelmu, hogy segithet a hyperthreading, de ha hajtva van, sok a context switch es a scheduler nem foglalkozik azzal, hogy a ket 'cpu' valojaban egy es ugyanaz, az egesznek a vege jo kis cache trashing lehet.

[quote:0c2288eb18="Mico"]
Szezont a fazonnal...

Jaja, de CPU intenziv terheles eseten jo indikator lehet.

úgy hallottam, hogy a szimpla prescott P4-eseknél a HT nem az igazi, nem segít túl sokat a terhelés elosztásában, ezért nem is kísérleteztem vele.

tényleg, hogy is lehet a context-switchek számának csökkentését elérni? mármint most a mutex-es CS-ekről beszélek, a többszálú processzeknél. ezt már kérdeztem asszem jópár posttal ezelőtt, csak azóta még nem jött válasz.

nem tudja valaki, hogy hol lehet magyarországon silicon image 3124-es sataII kontroller kártyát kapni? a tomshardware elég jó véleménnyel volt róla, és tudja a NCQ-t is, ha a HDD is.

[quote:ed0cabacd1="Mico"][quote:ed0cabacd1="zsalab"]Szerintem a P4 az kepes hyperthread-amit celszeru lenne egy sajat forditasu kernel formajaban magadeva tenni.

Linuxnal mennyire ismeri mar a scheduler ezeket a cpu felepiteseket?
Desktop hasznalat eseten egyertelmu, hogy segithet a hyperthreading, de ha hajtva van, sok a context switch es a scheduler nem foglalkozik azzal, hogy a ket 'cpu' valojaban egy es ugyanaz, az egesznek a vege jo kis cache trashing lehet.

A 2.6-os kernel figylembe veszi, hogy a HT-s az csak egy fizikai cpu.
Igazan ennek dual procinal van szerepe, hogy ne migraljon processt egy fizikai CPU-n belul.