leider ist das Problem nach der Lösung des ntp-Problems weiterhin vorhanden. Ich habe bei sonst keiner anderen Maschine eine so hohe Auslastung beim “Nichtstuen”. Habt ihr zufällig ein paar Vergleichswerte für mich?
Eine Theorie von mir ist, dass die Überwachungssoftware dafür verantwortlich ist. Gibt es eine Möglichkeit die Aggressivität der Protokolle (falls für die Schreibvorgänge verantwortlich) zu reduzieren?
Bringe erst einmal in Erfahrung welcher Prozess für die Lasten verantwortlich ist. Ggf. dazu iotop manuell aus den Squeeze-Quellen nachinstallieren (manuelles entpacken reicht).
hi, danke für deine Antwort. Könntest du evtl. die Aussagen “aus den Squeeze-Quellen nachinstallieren” und “manuelles entpacken reicht” ein wenig konkretisieren. Meine Skills reichen nicht für einen Transfer und google hilft mir auch grade nicht weiter
Hinweis: Das Paket wird sich nach /usr installieren. Änderungen an /usr können nicht persistiert werden, sprich sie überleben einen Neustart nicht. Die Paket-Datenbank allerdings schon… d.h. du solltest nach einem Neustart hier aufräumen und als root “dpkg --purge iotop” ausführen.
Wie hast du denn die hohe Auslastung überhaupt festgestellt (Methodik)?
Bitte Eckdaten zum Host- und KVM-Guest:
CPU
RAM
Bitte die Ausgabe von
cat /proc/loadavg
beider Systeme.
Bzgl. der ~180kb/s sehe ich erst einmal ehrlich gesagt kein Problem. Zum einen sind das keine Werte, zum anderen führen OpenFire, Incigna und Asterisk eben im Hintergrund periodisch Arbeiten aus. Aber wie gesagt, regelmäßige Spikes von 0 auf 180kb/s sollten kein Problem darstellen.
Hast du die Möglichkeit iostat -h -x 1 60 >/tmp/iostat.log auf dem Host-System auszuführen (ggf. musst du das sysstat Paket der von dir verwendeten Distribution vorher installieren)? Der Befehl würde für 60sek das System beobachten und nach /tmp/iostat.log loggen. Diesen Inhalt solltest du uns hier dann via pastebin.com etc. bereitstellen.
Ich kann z.B. CPU-usage, diskreads und -writes für jede KVM in Form eines Graphen anzeigen lassen und somit auch die einzelnen VMs miteinander vergleichen.
Host:
CPU: 2x Xeon E5620 (2,4 GHz, 12MB), HT ist aus also 8 echte Kerne
RAM: 48GB
Daher schrieb ich, dass du dafür vermutlich das sysstat Paket deiner Distribution erst einmal installieren musst.
Aber ich sehe ehrlich gesagt nichts ungewöhnliches: Die load ist meiner Meinung nach vollkommen in Ordnung. Evtl. ist der Fehler in deiner Annahme zu suchen, dass die Kiste bei 0% liegen sollte (da sie deiner Meinung nach nichts macht). Diese Annahme wäre in meinen Augen falsch, schließlich laufen wie gesagt im Jabber-Server (XMPP, die JAVA-Sache) regelmäßig Tasks ab. Gleiches gilt für Asterisk und die MD-Webanwendung selber… dazu eben noch die regelm. Checks durch Nagios.
Du kannst ja mal testweise die ganzen Dienste der Reihe nach stoppen,
/etc/init.d/icinga stop
/etc/init.d/nagios-nrpe-server stop
/etc/init.d/xmppd stop
/etc/init.d/asterisk stop
/etc/init.d/apache2 stop
/etc/init.d/postgresql stop
dann solltest du annähernd bei 0 angekommen sein.
Aber wie gesagt, auch wenn die Kiste vermeintlich noch nicht genutzt wird, laufen da bereits regelmäßige Tasks ab.
ich sehe auf den Screenshots nicht wirklich etwas, was einem Sorgen machen sollte.
Wenn dich das dennoch stört: Das ist der Stats Collector von postgresql (schön zu sehen wenn alles andere außer postgresql gestoppt ist und man iotop -o ausführt).
Zwei Möglichkeiten:
Einfach in /etc/postgresql/9.1/main/postgresql.conf
folgende zwei Zeilen einfügen:
track_activities = off
track_counts = off
Das deaktiviert den Stats Collector.
Achtung: Bei Updates kann diese Datei überschrieben werden.
pg_stat_tmp
in ein tmpfs auslagernDazu einfach /etc/fstab um folgende Zeile ergänzen
Nach einem Neustart schreibt postgresql die Stats dann in den RAM was zu spürbarer IO-Aktivitätsreduktion führen sollte.
Achtung: Wenn sich die postgresql-Version ändert, muss die fstab-Zeile wieder angepasst werden. Alternativ kann man einen Versions-unabhängigen Pfad wählen und darauf in /etc/postgresql/9.1/main/postgresql.conf per stats_temp_directory = … verweisen. Trotzdem muss man bei Updates nachschauen, ob die Konfigurationsdatei überschrieben wurde. Hier wäre es schön wenn pascom einfach include_dir ‘directory’ setzen könnte und User würden dann Anpassungen in “directory” ablegen und müssen sich bei Updates keine Sorgen machen.
@ pascom:
Letzteres solltet ihr euch selber einmal anschauen und evtl. gar standardmäßig umsetzen.
Bitte fummelt nicht an der postgresql Konfiguration rum! Es hat einen Grund das die Konfiguration so ist wie sie ist, und gerade für unsere kommerziellen Anlagen müssen wir sicherstellen, das diese Stabil laufen - eigene Basteleien an dieser Stelle zu unterstützen wäre viel zu problematisch.
@Afox: Bei der Load sehe ich hier auch nichts ungewöhnliches - Schlussendlich sollen die Benutzer das System ja möglichst problemlos zur Kommunikation nutzen können, und um das zu erreichen passiert halt auf dem System auch so einiges auch im Hintergrund.
Hallo, so ganz ok war das System gestern nicht. Nachdem die genannten Services gestoppt waren habe ich nochmals iotop laufen lassen und mir fiel auf dass verhältnismäßig oft in die syslog geschrieben wurde.
Daraufhin habe ich mir die syslog einmal vorgenommen und es kam in sehr kurzen Abständen immer wieder die Meldung
Weitere Nachforschungen ergaben den Tipp man solle mal den ntp-service manuell neustarten
service ntp restart
danach trat dieser Fehler nicht mehr auf!
ein nützlicher Befehl war mir in diesem Zusammenhang
iotop -oPak
Nun ist der größte “write-Verursacher” eindeutig PostgreSQL.
postgres:~or process
Wenn diese Writes optional durch die genannten Änderungen in den RAM verlagert werden könnten wäre mir dies Recht da eine SSD/HDD auch nicht besser wird wenn ständig geschrieben wird.
Nochmal etwas anderes: hat die Moby etwas Ähnliches wie Fail2Ban? Wie wird diese vor stumpfen 22er Attacken geschützt? Wie/wo konfiguriere ich am Besten meine Firewall?
ich glaube auch dass es nicht schaden würde, wenn pascom von Haus aus pg_stat_tmp auf ein TMPFS auslgern würde:
# ps faux
...]
postgres 3284 0.0 0.2 101440 9212 ? S 17:35 0:00 /TARGET/RAM/usr/lib/postgresql/9.1/bin/postgres -D /var/lib/postgr
postgres 3286 0.0 0.0 101440 1828 ? Ss 17:35 0:00 \_ postgres: writer process
postgres 3287 0.0 0.0 101440 1580 ? Ss 17:35 0:00 \_ postgres: wal writer process
postgres 3288 0.0 0.0 102732 3300 ? Ss 17:35 0:00 \_ postgres: autovacuum launcher process
postgres 3289 0.0 0.0 70444 1924 ? Ss 17:35 0:00 \_ postgres: stats collector process
# date
Fri May 8 17:35:51 CEST 2015
# cat /proc/3289/io
rchar: 273978
wchar: 821936
syscr: 68
syscw: 205
read_bytes: 0
write_bytes: 417792
cancelled_write_bytes: 139264
# date
Fri May 8 18:06:16 CEST 2015
# cat /proc/3289/io
rchar: 273978
wchar: 68220524
syscr: 68
syscw: 16933
read_bytes: 0
write_bytes: 35233792
cancelled_write_bytes: 139264
# date
Fri May 8 18:35:43 CEST 2015
# cat /proc/3289/io
rchar: 273978
wchar: 132331376
syscr: 68
syscw: 32845
read_bytes: 0
write_bytes: 68329472
cancelled_write_bytes: 139264
Wir sprechen also von einer Schreiblast von knapp 70MB pro Stunde (67911680 Bytes).
Vor allem weil sich das so einfach vermeiden lässt (ein Eintrag in /etc/fstab reicht, wobei fraglich ist, wozu es in einer Appliance diese Stats überhaupt braucht, da sie IMHO aktuell nicht verwendet werden) schließe ich mich Afox an. Neben SSDs sollte man auch an Installationen denken die auf SD-Karten schreiben (Rasperry Pi usw).
hi Whissi, könntest du vllt. nochmal einen Vorschlag dazu einstellen? Mir kommt es so vor als würde dies hier keine Beachtung finden… LG
na klar findet es bei uns Beachtung (und Respekt) wenn sich jemand so detailliert und kompetent mit einem Thema auseinandersetzt ;).
Jan legt ein Entwickler-Ticket mit eurem erarbeiten Vorschlag an und wir werden es bewerten und ggf. einfließen lassen. Welche Version das dann sein wird, kann ich leider noch nicht vorhersagen.
Ja, Whissi, Du hast recht, es ist relativ einfach. Wir müssen aber auch immer die Updatemechanismen und Seiteneffeke prüfen. Das kann mitunter aufwändiger werden als es im ersten Moment scheint.