Форум программистов, компьютерный форум, киберфорум
RinatV
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск  

Вычищаем mod-tmp

Запись от RinatV размещена 07.01.2013 в 04:01
Показов 15025 Комментарии 2

Под новый год купили новый сервер, т.к. за месяц до этого случился непонятный обвал более слабого сервера, удачно переехали, вроде работает норм. Решил удалить на старом сервере замести все следы, последовательно удаляя программы, пользователей.

Только вот при удалении пользователей случился какой то завис, гугл показал что в директории mod-tmp пользователей оказывается скапливается большое количество сессионных файлов php. Их нужно переодически чистить, что и видимо явилось причиной больших нагрузок на сервер.

В принципе с удалением файлов в Linux проблем нет, стоит только перешагнуть через rf -rf mod-tmp/, но эта команда не неинтерактивная, она молча удалит все файлы. Однако при удалении 5 милионов мелких файлов это молчание выглядит как зависание, есть конечно и другие рецепты команд, но все они расчитаны а запуск по расписанию в cron без эха.

Мне было интересней увидеть как все это происходит, в этом мне помог ruby, по скорости конечно не очень, зная особенности системы можно наверняка и побыстрей это делать, допустим запуском нескольких потоков, собственно вот код:

Ruby
1
2
3
4
5
6
7
8
9
10
11
12
13
dr='mod-tmp/'
d = Dir.new(dr)
n=0
l=Time.now
d.each do |path|
  if n%1000==0
    x=Time.now
    puts "#{n} +#{x-l} #{dr+path}"
    l=x
  end
  File.delete dr+path if !FileTest.directory? dr+path
  n+=1
end
код отсчитывается через 1000 найденных файлов, главное знаем что делается,да и время поначалу было 10 секунд на 1000 файлов, так что надежда появляется сразу. 26 секундные итерации с самого начала и не меняются, видимо что-то работает:

Code
1
2
3
4
5
105000 +26.415262997 mod-tmp/sess_3121561d6d09c577e39ca46ccdfc3a66
106000 +5.780714248 mod-tmp/sess_9d2088fbfad3dab0ef69073fcab876b7
107000 +5.846447822 mod-tmp/sess_6e8328858731d3ef86bbe81e603384f8
108000 +5.794790207 mod-tmp/sess_33cd1a077b222a3dbf0a9b7ade8ea431
109000 +5.269644683 mod-tmp/sess_e909798c803cd2ab03e68659b06fb6dc
Размещено в Без категории
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Всего комментариев 2
Комментарии
  1. Старый комментарий
    Аватар для turbanoff
    Раз уж на сервере был PHP, почему бы не использовать его? Или bash на крайний случай.
    Запись от turbanoff размещена 09.01.2013 в 14:46 turbanoff вне форума
  2. Старый комментарий
    php долго не выдерживаю.
    В bash не нашел интерактивного варианта для копипаста, сам эффективные варианты пока сочинять не умею. ls сперва создаст список, который недождаться, find видимо делает тоже самое, т.к. эффекта после запуска с опциями -delete не видно по отчету df -i. Передачу по xargs или же просто rm не испытывал, пока эти возможности для меня неочевидны.

    Приведенный способ интерактивен, эффект сразу есть, правда скорость не такой высокий к сожалению 5000 файлов в минуту, что сравнимо с Midnight Commander, хоть и происходит некое ускорение со временем, но со временем 26 секундные интервалы увеличиваются и начинают следовать друг за другом, видимо сказывается или журналирование или обнадеживание RAID, но в этих вопросах разбираться уйдет времени более 10 часов, такое время проработал скрипт, хотя должно было проработать больше.

    А с ruby получил желаемый результат за 3 минуты, отчет написал через 21 минуту
    Ruby
    1
    2
    3
    4
    5
    
    Welcome to IRB. You are using ruby 1.9.3p362 (2012-12-25) [i386-mingw32]. Have f
    un ;)
    >> 109000 / 5000 #=> 21
    >> 5*10**6 / 5000 / 60 #=> 16
    >>
    С пулом потоков тоже испытывал, правда ускорения никакого нет видимо
    Запись от RinatV размещена 14.01.2013 в 14:15 RinatV вне форума
 
Новые блоги и статьи
Когда логика программы не спасает от человеческих ошибок
Maks 18.08.2026
В последнее время всё чаще и чаще сталкиваюсь с таким явлением, как абсолютная невнимательность (или глупость) пользователей. Проявляется это чаще всего на работе в коллективе. Допустим, человек с. . .
Лето уходит
kumehtar 17.08.2026
Мысли в слух
kumehtar 17.08.2026
Забавно, насколько сейчас стала доступна информация. Например о магии, духовном развитии, медитациях, и других подобных направлениях, ранее зачастую тайных, передаваемых от учителя к ученику. Хотя. . .
Перемещение строк из ТЧ в другой документ с учетом текущего пробега
Maks 17.08.2026
Реализация из решения ниже выполнена на примере нетипового документа "Автозапчасти", с ТЧ "Шины". За основу взят алгоритм отсюда: https:/ / www. cyberforum. ru/ blogs/ 359708/ 10838. html Задача: . . .
Саморегулирующийся социальный контракт для сервера cross-section.
Hrethgir 14.08.2026
С кодом конечно таких глубоких размышлений пока не было, впрочем я уже привык к алгоритмизации. Суть предмета записи: снова в диалоге с нейросетью (я взял пока себе ник для учётки админа - Rector). . . .
Часы электронные
Uhbif79 12.08.2026
Выкладываю программу часов. Программа позволяет: 1. Использовать системное время и дату, 2. Есть возможность вводить время и дату вручную. 3. Реализованы 2 будильника: начало и конец рабочего дня. . . .
Часы с будильником на основе класса QLCDNumber
Uhbif79 12.08.2026
Всем добрый день, выкладываю программу часов с будильником на основе класса QLCDNumber. Здесь я пробовал самостоятельно создавал классы, впервые столкнулся с видимостью переменной одного класса из. . .
Установка MinGW GCC 16.2 и CMake
8Observer8 10.08.2026
VK Видео: https:/ / vkvideo. ru/ video-240781534_456239017 YouTube: eY5-5PyI9NM Текстовая версия
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru