Webservers als (NFS) diskless boxen

Pagina: 1
Acties:

  • bartvb
  • Registratie: Oktober 1999
  • Laatst online: 05-01 14:41
We hebben hier een aantal vrij goedkope, kleine diskless Celerons staan die we gebruiken voor klanten die een eigen server willen maar geen enorm zware applicaties/sites gaan draaien. Werkte tot nu toe allemaal erg goed. Ding boot via netwerk, start linux op door root van NFS server te mounten, allemaal erg leuk en makelijk met onderhouden.

Dit ging goed tot de server van een drukke site (www.bokt.nl) dood ging (bleek rot geheugen te zijn) en we ook ruimte nodig hadden in ons 19" rack. Server (4u) is dus verwijdered en de site is naar de NFS server gekopieerd. Of ja, de PHP files plus wat statisch spul, overgrote deel van de site staat in een database op de database server.

Ging allemaal niet echt geweldig ;) Die Celerons zijn geen snelheids monsters hadden meer redelijk wat meer Mhz dan de Athlon waar de site op heeft gedraait maar ik gok dat de inimienie 1st level cache van die Cellies nogal wat problemen geeft. We hebben er dus maar een extra diskless doos bijgepakt. Wat CPU betreft gaat het nu (redelijk).

Er ontstonden echter behooooorlijk wat problemen met het NFS verhaal. Performance problemen om precies te zijn. Gelukkig nog geen rare locking problemen gehad :/

Eerste wat we gedaan hebben is het overgrote deel van de site naar /dev/shm/ kopieeren. Probleem is dat /dev/shm/ ook van een NFS mount komt dus als Apache daar iets mee doet komt er telkens een lstat64() voor /dev/ en /dev/shm/ voorbij, iig in strace. Maar op zich lijkt het wel wat verschil te maken. Ik heb ook eens met tcpdump zitten kijken wat er nou allemaal gebeurt en je ziet vooral heeeeeeeeeel veel 'getattr' voorbij komen:

(client->server) 116 getattr fh Unknown/1 (DF) (ttl 64, id 0, len 144)
(server->client)reply ok 96 getattr DIR 41777 ids 0/0 sz 4096 (DF) (ttl 64
, id 0, len 124)

En dat heel, heel vaak. Geen idee waar dat allemaal vandaan komt zeker omdat NFS volgens de mount opties alles een redelijke tijd mag cachen. Een ander ding dat opvalt is dat er enorm veel diskverkeer is op de NFS server. Het netwerkverkeer valt op zich best mee (700KB/s waarvan 99% NFS verkeer). Op de disk is het meestal iets tussen de 3000 en 6000 KB/s van en naar de disk, afhankelijk van hoe druk het is op de site. Geen flauw idee wat dat allemaal voor een verkeer is. Volgens 'sar -b' zitten we op iets van 300 transacties/seconde op de disk (RAID1 IDE).

Is er een soort van 'tcpdump' maar dan voor de disk? Ik ben _erg_ benieuwd wat die disks nou allemaal zo druk aan het doen zijn en vooral met welke files. Dat maakt het een heel stuk eenvoudiger om te kijken waar we ons op moeten focussen om alles sneller te krijgen :/

  • reddog33hummer
  • Registratie: Oktober 2001
  • Laatst online: 07-02 17:13

reddog33hummer

Dat schept mogelijkheden

Je hebt nfs mounts gemaakt. Deze nfsmounts worden gebruikt. Waarom pak je niet gewoon een nfs use monitor ? nfsstat ?

Backup not found (R)etry (A)bort (P)anic<br\>AMD 3400+ 64, 2 GB DDR, 1,5 TB Raid5


  • bartvb
  • Registratie: Oktober 1999
  • Laatst online: 05-01 14:41
nfsstat geeft alleen wat info over het totaal aantal requests dat er gedaan wordt en het soort requests:

