Оказывается, в shell есть команда для построения графика изменения la с течением времени – tload
Результат – 
А я всё по старинке пользовался top-ом).
http://linux.about.com/library/cmd/blcmdl1_tload.htm
Работал раньше сайт с memcache.
Решили перейти на memcached.
И повалились ошибки SERVER HAS FAILED AND IS DISABLED UNTIL TIMED RETRY, причём сначала одна CLIENT ERROR, а уже потом куча SERVER HAS FAILED AND IS DISABLED UNTIL TIMED RETRY.
Гугление ничего не дало, а проблема оказалась в следующем: первая ошибка возникала из-за некорректного ключа (пробел в названии ключа), после чего сервер расстраивался, и больше ничего делать не давал.
Ключ был следующий: info__rating DESC__1, генерился автоматически и никаких проблем при использовании его в memcache не вызывал. Понятное дело, что ключ плохой, но это не мешало другому расширению успешно работать.
А решение применили банальное: $Key = str_replace( ‘ ‘, ‘_’, $Key );, теперь вроде работает).
Окончательно все проблемы решила опция
$this->setOption( Memcached::OPT_BINARY_PROTOCOL, true );
После этого лог ошибок стал пустым.
Коллега, который этим вопросом плотно занимается, считает, что это оттого, что по умолчанию протокол используется plain text (а именно, ascii), и UTF-символы интерпретируются неправильно (у нас ферма из нескольких машин, и на каждой окружение несколько отличается, к сожалению). И как только включили бинарный протокол, разногласия исчезли.
function __construct()
{
parent::__construct();
$this->setOption( Memcached::OPT_BINARY_PROTOCOL, true );
$this->setOption( Memcached::OPT_DISTRIBUTION, Memcached::DISTRIBUTION_CONSISTENT );
$this->setOption( Memcached::OPT_HASH, Memcached::HASH_CRC );
$this->setOption( Memcached::OPT_SERVER_FAILURE_LIMIT, 3 );
$this->setOption( Memcached::OPT_NO_BLOCK, true ); // асинхронный ввод-вывод
$this->setOption( Memcached::OPT_TCP_NODELAY, true ); // при работе с сокетами надо потестить - может ускорить работу
$this->connection = $this->addServers( array( array( <хост>, <порт> ) ) );
...
}
При использовании ключа:
...
$key = str_replace( array( ' ', ',', ':' ), '_', $key );
if ( strlen($key) > 220 ) {
$key = md5( $key );
}
...
$limit = 512;
$thresholdDelta = 10;
ini_set('memory_limit', $limit . 'm');
...
$memoryThresholdReached = false;
$memoryThreshold = ( $limit - $thresholdDelta ) * 1024 * 1024;
...
while ( $user = $db->plain_fetch( $result ) )
{
...
// тут работа с данными
...
// проверка на превышение опасного порога использования памяти
if ( ! $memoryThresholdReached && memory_get_usage( true ) > $memoryThreshold )
{
$memoryThresholdReached = true;
try {
throw new SystemException( 'Превышен порог использования памяти...' );
}
catch ( Exception $e ) {}
}
}
Более серьёзные способы – просмотр стека (strace -f -p $pid) и дебаг php C-шным дебаггером DBG.
Сбойнул один старый скрипт и написал он много маленьких (2-3 кб) файлов в одну директорию.
Посмотрел я, сколько файлов оказалось, командой для подсчёта количества файлов в директории
ls -1 | wc -l
Оказалось файлов таких за миллион.
На эти файлы смотрел скрипт демонский, который по ним рассылал почты много.
Решил я эти файлы из директории той убрать (чтоб пользователей не расстраивать, а данные сохранить)
ls *.eml -1 | xargs -I {} mv {} ./fuckup/{}
но не разрешил мне линукс сделать этого (bash: /bin\/ls: Argument list too long).
Пришлось сделать так:
ls -1 | xargs -I {} mv {} ./fuckup/{}
Понадобилось восстановить бэкап mysql размером примерно в гигабайт.
Всякие phpMyAdmin даже сжатый файл кушать отакзываются – ограничение по размеру, а доступа к настройкам нет.
Нашёл хороший способ – в командной строке
mysql mysql>use database <>; mysql>source path/to/backup_file.sql;
Очень быстро и хорошо)
http://forums.mysql.com/read.php?104,145923,148081#msg-148081
Вывод всех портов и программ, которые их слушают:
netstat -anp | grep "LISTEN "
Запустить новый проект
Перед запуском надо записать изменения в базу данных:
python manage.py syncdb
Также можно проверить на ошибки:
python manage.py validate
Запустить проект:
python manage.py runserver
Кстати, тут много про запуск Django в продакшн-окружении.
Проверяем, есть ли SSH
$ ssh -v
Генерируем ключик
$ ssh-keygen
Для пользователей Ubuntu для доступности ключа
chmod 644 ~/.ssh/id_rsa.pub ssh-agent bash ssh-add
Всё)
Ссылка на оригинал
Всё просто – нужно его сгенерировать и дописать конфиг – подробнее:
http://wiki.enchtex.info/howto/nginx_ssl
Для использования в связке с php-fpm нужно указать:
fastcgi_param HTTPS on;
Командой sudo fdisk -l узнаём названия разделов, к примеру
Устр-во Загр Начало Конец Блоки Id Система /dev/sda1 * 1 8924 71681998+ 7 HPFS/NTFS /dev/sda2 8925 19215 82655250 5 Расширенный Раздел 2 не заканчивается на границе цилиндра. /dev/sda4 19215 19458 1952768 83 Linux /dev/sda5 8925 15452 52436128+ 7 HPFS/NTFS /dev/sda6 18607 19215 4882432 83 Linux /dev/sda7 17512 17877 2929664 82 Linux своп / Solaris /dev/sda8 17878 18073 1574336+ 83 Linux /dev/sda9 18074 18606 4281291 83 Linux /dev/sda10 16194 17511 10585088 83 Linux
Находим свой любимый NTFS-раздел.
Далее правим файл /etc/fstab – добавляем строку (для раздела /dev/sda5)
/dev/sda5 /media/d ntfs-3g defaults 0 0
Не забыть в конце файла пустую строку.
После чего перезагружаемся – всё лежит там, где бы мы хотели.
Подмонтировать сразу можно командой sudo mount -a.