17.04.2011, 00:32 UTC+2

Sie sind nicht angemeldet.

Problem: MySQL frisst sehr viel CPU

roehle

Anfänger

Beiträge: 17

Anzahl Nagios-Server: 1

Nagios-Version(en): Nagios

Verteiltes Monitoring: Nein

Redundantes Monitoring: Nein

Anzahl-Hosts: 300+

Anzahl Services: 20+

Betriebssystem(e): Windows, Linux

Plugin-Version(en): unknown

NDO-Version: 1

1

15.04.2011, 09:20

Problem: MySQL frisst sehr viel CPU

Hallo,

wir haben seit kurzem unter Debian squeeze Nagios 3.2.1 mit den NDOUtils laufen (virtuell) und beobachten das Phänomen, dass der mysqld sehr viel cpu frisst.
Wodurch könnte dies verursacht sein? Ein bekanntes Problem? Welche Infos würden zur Analyse noch benötigt?

Gruß,
Stefan



PDeneu

Fortgeschrittener

Beiträge: 491

Geburtstag: 05.10.

Geschlecht: Männlich

Wohnort: Nürnberg

Beruf: Senior Consultant

Anzahl Nagios-Server: >1

Nagios-Version(en): 2.x-3.x

Icinga-Version(en): 1.x

Verteiltes Monitoring: Ja

Redundantes Monitoring: Ja

Anzahl-Hosts: >1

Anzahl Services: >1

Betriebssystem(e): SLES, RHEL, Debian, CentOS, OpenSUSE

Plugin-Version(en): 1.4.x

Sonstige Addon's: PNP, NagVis, NETWAYSGrapher, EventDB, NagTrap, DokuWiki etc.

2

15.04.2011, 09:27

Hallo Stefan,
das ist so Pauschal schwer zu sagen,
Welche Processe schreiben denn akut in die Datenbank?
mysql -e 'show processlist;'
Wie groß ist die CPU?

Deinem Profil zu folge verwendest du Icinga... nutzt du also die IDO? Welche Version?
Hast du 300 Hosts und 20 Services? Ggf. mal die 512 MB Arbeitsspeicher ein wenig aufrüsten... :-)

Gruß
Philipp
NETWAYS GmbH http://www.netways.de
NETWAYS Blog http://blog.netways.de

roehle

Anfänger

Beiträge: 17

Anzahl Nagios-Server: 1

Nagios-Version(en): Nagios

Verteiltes Monitoring: Nein

Redundantes Monitoring: Nein

Anzahl-Hosts: 300+

Anzahl Services: 20+

Betriebssystem(e): Windows, Linux

Plugin-Version(en): unknown

NDO-Version: 1

3

15.04.2011, 10:14

Hab mal mein Profil aktualisiert, denn wir sind von Icinga zu Nagios geschwenkt (Wahl der Sysadmins...)
Noch sind es etwa 200 Hosts und wir haben ca 20 Services laufen, die aber noch nicht allen Geräten zugeordnet sind weil wir noch entwickeln.
RAM werde ich wohl gleich mehr bekommen (man will es au 1GB hochsetzen), die CPU:

Quellcode

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
roehle:~$ cat /proc/cpuinfo
processor   : 0
vendor_id   : AuthenticAMD
cpu family  : 16
model       : 4
model name  : Quad-Core AMD Opteron(tm) Processor 2384
stepping    : 2
cpu MHz     : 2570685.013
cache size  : 512 KB
fpu         : yes
fpu_exception   : yes
cpuid level : 5
wp          : yes
flags       : fpu de tsc msr pae cx8 cmov pat clflush mmx fxsr sse sse2 ht syscall nx mmxext fxsr_opt lm 3dnowext 3dnow constant_tsc up rep_good nonstop_tsc pni cx16 popcnt hypervisor lahf_lm cmp_legacy extapic cr8_legacy abm sse4a misalignsse 3dnowprefetch
bogomips    : 5400.21
TLB size    : 1024 4K pages
clflush size: 64
cache_alignment : 64
address sizes   : 48 bits physical, 48 bits virtual
power management: ts ttp tm stc 100mhzsteps hwpstate


Zu den Prozessen innerhalb der DB:

Quellcode

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
23357, printerdata, computer:7915, printerdata, Sleep, 103, , 
23358, printerdata, computer:7917, printerdata, Query, 0, , show processlist
23360, printerdata, localhost, printerdata, Query, 27, Sending data, select
                (select s.output from ndoutils.nagios_servicechecks s, ndoutils.nagios_objects o
                        where o
23361, printerdata, localhost, printerdata, Query, 27, Sending data, select
                (select s.output from ndoutils.nagios_servicechecks s, ndoutils.nagios_objects o
                        where o
23362, printerdata, localhost, printerdata, Query, 27, Sending data, select
                (select s.output from ndoutils.nagios_servicechecks s, ndoutils.nagios_objects o
                        where o
23363, printerdata, localhost, printerdata, Query, 26, Sending data, select
                (select s.output from ndoutils.nagios_servicechecks s, ndoutils.nagios_objects o
                        where o
23364, printerdata, localhost, printerdata, Query, 26, Sending data, select
                (select s.output from ndoutils.nagios_servicechecks s, ndoutils.nagios_objects o
                        where o
23365, printerdata, localhost, printerdata, Query, 26, Sending data, select
                (select s.output from ndoutils.nagios_servicechecks s, ndoutils.nagios_objects o
                        where o
23366, printerdata, localhost, printerdata, Sleep, 14, , 


Bin für weitere Hinweise dankbar...

Stefan

Bastian Kuhn

Fortgeschrittener

Beiträge: 224

Geschlecht: Männlich

Wohnort: München

Anzahl Nagios-Server: 6

Nagios-Version(en): 3.0 - 3.2

Verteiltes Monitoring: Nein

Redundantes Monitoring: Ja

Anzahl-Hosts: >500

Anzahl Services: >10000

Betriebssystem(e): Unix, Windows

Plugin-Version(en): !=

4

15.04.2011, 10:18

Hi Stefan,

brauchst du DB für was anderes wie Nagvis?

Wenn nein, kannst du livestatus benutzen und dir die Datenbank sparen.

Grüße
Bastian

roehle

Anfänger

Beiträge: 17

Anzahl Nagios-Server: 1

Nagios-Version(en): Nagios

Verteiltes Monitoring: Nein

Redundantes Monitoring: Nein

Anzahl-Hosts: 300+

Anzahl Services: 20+

Betriebssystem(e): Windows, Linux

Plugin-Version(en): unknown

NDO-Version: 1

5

15.04.2011, 10:22

Die Datenbank brauchen wir um die abgerufenen Werte (wir überwachen Kopierer und rufen z.B. Zählerstände, Tonerfüllstände etc. ab) in einer leicht per SQL auszuwertenden Form zu erhalten. Da geht kein Weg dran vorbei...

PDeneu

Fortgeschrittener

Beiträge: 491

Geburtstag: 05.10.

Geschlecht: Männlich

Wohnort: Nürnberg

Beruf: Senior Consultant

Anzahl Nagios-Server: >1

Nagios-Version(en): 2.x-3.x

Icinga-Version(en): 1.x

Verteiltes Monitoring: Ja

Redundantes Monitoring: Ja

Anzahl-Hosts: >1

Anzahl Services: >1

Betriebssystem(e): SLES, RHEL, Debian, CentOS, OpenSUSE

Plugin-Version(en): 1.4.x

Sonstige Addon's: PNP, NagVis, NETWAYSGrapher, EventDB, NagTrap, DokuWiki etc.

6

15.04.2011, 10:34

Hmm dann könntest du überlegen den event_broker wert so herunerzustellen das nur deine benötigten Informationen in die DB geschrieben werden.

http://labs.consol.de/lang/de/nagios/event-broker-options/
NETWAYS GmbH http://www.netways.de
NETWAYS Blog http://blog.netways.de

Bastian Kuhn

Fortgeschrittener

Beiträge: 224

Geschlecht: Männlich

Wohnort: München

Anzahl Nagios-Server: 6

Nagios-Version(en): 3.0 - 3.2

Verteiltes Monitoring: Nein

Redundantes Monitoring: Ja

Anzahl-Hosts: >500

Anzahl Services: >10000

Betriebssystem(e): Unix, Windows

Plugin-Version(en): !=

7

15.04.2011, 10:51

Das kannst du mit Livestatus aber auch, durch die LQL: http://mathias-kettner.de/checkmk_livestatus.html

Der Vorteil, du sparst die die ganze Datenbank und bekommst deine Werte ohne jeden Disk I/0 aus dem Speicher von Nagios.

roehle

Anfänger

Beiträge: 17

Anzahl Nagios-Server: 1

Nagios-Version(en): Nagios

Verteiltes Monitoring: Nein

Redundantes Monitoring: Nein

Anzahl-Hosts: 300+

Anzahl Services: 20+

Betriebssystem(e): Windows, Linux

Plugin-Version(en): unknown

NDO-Version: 1

8

15.04.2011, 13:35

So, habe jetzt eine zweite CPU und 16GB RAM bekommen...
Trotzdem bleibt der mysqld bei top ganz oben, nun mit ~199 %CPU.
Ich habe nun schon die Häufigkeit der Tests ausgedünnt aber kann man noch irgendwas machen um mehr Luft zu bekommen? Wir haben noch nicht alle benötigten Tests umgesetzt :-)
Vorläufig muss ich wohl bei MySQL bleiben, obwohl der livestatus verlockend aussieht...

dnsmichi

Meister

Beiträge: 1 991

Geburtstag: 30.05.1983 (27)

Geschlecht: Männlich

Wohnort: Wien

Beruf: DNS & Monitoring Developer

Anzahl Nagios-Server: 3

Nagios-Version(en): s/nagios/icinga/

Icinga-Version(en): 1.3.1 / GIT

Verteiltes Monitoring: Ja

Redundantes Monitoring: Ja

Anzahl-Hosts: 200+

Anzahl Services: 4000+

Betriebssystem(e): RHEL 5.6 x64

Plugin-Version(en): 1.4.15

IDO-Version: 1.3.1 / GIT MySQL/Postgresql/Oracle

Sonstige Addon's: PNP 0.6.11, check_mk GIT

9

15.04.2011, 15:58

ohne angabe der version von ndoutils sowie etwaigen configs wirds sehr spannend. den wechsel von icinga auf nagios finde ich btw sehr spannend, grade wo die ndoutils bisweilen noch schlechtere performance aufweist als die idoutils unter bestimmten voraussetzungen. livestatus wuerde ich hier nicht empfehlen, ausser du stehst es dir auf aktives polling des cores durch externe anwendungen, und stellst dafuer ausreichend cpu power zur verfuegung.

mach mal ein profiling von mysql und identizifiziere blockende queries sowie lang laufende queries. das gepostete bsp laesst schonmal starke rueckschluesse auf fehlende indexes zu.
Icinga 1.3 MySQL,PGSQL,Oracle and IPv6

Demos
Docs: http://docs.icinga.org

Report bugs/Feature requests

* egrep -v "^#|^$" configfile
* check https://dev.icinga.org

Join us online!
irc.freenode.net #icinga-devel

Using Icinga? Tell us!

Ähnliche Themen