code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
Server nfs v2:
null       getattr    setattr    root       lookup     readlink
5       0% 2098875641  1% 6903362  0% 0       0% 30365235  1% 6657    0%
read       wrcache    write      create     remove     rename
35788990  1% 0       0% 93914718  0% 5368971  0% 5391940  0% 3446627  0%
link       symlink    mkdir      rmdir      readdir    fsstat
62163   0% 21      0% 9134    0% 2733    0% 2865409  0% 296280  0%

Server nfs v3:
null       getattr    setattr    lookup     access     readlink
5       0% 113439455  8% 12936   0% 11200609  3% 186901629  4% 46276   0%
read       write      create     mkdir      symlink    mknod
12179176  3% 118962  0% 9470    0% 296     0% 1       0% 83      0%
remove     rmdir      rename     link       readdir    readdirplus
10044   0% 555     0% 3418    0% 47      0% 203446  0% 0       0%
fsstat     fsinfo     pathconf   commit
591     0% 591     0% 0       0% 14435   0%


Daarin zagen b.v. dat v2 vs v3 verhaal. Hebben nu de betreffende clients gereboot met wat nieuwe opties en dat lijkt een heeeeel stuk beter te werken. Maar nog steeds redelijk wat verkeer op de disk.

Ben _erg_ benieuwd of er een manier is om te kijken wat er allemaal van/naar je disk gaat. Zou o.a. ook erg handig zijn voor het optimaliseren van b.v. de database server etc...

  • Maarten @klet.st
  • Registratie: Oktober 2001
  • Laatst online: 13-02 23:00
bartvb schreef op 02 december 2003 @ 18:05:
Ben _erg_ benieuwd of er een manier is om te kijken wat er allemaal van/naar je disk gaat. Zou o.a. ook erg handig zijn voor het optimaliseren van b.v. de database server etc...
Je suggereerde zelf al 'een soort tcpdump'. Waarom niet gewoon echt tcpdump?
Het is effe zoeken op welke poort het verkeer gaat (netstat), maar met
"tcpdump -nX port $poortnummer" zou je het verkeer in hex en ascii voorbij moeten zien komen, lijkt me..

  • bartvb
  • Registratie: Oktober 1999
  • Laatst online: 05-01 14:41
tcpdump hebben we geprobeert maar dan krijg je spul als:

(client->server) 116 getattr fh Unknown/1 (DF) (ttl 64, id 0, len 144)

En dat is niet echt heel bruikbaar :\ Is niet uit op te maken om welke file het gaat onder Linux ;( Verder werkt die oplossing natuurlijk niet op servers die geen NFS gebruiken.

IMO zou zo'n 'diskdump' tool echt een geweldig iets zijn om te troubleshooten en om je servers te optimaliseren.

[ Voor 31% gewijzigd door bartvb op 02-12-2003 21:17 ]


  • Maarten @klet.st
  • Registratie: Oktober 2001
  • Laatst online: 13-02 23:00
bartvb schreef op 02 december 2003 @ 21:16:
tcpdump hebben we geprobeert maar dan krijg je spul als:
(client->server) 116 getattr fh Unknown/1 (DF) (ttl 64, id 0, len 144)
Is niet echt wat je wil geloof ik.. Wat een beetje een houwtje-touwtje oplossing zou kunnen zijn is een find met de -amin optie. Daarmee kun je terughalen welke files in de afgelopen N minuten geaccessed zijn. Creatief scripten en 'stat' zou je tot op de seconde informatie kunnen geven (denk aan iets als "find . -exec stat {} \;").
Voeg daar nog wat commando's als tail, cut en sort aan toe en je zou een redelijk overzicht moeten kunnen krijgen over 'accessed' files. Niet fraai, maar beter dan niets.

Ik dacht dat Ethereal ook een beetje NFS kon decoden, maar of je daar makkelijk de files uit haalt durf ik zo snel niet te zeggen. Suc7 in ieder geval :D

  • bartvb
  • Registratie: Oktober 1999
  • Laatst online: 05-01 14:41
Ethereal kan het ook maar schijnbaar brengt tcpdump het er beter van af. Heb het nog niet geprobeert, draai op het moment alleen windows op deze bak (moet nog ff disk ombouwen, komt er maar niet van ;)) en heb geen zin alleen voor ethreal een Xserver te installeren ;) Maar volgensmij heeft dit er mee te maken dat Linux /proc based is en dat NFS stateless is.

find met -amin is leuk ware het niet dat het bijhouden van atime uitstaat ;) Levert teveel diskspul op, iets dat we juist willen verminderen :) Ander dingetje is dat je op die manier niet ziet hoevaak bestanden geschreven worden (maar het zou idd wel meer info geven dan we nu hebben).

Je zou toch denken dat er meer mensen met dit probleem hebben gezeten, mensen die wel een clue (en tijd) hebben om dit op te lossen door het schrijven van een kernel module ofzo die simpelweg een lijstje uitpoept van inodes of filenames die geaccessed worden en wat er met die file gedaan wordt? Kan niet super ingewikkeld zijn lijkt me. Beetje irri dat ik het niet kan vinden :)

  • paulhekje
  • Registratie: Maart 2001
  • Laatst online: 18:34
er is ook een windowsversie van ethereal...

|=|=|=||=|=|=||=|=|=| http://www.vanwijck.com |=|=|=||=|=|=||=|=|=||=|=|=||=|=|=||=|=|=||=|=|=|


  • bartvb
  • Registratie: Oktober 1999
  • Laatst online: 05-01 14:41
Klopt :) Maar die windows versie heeft dan nog minder info om mij fatsoenlijke info over die filehandles te geven.

Hmm, aan de andere kant.. Ergens in die NFS verbinding moet een clear text bestandsnaam worden overgezonden... Kan eens kijken of ik iets uit een wat langer stuk NFS kan halen. Maar goed, dat lost m'n 'waar komt al dat diskverkeer' probleem natuurlijk nog niet op ;)

Maar ik ga ff spelen met Ethereal. Wie weet :D

  • TrailBlazer
  • Registratie: Oktober 2000
  • Laatst online: 07-02 09:48

TrailBlazer

Karnemelk FTW

die celeron machines wat zijn dat voor machines fabrikant ik ben al heeeel lang op zoek naar zoiets

  • bartvb
  • Registratie: Oktober 1999
  • Laatst online: 05-01 14:41
Zijn barebones die we bij ECL hebben gehaald een tijd geleden. Ik dacht van Gigabyte. Zal het zo ff voor je navragen...

Verwijderd

Zou het niet zo kunnen zijn dat je NFS server een beetje krap zijn geheugen zit en veel aan het swappen is?

  • bartvb
  • Registratie: Oktober 1999
  • Laatst online: 05-01 14:41
:) Nope..

code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
        total:    used:    free:  shared: buffers:  cached:
Mem:  924622848 914018304 10604544        0 150069248 703451136
Swap: 2101428224 19001344 2082426880
MemTotal:       902952 kB
MemFree:         10356 kB
MemShared:           0 kB
Buffers:        146552 kB
Cached:         672600 kB
SwapCached:      14364 kB
Active:         678388 kB
ActiveAnon:      17628 kB
ActiveCache:    660760 kB
Inact_dirty:        76 kB
Inact_laundry:  137148 kB
Inact_clean:     20096 kB
Inact_target:   167140 kB
HighTotal:           0 kB
HighFree:            0 kB
LowTotal:       902952 kB
LowFree:         10356 kB
SwapTotal:     2052176 kB
SwapFree:      2033620 kB


Het is wel zo dat 'kscand' en 'kjournald' (het is ext3) redelijk wat processortijd hebben ingepikt en ook regelmatig op de disk zitten te wachten. Het NFS verkeer is flink gedaald nu we de clients wat nieuwe options meegeven:

nfsroot=,v3,rsize=8192,wsize=8192,async,timeo=20,retrans=3,noatime,nocto,\
acregmin=240,acregmax=240,acdirmin=120,acdirmax=240

(met dank aan ACM :)).

Maar ja, nog steeds redelijk wat diskactiviteit en ik ben vooral erg nieuwsgierig waar dat vandaan komt...

Verwijderd

tip: gebruik free -m, in kilobytes leest zo belabberd :)
Pagina: 1