Применение патчей для ускорения Ruby

Чтобы ускорить производительность Ruby в целом и фреймворка Ruby on Rails, применим набор патчей MRI-Ruby (https://github.com/skaes/rvm-patchsets).
Rvm уже установлен, если нет ставим по инструкции: http://nagg.ru/2015/08/ustanavlivaem-ruby-pri-pomoshhi-rvm

Патчи уже есть в основном репозитории Ruby, поэтому можно применять их сразу после установки.

Зависимости:

Потребуется стандартный набор средств разработки:

yum groupinstall 'Development Tools'

Также может потребоваться более свежая версия autoconf (=>2.67):

rpm -Uvh ftp://ftp.pbone.net/mirror/ftp5.gwdg.de/pub/opensuse/repositories/home:/monkeyiq:/centos6updates/CentOS_CentOS-6/noarch/autoconf-2.69-12.2.noarch.rpm

Как включить протоколирование DEADLOCK в MySQL?

В основном, я всем советую использовать Percona вместо MySQL, это более быстрый форк, если выразиться кратко. Далее, как обычно, дело идет за тюнингом БД, но об этом я расскажу в других статьях, сейчас остановимся на протоколировании DEADLOCK, потому как дедлоки могут принести много проблем при работе вашего сайта.

Если у нас используется Percona, то ставим pt-deadlock-logger:

wget percona.com/get/percona-toolkit.rpm
yum localinstall percona-toolkit-2.2.4-1.noarch.rpm

Подключаемся к MySQL и создаем таблицу deadlocks в базе test:

mysql> use test;
mysql> CREATE TABLE deadlocks (
        server char(20) NOT NULL,
        ts datetime NOT NULL,
        thread int unsigned NOT NULL,
        txn_id bigint unsigned NOT NULL,
        txn_time smallint unsigned NOT NULL,
        user char(16) NOT NULL,
        hostname char(20) NOT NULL,
        ip char(15) NOT NULL, -- alternatively, ip int unsigned NOT NULL
        db char(64) NOT NULL,
        tbl char(64) NOT NULL,
        idx char(64) NOT NULL,
        lock_type char(16) NOT NULL,
        lock_mode char(1) NOT NULL,
        wait_hold char(1) NOT NULL,
        victim tinyint unsigned NOT NULL,
        query text NOT NULL,
        PRIMARY KEY  (server,ts,thread)
      ) ENGINE=InnoDB;
Query OK, 0 rows affected (0.00 sec)

Теперь запускаем pt-deadlock-logger:

pt-deadlock-logger localhost -uroot -p'password' --dest D=test,t=deadlocks --daemonize --run-time 12h --interval 30s

За более подробной документацией можно обратиться на оффициальный сайт: http://www.percona.com/doc/percona-toolkit/2.1/pt-deadlock-logger.html

Как измерить производительность диска в Linux?

В данной статье я расскажу как измерять IOPS на вашем сервере.
IOPS – это количество операций ввода-вывода, выполняемых системой хранения данных, за одну секунду. Один из параметров, используемых для измерения производительности жестких дисков. Для измерения IOPS можно воспользоваться утилитой fio

Устанавливаем:

yum install fio

Cоздаем конфигурационные файлы для тестирования.

Устанавливаем Ruby при помощи rvm

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

curl -L https://get.rvm.io | bash

Важно! Пользователей, под которыми будут запускаться unicorn (ruby) включаем в группу rvm

Просмотр доступных версий руби:

rvm list known

Установка нужной версии:

rvm install 2.0.0

Включение нужной версии:

rvm use 2.0.0

Монтирование образов KVM и доступ к файлам

Система виртуализации KVM радикально отличается от OpenVZ, если в случае OpenVZ при утере пароля root вы можете легко его сбросить (просто зайдя в контейнер с помощью vzctl enter CTID), то в случае с KVM все сложнее, поэтому и решил дополнить данной статьей раздел сайта http://nagg.ru

Самое главное, чтобы получить доступ к файлам KVM с физической ноды, нужно установить некоторые пакеты:

yum install libguestfs-tools libguestfs

Не рискуй – делай бэкап! BackupSpace – место для вашего бэкапа

Друзья, рады сообщить вам о новом сервисе https://backupspace.ru/ – хостинг бэкапов.

Это надежное хранилище данных, расположенное на дисковых массивах (RAID10).

Вы можете быть уверены в надежности ваших данных, так как для данной услуги мы используем исключительно диски Enterprise-класса.

Хранилище подключено к коммутатору выделенным портом 10 Гбит/с.

У нас самые низкие цены!

Exim: как вывести список IP из файла(ов)

Если вам срочно надо посчитать список IP из файла (в моем примере это письма в почтовом ящике и логи почтового сервера), то можно использовать следующие команды или написать скрипт:

cat /tmp/spam/* | perl -ne 'if (/(\d{1,3})\.(\d{1,3})\.(\d{1,3})\.(\d{1,3})/) { print "$1.$2.$3.$4\n" }'

Выведет список всех IP:

195.244.144.2
78.153.0.60
37.9.53.72
194.225.24.191
195.244.144.2
78.153.0.60
37.9.53.72
194.231.200.245
195.244.144.2
87.237.206.37
127.0.0.1
91.222.7.10
188.234.174.163
195.244.144.2
187.19.146.2
109.195.109.233

Exim: сколько писем отправлено за день

Проверьте что у вас ротация логов настроена раз в сутки или сделайте выборку из лога за последние сутки, а потом примените простую команду:

awk '/<=/ {print $3}' /var/log/exim/main.log | wc -l

Mysql error : Can’t create new tempfile: ‘*.TMD file

Если вы видите данную ошибку и команда repair table не помогает, то настало время починить таблицу иным способом:

myisamchk -f -r /var/lib/mysql/database/table.MYI

Скрипт тестирования производительности БД MySQL

В последнее время особенно актуально встает вопрос – оптимально ли настроена БД, особенно на движках Битрикс где есть встроенная панель производительности, мы можем получить замеры не только БД но и других компонентов системы.
Недавно встал вопрос – есть ли какой-нибудь скрипт, который подобно Битрикс выдаст оценку производительности БД? Такой скрипт есть, написан он на PHP и он вполне рабочий: