Moin. Thomas Hertweck wrote:
Arno Lehmann wrote:
Situation: Athlon 500, 512 MB, 2GB Swap, jede Menge Software. Nach Start ca. 300MB RAM belegt, load liegt typischerweise knapp über 0, und deutlich unter 0,1. Es laufen jede Menge Prozesse.
Nach etwa 24-36 Stunden fängt der oom-killer im Kernel an Prozesse abzuschiessen bis der Server nicht mehr ansprechbar ist - irgendwann hat's ldap, bind, named etc. weggeputzt.
Das laesst darauf schliessen, dass der Speicher ausgeht. Der Cache im Speicher wuerde z.B. automatisch verkleinert werden.
Eben da scheint das Problem zu liegen.
[...] Im Moment monitore ich per rrd den systemload und speichere mir jede Minute den Output von free und ps -eopid,user,rss,sz,cmd .
Was ich bisher sehe: Es wird Speicher verbraten. Und zwar nicht zu knapp: ... Buffer und Cache sind in etwa gleich geblieben, genutzter Speicher stieg von ca. 380 MB auf 510 MB (=130 MB), entsprechend ging der freie Speicher etwa um die gleiche Menge zurueck. Noch ist alles i.O., d.h. es ist genuegend RAM vorhanden, um Speicher allokieren zu koennen, aber wenn es so weiter geht, ist das natuerlich nicht so gut... Was fuer einen Kernel nutzt Du? Und wie ist Dein Swap-Bereich konfiguriert? Hast Du Speicher mit memtest mal getestet, nur um ein physikalisches Problem auszuschliesen?
Ja, das war auch nur ein Beispiel, zu einer Zeit aufgenommen, da das noch ging ;-) Kernle 2.6.8-24.13-default per YOU eingespielt, neu gebootet. Memtest lief einige Durchgänge nachdem ich den Speicher vergrößert hatte und fand keine Fehler. 2 GB Swap vorhanden.
Der letzte Durchgang des out-of-memory killers danach war dann der Reboot fällig...) brachte folgendes Log:
Der Kernel sollte nur anfangen, Prozesse zu killen, wenn das der letzte Ausweg ist (oder es ist ein buggy Kernel). Es koennte sein, dass ein Programm ein memory leak hat, d.h. je laenger es laeuft, desto mehr Speicher braucht es. Das muesste sich aber dann auf alle Faelle feststellen lassen. Was ergab Dein Speicher-Monitoring?
Ich habe ja die Hoffnung das solche offensichtlichen Bugs in einem original-SuSE-Kernel nicht enthalten sind. Im Moment, so wie's aussieht, habe ich das Problem etwas eingekreist: Wenn nagios (www.nagios.org, glaub' ich) läuft -> Problem. Wenn's nicht läuft: Kein Problem. Was die Speichernutzung angeht tappe ich immer noch im Dunkel: free sagt: -/+ buffers/cache: 410072 Summe der RSS der Prozesse zu dem Zeitpunkt: 109376 Nun bin ich mir nicht hundertprozentig sicher dass sum(RSS)=used memory - buffers - cache gilt, aber die Differenz ist doch ziemlich groß. Im Verdacht habe ich inzwischen Netzwerkverbindungen und Sockets die von Prozessen offengelassen werden. Denn: Während nagios läuft und regelmäßig monitoring-Prozesse startet gibt mir netstat -a|wc -l mehr als 600 aus, ohne nagios ~230 Aber brauchen 370 offene connections hunderte MB Speicher? Ich glaub' nicht... Gibt es noch andere, detailliertere Möglichkeiten als free und ps -eopid,user,rss,sz,cmd die tatsächliche Speichernutzung von Prozessen zu ermitteln? Arno
Cheers, Th.
-- IT-Service Lehmann al@its-lehmann.de Arno Lehmann http://www.its-lehmann.de