Очень медленное открытие () (шесть секунд плюс) на полном UFS, только начинающем массовое удаление? - PullRequest
1 голос
/ 04 апреля 2009

У нас есть раздел UFS на солярисе.

Громкость становится полной. Мы все еще пытаемся писать в него - и, естественно, open () немедленно возвращает -1.

Когда запускается cronjob, который выполняет массовое удаление, похоже, что open () не возвращается своевременно - это занимает не менее шести секунд, потому что это - то, сколько времени до сторожевого таймера убивает процесс.

Теперь очевидная мысль состоит в том, что удаления сохраняют файловую систему занятой и открытой () просто занимает вечность ... но есть ли какие-либо конкретные знания об этом поведении?

Ответы [ 2 ]

0 голосов
/ 17 апреля 2009

Массовое удаление вызывает бурю случайных операций ввода-вывода, которая действительно снижает производительность. И он делает столько транзакций журнала / журнала для фиксации (попробуйте с опцией nologging?). Более того, если ваш fs почти заполнен, open в любом случае займет некоторое время, чтобы найти место для нового инода.

Более частое удаление файлов за раз может помочь вам сократить время отклика. Или просто удалите их медленнее, спя между rm.

0 голосов
/ 05 апреля 2009

Возможно, программу, выполняющую «массовое удаление», можно изменить, чтобы она работала более плавно в файловой системе, в которой возникли проблемы. Если он выполняет запросы, чтобы найти файлы для удаления, это может быть не открытый вызов, который истекает. Чтобы проверить теорию, есть ли какой-нибудь способ настроить задание cron, которое просто удаляет один файл с известным именем во время заполнения диска? Как программа «массового удаления» решает, какой «открытый» вызов сделать?

Также возможно контролировать процент использования диска, прежде чем перестанут работать записи. Вы также можете попробовать установить это значение ниже. Если вы обнаруживаете состояние «диск заполнен», ожидая, пока шаг создания файла не вернет -1, то вам следует рассмотреть возможность добавления явной проверки к вашему коду, чтобы, если файловая система была заполнена более чем на определенный процент, предпринять действия по исправлению. 1003 *

...