2009-04-04 7 views
0

Wir haben eine UFS-Partition auf Solaris.Sehr langsam geöffnet() (sechs Sekunden plus) bei vollem UFS, das gerade mit einem Massenlöschung beginnt?

Die Lautstärke wird voll. Wir versuchen immer noch, darauf zu schreiben - und natürlich gibt open() -1 sofort zurück.

Wenn ein Cronjob ausgelöst wird, der eine Massenlöschung ausführt, sieht es so aus, als ob open() nicht rechtzeitig zurückkehrt - es dauert mindestens sechs Sekunden, denn so lange dauert es, bis der Watchdog den Prozess beendet.

Jetzt ist der offensichtliche Gedanke, dass die Löschungen das Dateisystem beschäftigt und offen halten() dauert nur für immer ... aber gibt es irgendwelche konkrete Kenntnisse über dieses Verhalten?

Antwort

0

Vielleicht könnte das Programm, das 'Massenlöschung' durchführt, geändert werden, um reibungsloser auf einem Dateisystem zu arbeiten, das Probleme hat. Wenn Abfragen ausgeführt werden, um die zu löschenden Dateien zu finden, wird möglicherweise nicht der offene Anruf ausgelöst. Um die Theorie zu testen, gibt es eine Möglichkeit, einen Cron-Job einzurichten, der einfach eine einzelne Datei mit einem bekannten Namen während des vollen Festplattenzustands entfernt? Wie entscheidet das Programm "Massenlöschung", welche "offene" Verbindung hergestellt werden soll?

Es ist auch möglich, den Prozentsatz der Datenträgerauslastung zu steuern, bevor die Schreibvorgänge nicht mehr funktionieren. Sie könnten auch versuchen, dies auf einen niedrigeren Prozentsatz zu setzen. Wenn Sie den Status "Festplatte voll" feststellen, indem Sie warten, bis ein Dateierstellungsschritt den Wert -1 zurückgibt, sollten Sie eine explizite Überprüfung Ihres Codes in Betracht ziehen, damit bei einem bestimmten Prozentsatz des Dateisystems Korrekturmaßnahmen ergriffen werden.

0

Mass Delete verursacht einen Sturm von zufälligen IO, die Leistung wirklich verletzt. Und es macht so viel von Journal/Log-Transaktionen zu begehen (versuchen Sie es mit der nologging Option?). Außerdem, wenn Ihr fs fast voll ist, würde open sowieso etwas Zeit brauchen, um Platz für einen neuen Inode zu finden.

Das häufigere Löschen von Dateien, weniger auf einmal, kann Ihnen helfen, eine kürzere Antwortzeit zu erhalten. Oder lösche sie einfach langsamer, indem du zwischen rm schläfst.