logrotate зависает в STAT D

По неизвестной причине logrotate перестал удалять старые архивы журналов, в результате образовалась директория размером в 160M и logrotate просто зависал в STAT D (ожидание системы ввода/вывода), отъедая весь процессор и большую часть оперативной памяти.
Удалил директорию через rm -r, удалялось часа 4.
logrotate продолжал виснуть, но теперь уже в STAT R, спотыкаясь на ротации btmp. Помогла очистка/var/lib/logrotate/status

rm /var/lib/logrotate/status && touch /var/lib/logrotate/status

Причина такого поведения, к сожалению, так и неизвестна, конфиги в /etc/logrotate.d/ верные.

Sysstat мониторинг производительности системы

sysstat — удобная утилита для измерения и анализа производительности системы. Можно получить доступ к системным характеристикам (загруженность процессора, i/o wait, использование памяти и прочее) указав в качестве параметра временной интервал, например статистику за последний день можно получить так.

sar -u
Linux 2.6.32-5-686 (debian.server)    21.11.2013      _i686_  (1 CPU)
13:05:01        CPU     %user     %nice   %system   %iowait    %steal     %idle
13:15:01        all      1,55      0,00      0,46      0,62      0,00     97,36
13:25:01        all      1,30      0,00      0,45      0,45      0,00     97,80
13:35:01        all      2,98      0,00      0,58      0,69      0,00     95,75
13:45:01        all      1,78      0,00      0,50      0,65      0,00     97,07
13:55:01        all      1,23      0,00      0,46      0,53      0,00     97,78
14:05:01        all      3,24      0,00      3,36      1,59      0,00     91,81
14:15:01        all      1,83      0,00      0,51      0,74      0,00     96,92
Среднее:        all      1,99      0,00      0,90      0,75      0,00     96,36

Читать далее Sysstat мониторинг производительности системы

django-simple-history трекинг истории изменения объекта

В джанго есть встроенный трекер истории, но он не позволяет откатиться на предыдущее состояние. Решить эту задачу можно с помощью удобного инструмента django-simple-history.

pip install django-simple-history

В settings.py

INSTALLED_APPS = (...
    'simple_history',
...)

В models.py

from simple_history.models import HistoricalRecords
class Product(models.Model):
    ...
    history = HistoricalRecords()

Выполняем миграцию

./manage.py schemamigration <app_name> --auto
./manage.py migrate <app_name>

Далее в admin.py

from simple_history.admin import SimpleHistoryAdmin
class ProductAdmin(SimpleHistoryAdmin, admin.ModelAdmin):
    ...
admin.site.register(Product, ProductAdmin)

Теперь при нажатии на кнопку «История» объекта можно откатиться на выбранную ревизию.