Hilfe bei Fehlereingrenzung gesucht

Klaus2002

New Member
Hallo ich habe einen Rootserver bei 1und1 mit Suse 9

Seit 2 Wochen rauscht der Server mir in regelmäßigen Abständen ab. Das bedeutet alle Dienste laufen aber ich bekomme keine Antwort, ich kann ihn nur noch anpingen. Also hilft nur noch ein Neustart.

Jetzt bin ich leider etwas bei der Fehlersuche überfordert.
Ich sitze als vor der Konsole und beobachte was so passiert. Innerhalb weniger Minuten steigt load average von 0.8 bis weit über 30, Cpu wait springt auch auf über 90% und die Taskanzahl erhöht sich langsam von 170 auf z.Z. 248.

top
Code:
top - 20:12:36 up 1 day, 11:17,  2 users,  load average: 28.71, 25.68, 20.90
Tasks: 230 total,   3 running, 227 sleeping,   0 stopped,   0 zombie
Cpu(s):  1.1% us,  1.9% sy,  0.0% ni,  0.0% id, 96.7% wa,  0.3% hi,  0.0% si
Mem:    247052k total,   242508k used,     4544k free,      136k buffers
Swap:  2048248k total,   740652k used,  1307596k free,    16440k cached

  PID USER      PR  NI  VIRT  RES  SHR S %CPU %MEM    TIME+  COMMAND
27511 wwwrun    17   0 39836 7444 2972 D  1.2  3.0   0:00.18 httpd2-prefork
27441 wwwrun    17   0 38812 6468 2944 D  0.7  2.6   0:00.13 httpd2-prefork
27540 mailman   18   0  7564 5220 2252 D  0.6  2.1   0:00.43 python
27552 root      18   0 23076 9880 4604 D  0.5  4.0   0:00.63 php
27060 wwwrun    17   0 43196 4880 3516 D  0.3  2.0   0:00.68 httpd2-prefork
27541 mailman   18   0  7564 5212 2252 D  0.3  2.1   0:00.44 python
  102 root      15   0     0    0    0 D  0.2  0.0   0:18.32 kswapd0
26429 root      16   0  2184  920  640 R  0.2  0.4   0:15.84 top
27055 wwwrun    17   0 43524 5752 3528 D  0.2  2.3   0:00.84 httpd2-prefork
27076 wwwrun    17   0 42000 9408 3572 R  0.2  3.8   0:00.69 httpd2-prefork
    9 root      10  -5     0    0    0 S  0.1  0.0   0:05.19 kblockd/0
 1577 root      16   0  4000   64   40 S  0.1  0.0   0:00.11 3dm2
 2347 mysql     16   0  127m  13m 2560 S  0.1  5.6  10:33.70 mysqld
23415 wwwrun    17   0 47664 6944 3644 S  0.1  2.8   0:30.59 httpd2-prefork
26377 root      15   0  7736 1140 1012 D  0.1  0.5   0:00.81 sshd
27048 wwwrun    17   0 43040 5000 3532 D  0.1  2.0   0:01.32 httpd2-prefork
27054 wwwrun    17   0 43020 5620 3516 D  0.1  2.3   0:00.75 httpd2-prefork
27074 wwwrun    17   0 43768 4972 3516 D  0.1  2.0   0:00.77 httpd2-prefork
27316 wwwrun    16   0 40656 5512 3780 S  0.1  2.2   0:00.26 httpd2-prefork
27582 root      16   0  1556  484  408 S  0.1  0.2   0:00.01 tcp-env
26429 root      16   0  2184  920  640 R  0.2  0.4   0:15.84 top
27055 wwwrun    17   0 43524 5752 3528 D  0.2  2.3   0:00.84 httpd2-prefork
27076 wwwrun    17   0 42000 9408 3572 R  0.2  3.8   0:00.69 httpd2-prefork
    9 root      10  -5     0    0    0 S  0.1  0.0   0:05.19 kblockd/0
 1577 root      16   0  4000   64   40 S  0.1  0.0   0:00.11 3dm2
 2347 mysql     16   0  127m  13m 2560 S  0.1  5.6  10:33.70 mysqld
23415 wwwrun    17   0 47664 6944 3644 S  0.1  2.8   0:30.59 httpd2-prefork
26377 root      15   0  7736 1140 1012 D  0.1  0.5   0:00.81 sshd
27048 wwwrun    17   0 43040 5000 3532 D  0.1  2.0   0:01.32 httpd2-prefork
27054 wwwrun    17   0 43020 5620 3516 D  0.1  2.3   0:00.75 httpd2-prefork
27074 wwwrun    17   0 43768 4972 3516 D  0.1  2.0   0:00.77 httpd2-prefork
27316 wwwrun    16   0 40656 5512 3780 S  0.1  2.2   0:00.26 httpd2-prefork
27582 root      16   0  1556  484  408 S  0.1  0.2   0:00.01 tcp-env
  901 root      10  -5     0    0    0 S  0.0  0.0   0:00.10 xfssyncd
 1062 root      12  -4  1464  288  288 S  0.0  0.1   0:00.40 udevd
 1194 root      18   0  1496  180  180 S  0.0  0.1   0:00.00 resmgrd
 1406 root      17   0  1532  124  124 S  0.0  0.1   0:00.00 dhcpcd
 1545 root      17   0  1500  324  324 S  0.0  0.1   0:00.00 startpar

tail -f /var/log/messages/
Gibt erstmal nicht Verdächtiges aus. Bis dann folgendens kommt:
Code:
pop3d: db_connect: failed to connect to database: Error: Too many connections
pop3d: Unable to connect to the mysql database
Ich gehe davon aus das die Meldung nicht das Problem darstellt sondern nur ein Ergebnis dieses ist.

Wo soll ich jetzt suchen um dem Problem auf die Spur zu kommen?

Danke schonmal für Eure Hilfe
 
Ich habe gerade noch diese beiden Befehle durchlaufen lassen.
Code:
badblocks -vs /dev/hda
mysqlcheck --user=XXXXX --password=XXXXX --analyze --auto-repair --all-databases
Beide haben mir keine Fehler ausgegeben.

Was sollte ich als nächstes prüfen?
 
Erhöhe die Anzahl erlaubter, simultaner Verbindungen zu Deiner mySQL-Datenbank. Stichwort hier: my.cnf.
 
Anbei mal meine /etc/my,cnf. Leider finde ich kein max_connections, oder habe ich etwas übersehen.
Code:
[client]
port		= 3306
socket		= /var/lib/mysql/mysql.sock

[mysqld]
port		= 3306
socket		= /var/lib/mysql/mysql.sock
skip-locking
key_buffer = 16M
max_allowed_packet = 1M
table_cache = 64
sort_buffer_size = 512K
net_buffer_length = 8K
read_buffer_size = 256K
read_rnd_buffer_size = 512K
myisam_sort_buffer_size = 8M

skip-networking

server-id	= 1

[safe_mysqld]
err-log=/var/lib/mysql/mysqld.log

[mysqldump]
quick
max_allowed_packet = 16M

[mysql]
no-auto-rehash

[isamchk]
key_buffer = 20M
sort_buffer_size = 20M
read_buffer = 2M
write_buffer = 2M

[myisamchk]
key_buffer = 20M
sort_buffer_size = 20M
read_buffer = 2M
write_buffer = 2M

[mysqlhotcopy]
interactive-timeout
 
Mem: 247052k total, 242508k used
Swap: 2048248k total, 740652k used
a) Es macht keinen Sinn 10fach soviel Swap einzustellen, als man realen Speicher hat.
b) Es macht keinen Sinn mehr Dienste auf einem Server zu fahren, als man realen Speicher hat.

Dein (virtueller???) Server benutzt 1 GB Speicher. Aber nur 1/4 davon sind real vorhanden. 3/4 liegen im Swap. D.h. Dein Server ist mehr mit swappen beschäftigt als sonst etwas.

Siehe dazu auch vServer: Speicherauslastung reduzieren - huschi.net

huschi.
 
Ich glaube es lag doch an einer defekten Datenbank.

Mein top sieht jetzt jedenfalls so aus:
Code:
top - 14:14:38 up 1 day, 15:35,  2 users,  load average: 0.05, 0.18, 0.17
Tasks: 108 total,   1 running, 107 sleeping,   0 stopped,   0 zombie
Cpu(s):  0.0% us,  0.3% sy,  0.0% ni, 99.7% id,  0.0% wa,  0.0% hi,  0.0% si
Mem:    247052k total,   219768k used,    27284k free,      648k buffers
Swap:  2048248k total,   197984k used,  1850264k free,    57020k cached

  PID USER      PR  NI  VIRT  RES  SHR S %CPU %MEM    TIME+  COMMAND
    1 root      16   0   684   72   44 S  0.0  0.0   0:01.13 init
    2 root      RT   0     0    0    0 S  0.0  0.0   0:00.00 migration/0
    3 root      34  19     0    0    0 S  0.0  0.0   0:00.04 ksoftirqd/0
    4 root      RT   0     0    0    0 S  0.0  0.0   0:00.00 watchdog/0
    5 root      10  -5     0    0    0 S  0.0  0.0   0:00.00 events/0
    6 root      10  -5     0    0    0 S  0.0  0.0   0:00.62 khelper
    7 root      10  -5     0    0    0 S  0.0  0.0   0:00.00 kthread
    9 root      10  -5     0    0    0 S  0.0  0.0   0:09.54 kblockd/0
   10 root      20  -5     0    0    0 S  0.0  0.0   0:00.00 kacpid
  103 root      11  -5     0    0    0 S  0.0  0.0   0:00.00 aio/0
  102 root      15   0     0    0    0 S  0.0  0.0   0:10.58 kswapd0
  104 root      10  -5     0    0    0 S  0.0  0.0   0:01.32 xfslogd/0
  105 root      10  -5     0    0    0 S  0.0  0.0   0:00.88 xfsdatad/0
  690 root      10  -5     0    0    0 S  0.0  0.0   0:00.00 kseriod
  731 root      11  -5     0    0    0 S  0.0  0.0   0:00.00 ata/0
  743 root      15   0     0    0    0 S  0.0  0.0   0:00.51 kjournald
  891 root      10  -5     0    0    0 S  0.0  0.0   0:00.27 xfsbufd

Die Swap-Par. wurde von 1und1 so eingerichtet und von mir nicht verändert.
 
Aber trotzdem ist wichtig was in #6 gesagt wurde. swap möglichst ganz ausschalten (mache ich so) oder wenn unbedingt nötig so klein wie möglich machen, bei dir etwa 256M
 
swap möglichst ganz ausschalten (mache ich so) oder wenn unbedingt nötig so klein wie möglich machen

Ja klar, ich weiß auch nicht was sich die Entwickler von UNIX damals dabei gedacht haben, als sie sich so etwas Schwachsinniges wie virtuelles Speichermanagment ausgedacht haben und dann noch erlaubt haben, dass es darin unterschiedlich schnelle Speicherhierarchien gibt.
Schlimm genug, dass es Programme gibt, die nicht ganz in den L0-Cache des Prozessors passen und dann aus dem L1-Cache heraus arbeiten müssen. Wer seine Programme aber so blöd schreibt, dass sie gar auf das reguläre RAM zugreifen müssen, ist selber Schuld. Wenn man dann noch dem Betriebssystem erlaubt, Teile, die gerade nicht aktiv sind, auf die langsame Platte auszulagern, dann grenzt das doch an Wahnsinn.
Und die Idioten in Redmond sind so blöd, das auch noch beim Windows nach zu bauen. Unglaublich. Wichtig ist, dass man die Swap-Partition bzw. Auslagerungsdatei klein genug wählt, damit das Betriebssystem gar nicht erst in Versuchung gerät, sie zu nutzen.

Danke für den Hinweis!:eek:
LinuxAdmin
 
Back
Top