Hallo Leute,
es ist zwar schon eine Weile her, seitdem mir das passiert ist, aber es "bewegt" mich immernoch: Vor einiger Zeit habe ich mal KOffice ausprobiert (und schließlich für größere Dokumente noch als unbrauchbar befunden) und in KWord einem Text die Schriftgröße "11,5" zugewiesen (hätte wohl "11.5" nehmen sollen) - der Effekt war, daß in meinem Kicker-Systemmonitor, den ich immer laufen habe, die Speicherausnutzung wie bei einem guten Fortschrittsbalken stieg, was bei 320 MB RAM schon ganz schön komisch ist. Als der RAM voll war, füllten sich die 120 MB Swap, die noch aus der Zeit stammen, als der Rechner noch 64 MB RAM hatte, auch ganz fix. Schon vorher hatte ich Alt-F2 gedrückt, um "killall kword" eingeben zu können, aber dazu kam ich nicht mehr, sondern mußte Reset drücken. Bei ReiserFS kein Problem, nur der Text war weg und außerdem soll's mir ja auch nicht um meinen Rechner zuhause gehen.
Wie läßt sich so ein Problem in Zukunft vermeiden? "ulimit -d 15", die als Beispiel in SuSEs /etc/profile steht? Kann das der Benutzer umgehen? Ich habe nämlich das Problem, daß ich Linux als Terminal-Server in der Schule solange nicht einsetzen kann bzw. will, solange man das System mit solch einfachen Maßnahmen wie sich selbst wieder aufrufenden oder Unmengen an Speicher allokierenden Programmen abschießen kann. Ein Neustart des Servers ist im normalen Unterrichtsbetrieb nicht machbar, denn man muß davon ausgehen, daß auch ich mal nicht im Info-Kabinett sondern in anderem Unterricht sitze und die meiste Zeit im Informatik-Raum Lehrer unterrichten, die absolut keine Ahnung von Linux, Systemadministration etc. etc. haben. Natürlich, man kann den bösen Schüler dann bestrafen usw., aber am Problem ändert das gar nichts. Außerdem muß man erstmal rausfinden, wer Mist angestellt hat, und ich habe absolut keine Lust, über 250 Benutzer zu bespitzeln.
Wenn jemand Ahnung hat, wie einen X-Terminal-Server mit vielen bösen Benutzern am Laufen hält, dann möge er bitte antworten. Ich will keine Krieg über die Güte von Linux anfangen ("Speichermanagement von Linux ist schlecht, xxxxBSD ist eh besser") oder sowas, denn das nützt keinem was. Auch Hinweise wie "benutz doch Kernel 2.4" (mach ich ja schon längst) oder "man ulimit" nützen mir nichts. ;-) Ich wäre eher an Skript-Ideen und guten Theorien und "..." interessiert.
Danke, Konrad
PS: Bitte ärgert Euch nicht, aber ein Religionskampf hilft mir nicht...
On Sat, Apr 07, 2001 at 07:01:41PM +0200, Konrad Stopsack wrote:
Hallo Leute,
Hallo Konrad,
Wie läßt sich so ein Problem in Zukunft vermeiden? "ulimit -d 15", die als Beispiel in SuSEs /etc/profile steht? Kann das der Benutzer umgehen?
Ein Benutzer alleine nicht, aber wenn sich mehrere zusammen rotten und einen Angriff starten hätte der Server keine Chance. Es sei denn: Limit = (Gesamter Speicher)/(Anzahl aller Nutzer)
Naja, kein guter Tipp...
Ciao, Tobias
Am Samstag, 7. April 2001 19:01 schrieb Konrad Stopsack:
Ich wäre eher an Skript-Ideen und guten Theorien und "..." interessiert.
Da hier noch keine Antwort kam kann ich dir zumindest "..." anbieten, und ducke mich schon mal vor den üblichen Verdächtigen :-)
- KOffice raushauen (einige der Komponenten haben noch nicht einmal einen Maintainer, das Ding ist einfach noch zu instabil und hat deshalb seit Anfang März einen eigenen Release-Plan ) - auf dem Server einen selbst programmierten Daemon laufen lassen, dem du vertraust und der alles killt, was diverse Kriterien nicht einhält. Dazu gibst du ihm eine Liste von Prozessnamen mit, die er nicht killen darf (init, kswapd, ...) oder eine Liste von Pid-Nummern von Prozessen, die schon vorher gestartet wurden, das ist vielleicht sogar sinnvoller. Oder eine Kombination... - Als Kriterium kann man unter anderem angeben, ob eine maximale Speichergrenze überschritten wurde, oder sich der Speicherverbrauch innerhalb einer gegebenen Zeitspanne exponentiell vervielfacht hat (quasi ein "Lernverhalten" implementieren) - eine statistische Auswertung sollte enthalten sein - Hm, jetzt eine ganz komische Idee: Wie bei den 5% auf Festplatten ein reservierter Bereich im Speicher - aber das ist Kernelsache, und eigentlich auch OT - eventuell eine Summe aller Auslastungen jedes Schülers zusammenrechnen und auch dort ein Maximum festlegen, d.h. selbst wenn kein Programm spinnt können keine neuen gestarten werden (kill nach dem Start) (in KDE kann man dann direkt oder über DCOP eine Messagebox aufklappen lassen, die das dem Schüler erklärt)
Soviel zur Theorie. Wenn sowas sinnvoll wäre ist die Programmierung sicher nicht so schwierig (hatte ja schonmal angefangen), wenn nicht dann wird sicher jemand hier bessere Vorschläge bringen.
Josef Spillner
Hallo!
Josef Spillner wrote:
Ich wäre eher an Skript-Ideen und guten Theorien und "..." interessiert.
Da hier noch keine Antwort kam kann ich dir zumindest "..." anbieten, und ducke mich schon mal vor den üblichen Verdächtigen :-)
- KOffice raushauen (einige der Komponenten haben noch nicht einmal einen
Maintainer, das Ding ist einfach noch zu instabil und hat deshalb seit Anfang März einen eigenen Release-Plan )
In der Regel ist KWord schon brauchbar; ich nehme es in der Schule für den Einstieg in Klasse 7 und bin bislang nicht auf solches Verhalten gestoßen. Das mit dem Maintainer gilt sicher für Debian.
- auf dem Server einen selbst programmierten Daemon laufen lassen, dem du
vertraust und der alles killt, was diverse Kriterien nicht einhält. Dazu gibst du ihm eine Liste von Prozessnamen mit, die er nicht killen darf (init, kswapd, ...)
Ich mache es an den Usern fest: 1. Stelle eine Liste von Prozessen zusammen, die den Gruppen "schueler", "lehrer" und "users gehören. 2. Wer angemeldet ist, hat laufen: "bash|kwin|kdeinit". Schmeiß alle Prozesse raus, deren Nutzer keine solche Shell hat. (Achtung, das killt derzeit auch den ftp-Server-Daemon, falls einer gerade damit arbeitet) Dieser Teil entsorgt vor allem festgefahrene netscape, z.T. StarOffice oder auch Rechenroutinen, die Gimp oder gnuchess hinterlassen hat. 3. Von den jetzt noch verbleibenden Kille die, deren Timewert über 8 Min liegt. Die wachen ohnehin nicht wieder auf. Auch hier ist vor allem Netscape der Übertäter, aber auch plugins oder java bleiben gelegent- lich hier hängen.
Solche speicherfressenden Prozesse sind eher die Ausnahme. Letzte Woche ist mein Server trotz Kernel 2.4.3 hängengeblieben, weil die inodes nicht gereicht haben (steht auf 32767!). Die genaue Ursache kann ich nicht mehr herausfinden, jedenfalls stieg zu diesem Zeitpunkt der Load auf 104,52 (bei 427 Prozessen/32 aktiv).
Soviel zur Theorie. Wenn sowas sinnvoll wäre ist die Programmierung sicher nicht so schwierig (hatte ja schonmal angefangen), wenn nicht dann wird sicher jemand hier bessere Vorschläge bringen.
Ich suche jemanden, der das oben genannte in C umsetzt (ist derzeit ein Shell- Script!). Kann mir jemand helfen?
Gruss Reiner
lug-dd@mailman.schlittermann.de