PDA

Bekijk Volledige Versie : Server load te veel



freakzo
21/11/12, 11:50
Ik heb sinds ongeveer een week last dat onze server steeds 'overload heeft' en zo gaat hij steeds vastzitten.
Ik merkte dat soms httpd heel veel PID's in gebruik heeft (dus ook veel RAM, zelfs tot 8gig)
Vandaag merkte ik dat sql connecties niet meer werkten.

vaak gaat het vanzelf over, of na een reboot is het weer ok.

nu paar vragen:
1. hoe kan ik het probleem opsporen
2. hoe kan ik per user/domein zien welke website veel mem gebruikt (of het liefst tot aan bestandsniveau)
3. zijn er nog andere dingen waar ik naar moet kijken.

het gaat om de volgende server

Compiled on Debian 6.0 64-bit

Processor Name Intel(R) Core(TM) i5-2500K CPU @ 3.30GHz
Vendor ID GenuineIntel
Processor Speed (MHz) 3292.385
Processor Name Intel(R) Core(TM) i5-2500K CPU @ 3.30GHz
Vendor ID GenuineIntel
Processor Speed (MHz) 3292.385
Processor Name Intel(R) Core(TM) i5-2500K CPU @ 3.30GHz
Vendor ID GenuineIntel
Processor Speed (MHz) 3292.385
Processor Name Intel(R) Core(TM) i5-2500K CPU @ 3.30GHz
Vendor ID GenuineIntel
Processor Speed (MHz) 3292.385
Total Memory 3962912 kB
Free Memory 2270124 kB
Total Swap Memory 7737336 kB
Free Swap Memory 7737336 kB
System Uptime 0 Days, 0 Hours and 49 Minutes
Apache 2.2.21 Running
DirectAdmin 1.42.0 Running
Exim 4.73 Running
MySQL 5.5.9 Running
Named 9.7.3 Running
ProFTPd 1.3.3d Running
sshd Running
dovecot 2.0.15 Running
Php 5.2.17 Installed

avanmessen
21/11/12, 12:34
Wat vertelt "uptime" je over de load ?

dreamhost_nl
21/11/12, 12:46
Heb je een firewall geïnstalleerd? Zo nee, installeer CSF/LFD eens. Je kunt hierop instellen dat deze je een e-mail toezend op het moment dat de server load hoog is en een uitdraai van wat er op dat moment draait aan processen. Dit zal je al een beeld geven waar het te zoeken is.

Arieh
21/11/12, 12:49
Je kunt /server-status van apache eens inschakelen, zie daarvoor /etc/httpd/conf/extra/httpd-info.conf

Voor MySQL zal je dmv dit command een grootverbruiker ook zien
watch "mysqladmin --defaults-extra-file=/usr/local/directadmin/conf/my.cnf processlist"

Ook heb je http://www.directadmin.com/forum/showthread.php?t=32283 waar je dmv een command een realtime overzicht krijgt van het aantal hits op alle sites.

freakzo
21/11/12, 13:54
Ik heb geprobeerd topvhost te installeren maar het lukt niet echt.. (ik ben niet echt goed in linux)

wat heb ik gedaan:
wget http://www.issihosts.com/topvhost/topvhost-0.5.tar.gz

dan kreeg ik dus de topvhost-0.5.tar.gz
vervolgens gunzip < topvhost-0.5.tar.gz | tar xvf -
dit maakte een map met topvhost-0.5

dan deed ik ./configure

resultaat:
checking for a BSD-compatible install... /usr/bin/install -c
checking whether build environment is sane... yes
checking for a thread-safe mkdir -p... /bin/mkdir -p
checking for gawk... no
checking for mawk... mawk
checking whether make sets $(MAKE)... yes
checking for g++... g++
checking for C++ compiler default output file name... a.out
checking whether the C++ compiler works... yes
checking whether we are cross compiling... no
checking for suffix of executables...
checking for suffix of object files... o
checking whether we are using the GNU C++ compiler... yes
checking whether g++ accepts -g... yes
checking for style of include used by make... GNU
checking dependency style of g++... gcc3
checking for gcc... gcc
checking whether we are using the GNU C compiler... yes
checking whether gcc accepts -g... yes
checking for gcc option to accept ISO C89... none needed
checking dependency style of gcc... gcc3
checking how to run the C preprocessor... gcc -E
checking for grep that handles long lines and -e... /bin/grep
checking for egrep... /bin/grep -E
checking for ANSI C header files... yes
checking for sys/types.h... yes
checking for sys/stat.h... yes
checking for stdlib.h... yes
checking for string.h... yes
checking for memory.h... yes
checking for strings.h... yes
checking for inttypes.h... yes
checking for stdint.h... yes
checking for unistd.h... yes
checking fcntl.h usability... yes
checking fcntl.h presence... yes
checking for fcntl.h... yes
checking for stdlib.h... (cached) yes
checking for string.h... (cached) yes
checking sys/time.h usability... yes
checking sys/time.h presence... yes
checking for sys/time.h... yes
checking for unistd.h... (cached) yes
checking for stdbool.h that conforms to C99... yes
checking for _Bool... yes
checking for an ANSI C-conforming const... yes
checking for off_t... yes
checking whether time.h and sys/time.h may both be included... yes
checking whether struct tm is in sys/time.h or time.h... time.h
checking sys/select.h usability... yes
checking sys/select.h presence... yes
checking for sys/select.h... yes
checking sys/socket.h usability... yes
checking sys/socket.h presence... yes
checking for sys/socket.h... yes
checking types of arguments for select... int,fd_set *,struct timeval *
checking return type of signal handlers... void
checking whether lstat dereferences a symlink specified with a trailing slash... yes
checking whether stat accepts an empty string... no
checking whether strerror_r is declared... yes
checking for strerror_r... yes
checking whether strerror_r returns char *... no
checking for strftime... yes
checking for memset... yes
checking for select... yes
checking for strstr... yes
checking for library containing mvprintw... no
configure: error: No useful curses library found!


wat gaat er fout ?

Arieh
21/11/12, 14:09
apt-get install ncurses-dev

Echter kans dat hij alsnog fout loopt, pak dan versie 0.4 http://www.issihosts.com/topvhost/topvhost-0.4.tar.gz zoals verderop in het topic staat.

freakzo
21/11/12, 14:12
met apt-get install ncurses-devel heb ik nu de library geinstalleerd.. nu doet config wel..

volgende fout;

root@ :/topvhost-0.5# make

make all-recursive
make[1]: Entering directory `/topvhost-0.5'
Making all in man
make[2]: Entering directory `/topvhost-0.5/man'
make[2]: Nothing to be done for `all'.
make[2]: Leaving directory `/topvhost-0.5/man'
Making all in src
make[2]: Entering directory `/topvhost-0.5/src'
g++ -DHAVE_CONFIG_H -I. -I.. -Wall -g -O2 -MT topvhost.o -MD -MP -MF .deps/topvhost.Tpo -c -o topvhost.o topvhost.cpp
mv -f .deps/topvhost.Tpo .deps/topvhost.Po
g++ -DHAVE_CONFIG_H -I. -I.. -Wall -g -O2 -MT config.o -MD -MP -MF .deps/config.Tpo -c -o config.o config.cpp
config.cpp: In member function ‘std::string Config::filename()’:
config.cpp:61: error: ‘getenv’ was not declared in this scope
make[2]: *** [config.o] Error 1
make[2]: Leaving directory `/topvhost-0.5/src'
make[1]: *** [all-recursive] Error 1
make[1]: Leaving directory `/topvhost-0.5'
make: *** [all] Error 2

freakzo
21/11/12, 14:23
vesie 4 ook geprobeerd

root@ :/topvhost-0.4# make
make all-recursive
make[1]: Entering directory `/topvhost-0.4'
Making all in src
make[2]: Entering directory `/topvhost-0.4/src'
g++ -DHAVE_CONFIG_H -I. -I.. -Wall -g -O2 -MT topvhost.o -MD -MP -MF .deps/topvhost.Tpo -c -o topvhost.o topvhost.cpp
mv -f .deps/topvhost.Tpo .deps/topvhost.Po
g++ -DHAVE_CONFIG_H -I. -I.. -Wall -g -O2 -MT config.o -MD -MP -MF .deps/config.Tpo -c -o config.o config.cpp
mv -f .deps/config.Tpo .deps/config.Po
g++ -DHAVE_CONFIG_H -I. -I.. -Wall -g -O2 -MT monitor.o -MD -MP -MF .deps/monitor.Tpo -c -o monitor.o monitor.cpp
monitor.cpp: In member function ‘watchList* Monitor::getWatchList(Config*)’:
monitor.cpp:134: error: ‘snprintf’ was not declared in this scope
make[2]: *** [monitor.o] Error 1
make[2]: Leaving directory `/topvhost-0.4/src'
make[1]: *** [all-recursive] Error 1
make[1]: Leaving directory `/topvhost-0.4'
make: *** [all] Error 2

Arieh
21/11/12, 15:43
0.4 lijkt inderdaad ook niet zomaar te werken, echter is de fix vrij simpel in de map topvhost-0.4 doe


nano src/monitor.cpp

Voeg toe


#include <cstdio>

bovenin dat include lijstje.

Vervolgens zal make werken en is het klaar.

Dan kan je hem openen met
src/topvhost -f./.topvhost
of
src/topvhost -f./.topvhost -sExample
met die laatste heb je nog de user agent erbij

Dan kun je nog met 'h' sorteren op meeste hits.

Zie verder http://www.issihosts.com/topvhost/

patrickekkel
21/11/12, 15:47
Waarschijnlijk heb jij last van een udp flood

Heb jij joomla website's draaien ?
Momenteel worden er veel joomla website's misbruikt en gaat er een udp flood naar israel

Een eventueele oplossing

eerst via iptraf kijken welke ip adres udp 53 doet

-deze blokkeren
- firewall herstarten

62.219.50.70
108.162.233.15

locate uitvoeren op het woord com_phocaguestbook
locate com_phocaguestbook > /var/www/html/zoeken.txt

daarna deze chmod 000 geven

Dit staat er onder andere in die scripts
$dnsConnection = fsockopen("udp://" . $this->dnsServer, 53);

vDong
21/11/12, 20:11
@patrickekkel

Waarschijnlijk heb jij last van een udp flood
Heb jij joomla website's draaien ?
Ondanks dat het niet verkeerd is om daarop te checken, kan ik me bijna geen enkele manier bedenken waarmee een udp flood een hoge load veroorzaakt.
Zijn probleem lijkt simpelweg het aantal gespawnde http processen in combi met het aanwezige geheugen.

In het verleden heb ik ook systemen gefixed die deze issue hadden, wat er gebeurd is dat er ineens vet veel apacheprocessen gespawed worden (op de server waar ik het over had 700+) die ineens zoveel geheugen reserveerde dat het systeem zich even doodswapt. Bij mij kwamen de systemen echter (met een load van 200+) gewoon terug tot rust. Wat je moet doen is of het geheugengebruik limiteren (per thread of totaal) of de geheugen uitbreiden.