PDA

Bekijk Volledige Versie : Beste manier voor server load balance?



Terrorhawk
22/11/10, 23:57
Hallo,

Ik heb even een vraag.
Momenteel hebben we een server draaien met een dual quadcore cpu (weet zo ff niet welke)
Maar hij begint langzaam problemen te krijgen met zijn load (mem usage is redelijk laag cpu is 100% op alle cores).
Wat gebeurt er op de server?
in het kort draaien een paar ffmpeg aan om iets te converten. plaatsen dit op de hdd.
ffmpeg veroorzaakt ook de load omdat het meerdere ffmpegs tegenlijk zijn (nu 10+ moet naar 100+).
Server draait nu Centos 5.5 met alleen apache en FFmpeg. gaat om een server van een locale omroep om filmpjes te converten.
maar wat is nu een goede en ook makkelijke manier om de serverload te gaan verdelen over meerdere systemen (denk aan servers of blades).
het systeem word binnenkort ook uitgevoerd met een grote SAS
Ik heb 0 ervaring met load balance of blade servers tot nu toe.

Dus wat is volgens jullie de beste (hoeft dus zeker niet de goedkoopste) oplossing zijn?

Mvg
Nico

marsipulami
23/11/10, 00:00
De beste oplossing is om eerst uit te zoeken waar die load wegkomt. En als je niet weet waar je moet beginnen dan moet je in elkgeval meer informatie geven dan je nu doet.

Welk OS draait alles bijvoorbeeld op?

Terrorhawk
23/11/10, 00:06
topic geupdate

xaban
23/11/10, 00:14
Heb je al gekeken naar de I/O? Misschien dat de HD's de bottleneck vormt. Hoe is je opstelling?
Doe eens 'iostat' tijdens hoge load.

Terrorhawk
23/11/10, 00:31
avg-cpu: %user %nice %system %iowait %steal %idle
0.10 1.03 0.24 0.31 0.00 98.31

Device: tps Blk_read/s Blk_wrtn/s Blk_read Blk_wrtn
sda 0.82 3.47 19.16 633126 3495702
sda1 0.00 0.01 0.00 2156 22
sda2 0.82 3.46 19.16 630666 3495680
dm-0 2.55 3.45 19.16 629202 3495680
dm-1 0.00 0.00 0.00 896 0


en me top
top - 23:17:21 up 2 days, 2:41, 1 user, load average: 1.02, 0.63, 0.50
Tasks: 120 total, 2 running, 116 sleeping, 2 stopped, 0 zombie
Cpu(s): 0.1%us, 0.2%sy, 1.0%ni, 98.3%id, 0.3%wa, 0.0%hi, 0.0%si, 0.0%st
Mem: 3107536k total, 558936k used, 2548600k free, 138068k buffers
Swap: 4128760k total, 0k used, 4128760k free, 317016k cached

(ja ik gebruike nice om zo apache voorang te geven)

SF-Jeroen
23/11/10, 00:41
Hoe moet ik dit in het geheel zien? Gaat het om een webpagina waarop gebruikers iets kunnen converteren en wil je een server cluster bouwen wat dat verdeeld over verschillende web/ffmpeg servers? In dat geval zou ik voor het (gratis) programma HAProxy gaan. Dat heb je vrij snel geconfigureerd en het werkt prima.

Anders kun je natuurlijk gewoon een aantal webservers opzetten met een gezamelijke san erachter waar de bestanden vandaan komen en weer op worden gezet, en een of ander python (of iets dergelijks) scriptje schrijven wat ze laat uitvoeren op een van de beschikbare servers.

Niet dat ik veel ervaring heb op dit gebied, ben nog student :)

systemdeveloper
23/11/10, 02:49
Wat wij doen is een relatief cheap bakkie gebruiken dat alleen verantwoordelijk is voor de conversies mbv ffmpeg: users uploaden op de ffmpeg bak, het dingetje converteert op zijn gemak de movies en upload ze intern naar de productiebak.
Kost geen fluit zo, is niet ingewikkeld en je voorkomt de wachttijden van de conversie zelf. Ook de impact op je site (code aanpassingen e.d.) is minimaal zo.
De gebruiker ziet dan direct na het uploaden de originele movie en 1-2 minuten later ziet ie de movie als ie via ffmpeg naar flash is omgezet.
Eigenlijk merken ze dat niet eens.

vDong
23/11/10, 07:58
Device: tps Blk_read/s Blk_wrtn/s Blk_read Blk_wrtn
sda 0.82 3.47 19.16 633126 3495702
sda1 0.00 0.01 0.00 2156 22
sda2 0.82 3.46 19.16 630666 3495680
dm-0 2.55 3.45 19.16 629202 3495680
dm-1 0.00 0.00 0.00 896 0

Ik mis sdb in dit lijstje, heb je daar geen output over gekregen of was die gelijk aan sda en heb je het daarom weggelaten?
Bij het eerste, kijk dan in /proc/mdstat


top - 23:17:21 up 2 days, 2:41, 1 user, load average: 1.02, 0.63, 0.50
Tasks: 120 total, 2 running, 116 sleeping, 2 stopped, 0 zombie
Cpu(s): 0.1%us, 0.2%sy, 1.0%ni, 98.3%id, 0.3%wa, 0.0%hi, 0.0%si, 0.0%st
Mem: 3107536k total, 558936k used, 2548600k free, 138068k buffers
Swap: 4128760k total, 0k used, 4128760k free, 317016k cached

(ja ik gebruike nice om zo apache voorang te geven)

Dit is neem ik aan niet met erg hoge load, 1,02 is niet echt schokkend

Kan je ook eens "vmstat 1" runnen een paar regels lang, tijdens de hoge load?

marsipulami
23/11/10, 09:48
Je zegt ook dat de cpu 100% is, maar in wat je laat zien is die zo goed als idle. Is dit wel een goede momentopname?

jinxedworld
23/11/10, 09:51
Ik mis sdb in dit lijstje, heb je daar geen output over gekregen of was die gelijk aan sda en heb je het daarom weggelaten?


Kan natuurlijk ook nog zo zijn dat er maar 1 schijf in zit, of dat er een raidcontroller in zit welke de array export als 1 zichtbare schijf.

ichosting
23/11/10, 10:47
Zoals Nathan al aangeeft zijn de waarden die je nu opgeeft niet schokkend en vermoedelijk, naar wat het volgens jou zou zijn geweest al, in idle stand gedaan.

Als alle cores op 100% terecht komen (kan ik hier niet op uitmaken helaas), dan gaat er vermoedelijk iets anders fout. Pas ook op met (io)nice achtige instellingen dat je niet het systeem te weinig resources geeft ;) Kan er voor zorgen dat je hele systeem onderuit gaat.

vDong
23/11/10, 21:11
Kan natuurlijk ook nog zo zijn dat er maar 1 schijf in zit, of dat er een raidcontroller in zit welke de array export als 1 zichtbare schijf.

Met 1 schijf verwacht ik geen md devices. Ook niet met echte raid, waar ik meer bang voor ben is een degraded array.

wonko
24/11/10, 12:09
Als ik het goed versta moet je meerdere ffmpeg conversies doen op data, en dit naargelang de aanvraag. Het lijkt me een logisch systeem om dit met een queue op te lossen, en dan naargelang de nood meerdere consumers (op meerdere systemen) te laten werken. Eén ffmpeg per core (dus geen 100 tegelijk opstarten, want dan verlies je toch maar tijd aan scheduling) starten.

Het queue-systeem en zo moet je natuurlijk wel even aftoetsen met hoe je site momenteel werkt (of ons meer info geven).