Труден въпрос

12 отговора 512 прегледа
#1

Труден въпрос

Представете си значи web server, с Red Hat Linux 7.3, 2 процесора PIII na 1GHz, 2Gb RAM и 36Gb RAID... значи това животно противно на очакванията ви, хоства САМО статични страници /и картинки/ на орязано Apache... има и named пуснат... целия контент дето се хоства е може би около 1Gb и за това обикновено целия се кешира в паметта от системата и след някой друг час работа /тъй като Apacha НЕ пише никакви логове/ харда почва буквално да си клати краката, язък за RAID-а... и тъй като паметта е повече от колкото Linux-а може да заеме, колкото и да се старае, остават накрая даже 500Mb RAM свободни... всичкото т'ва заедно с двата не особено слаби процесора позволяват на сървъра да поддържа комфортния load average в рамките на 0.01 - 0.10, при все че прави около 20Mbit/sec изходящ трафик от малки файлове... дотук добре, ОБАЧЕ понякога, веднъж на няколко дена, може и 2 пъти за един ден, load average-а скача рязко на 10.00 - 20.00 и си се движи в тези граници, като съм го виждал и да отскача за моменти на 100... с reboot се оправя, ако не го хвана, обикновено след някой друг час забива... въпроса е ЗАЩО??? виждал съм как за една секунда, минутния load average скача от 2 на 20 колко процеса трябва да се появят и да вървят за да скочи за секунда с толкова?

някой може ли да предположи на какво се дължи това долу? един running процес /и той всъщност е самия top/ и 15.85 load average

10:46pm up 1 day, 7:44, 1 user, load average: 15.85, 9.19, 7.62
846 processes: 845 sleeping, 1 running, 0 zombie, 0 stopped
CPU0 states: 2.5% user, 4.0% system, 0.0% nice, 93.2% idle
CPU1 states: 2.3% user, 3.1% system, 0.0% nice, 94.2% idle
Mem: 2065156K av, 1459764K used, 605392K free, 0K shrd, 101640K buff
Swap: 2104464K av, 0K used, 2104464K free 1063308K cached

PID USER PRI NI SIZE RSS SHARE STAT %CPU %MEM TIME COMMAND
24460 root 16 0 1600 1600 836 R 1.8 0.0 0:03 top
8634 web2 15 0 1448 1448 1304 S 0.2 0.0 0:09 httpd
20040 web2 15 0 1448 1448 1304 S 0.2 0.0 0:01 httpd
24260 web2 15 0 1440 1440 1304 S 0.2 0.0 0:00 httpd
24292 web2 15 0 1436 1436 1312 S 0.2 0.0 0:00 httpd

