Mein System leidet unter OOM (vermutlich aufgrund eines DOS-Angriffs). Ich benutze Tomcat 7, NIO. Ich suche nach Wegen, um mein System robuster gegen diese Angriffe zu machen (obwohl ich nicht erwarte, Tomcat komplett immun zu machen - ich möchte die Robustheit so weit wie möglich verbessern).Tomcat oomParachute: Wie man richtig konfiguriert
Meine Protokolle zeigen:
Exception in thread "http-nio-8080-exec-285" Exception in thread "http-nio-8080-exec-82" SEVERE:Memory usage is low, parachute is non existent, your system may start failing.
Exception in thread "PoolCleaner[216942577:1400676008859]" SEVERE:Memory usage is low, parachute is non existent, your system may start failing.
So begann ich die oomParachute untersuchen.
Die Dokumentation (http://tomcat.apache.org/tomcat-7.0-doc/config/http.html) sagt sehr wenig:
(int) Die NIO-Anschluss eine OutOfMemoryError Strategie Fallschirm genannt implementiert. Es enthält einen Datenblock als Byte-Array. Im Falle eines OOM wird dieser Datenblock freigegeben und der Fehler wird gemeldet. Dies gibt der VM genug Raum zum Aufräumen. Die oomParachute repräsentiert die Größe des Fallschirms in Bytes (das Byte-Array). Der Standardwert ist 1024 * 1024 (1 MB). Bitte beachten Sie, dass dies nur für OOM-Fehler in Bezug auf den Java-Heap-Bereich funktioniert, und es gibt absolut keine Garantie, dass Sie überhaupt wiederherstellen können. Wenn Sie einen OOM außerhalb des Java-Heaps haben, hilft dieser Fallschirmtrick nicht.
Also ich versuche herauszufinden: Gibt es wirklich einen Standard wie das Dokument sagt? Wenn ja, warum bekomme ich "Fallschirm ist nicht existent"?
Sollte ich einen Fallschirm definieren? Welchen Wert sollte ich dort setzen? Welche Parameter spielen eine Rolle bei der Bestimmung des Wertes dieses Parameters? (Anzahl der gleichzeitigen Verbindungen? erwartete Größe der Anfrage? Gesamt Heap?)
Was macht dieser Fallschirm wirklich?
Danke!