и още това може да ви даде представа какво върви на машината:
[root@venus ~]# uname -r
2.4.18-3smp
[root@venus ~]# pstree -u
init-+-bdflush
|-httpd---452*[httpd(web2)]
|-keventd
|-khubd
|-2*[kjournald]
|-klogd
|-ksoftirqd_CPU0
|-ksoftirqd_CPU1
|-kswapd
|-kupdated
|-mdrecoveryd
|-6*[mingetty]
|-named(named)
|-portmap(rpc)
|-raid1d
|-rpc.statd(rpcuser)
|-scsi_eh_0
|-snmpd(snmp)
|-sshd---sshd---bash---pstree
|-syslogd
`-xinetd
[root@venus ~]#

дано някой изобщо го прочете цялото ;-)

ViruS
Отговор
в отговор на ViruS #2

Re: Труден въпрос

хммм на мен на еднопроцесорна машина с кернел, компилиран със смп супорт, ми правеше проблеми ksoftirqd_CPU0 (ядеше, ядеше, ядеше ресурси докато забие). и така по на 2-3 седмици трабваше да рестарт-вам. с прекомпилация и наместване на адрото се оправи.

пробвай да сложиш последния кернел.

между другото, за чий ти е swap (kswapd)? нали пишеш, че машината има повече рам, отколкото и трябва? а rpc? използваш ли го?

TANSTAAFL! There AiNt Such Thing As A Free Lunch
Отговор
в отговор на onzi #3

Re: Труден въпрос

да ама на мен ми трябва smp... за kswapd си много прав, ама по идея не пречи /по-точно не забива, някой би го забелязал преди мен/... с rpc никога не съм се сблъсквал, но за тази машина като се чудех какво да разкарам написах man rpc.statd и с бегъл поглед видях думите monitoring и reboot notification и набързо реших да не го пипам, да не помислят тия от хостинга, че е забил и да го reboot-нат /макар че имам сериозно основание да смятам, че проверяват с ping за забили машини/... за ядрото и аз много се чудех, ама... страх ме е малко, в Щатите е машината

ViruS
Отговор
в отговор на ViruS #4

Re: Труден въпрос

ако ядрото ти е от ранните 2.4 - там е проблема. В началото беше много нестабилно на двупроцесорни машини. Ако е 2.2 - не мога да си обясня какво може да е. Но няма да минеш без ново ядро - поне за да се разбере за какво иде реч. Така или иначе, ако накрая наистина забива просто няма от какво друго да е, освен от ядрото.

Отговор
в отговор на 2 #5

Re: Труден въпрос

2.4.18-3smp не е от най-ранните... но все пак ще пробвам да сложа 2.4.20

ViruS
Отговор
в отговор на ViruS #6

Пробвах...

Пробвах да сложа 2.4.20 и не стана :((((( равносмеката е 40мин. down 15 от тях прекарани на телефона в разговор със Щатите :((

Какво направих... значи настоих си ядрото, особено внимание на мрежовата карта и RAID-а... значи сигурен съм, че избрах правилните драйвери... обаче, след като си компилирах ядрото и стигнах до
mkinitrd /boot/initrd-2.4.20-smp.img 2.4.20-smp

ми каза нещо от сорта "No module for aic7xxx /тва е SCSI-то/"

аз реших щом иска модул да му го дам... пак влязох в настойките и го пуснах да е модул...
make dep
make modules
make modules_install
този път каза "No module for raid1", същата процедура, и след това mkinitrd мина... почнах да се чудя дали да прекомпилирам ядрото или да оставя това с тези драйвери вътре... е прекомпилирах всичко отначало /може би не трябваше/, всичко изглеждаше успешно, направих в lilo-то новия kernel да е default, /sbin/lilo -v -v, всичко изглеждаше наред, написах reboot и зачаках, стискайпи палци... е да знаете само със стискане на палци не става... чаках чаках и им се обадих да отидат да заредят старото ядро... и след 10 минути сървъра се появи със все така старото ядро...

сега къде греша? може би не трябваше да прекомпилирам самия bzImage след като направих raid да е модул? или от някъде (за Slackware е /etc/rc.d/rc.modules, за RedHat явно не е там, но ако бях решил щях да го намеря) да кажа на тези модули да се лоадват? но пък бях решил, че щом ще стига до четене на файлове, значи вече има диск, а модулите си ги е заредил от initrd-2.4.20-smp.img, нали за там ги искаше...

ViruS
Отговор
в отговор на ViruS #7

Windows 2003

e reshenieto na problema ti

Отговор
в отговор на BG Programis #8

Re: Windows 2003

Windows is not the answer, windows is the question - Linux is the answer

Отговор
в отговор на ViruS #9

Re: Пробвах...

Ако зареждаш от РАИД-а -> определено не трябва да е модул :).
Щото става: за да зареди модула му трябва модул - нали се сещаш....

Гадното е, че сървъра е на майната си - по-трудно е!

Що не пробваш като за начало да изхакаш всичко статично? Поне важните модули - файлови системи, драйвери на блокови у-ва и т.н.?

Поздрави!
Д.

Отговор
в отговор на ViruS #10

Ако можеш, мини....

без initrd - това е много по-просто.

а най-лесно за такава машина е -
компилираш ядро без модули, всичко което ти трябва - вътре, добавяш го в lilo, default го правиш и така.

ако нещо се оплеска - казваш на хостингарите само да ти го издебнат и да ти го буутнат със старото ядро, а ти, понеже си пич, си пазиш и стария lilo.conf

Време е да се разлиствам
(последно ще си купувам УАЗ...)
Отговор
в отговор на ViruS #11

Re: Труден въпрос

хм - 2.4.20 и то е бъгаво. На мен ми правеше подобен проблем, а четох и други хора да се оплакват, та се върнах на 2.4.19

Отговор
в отговор на onzi #12

Re: Труден въпрос

[линк]

Отговор
в отговор на бeзxaбepниk #13

Re: Труден въпрос

Струва ми се, че на този в bugzilla.redhat.com проблема му е различен... поне при него се вижда кой му яде процесора, а на мен процесорите си седят на 95% Idle, няма процеси дет са налапали ресурсите, обaче натоварването е 15.00 примерно

иначе аз направих точно това с lilo-то и точно казах на support-а да бутне старото ядро... не е трудна операция, ама все пак, сървъра е production

и още да поясня, че първоначално бех направил ядрото без никакви модули, ама initrd-то почна да иска модули и аз гледах да му угодя... до сега не бях срещал такова поведение...

ViruS
Отговор