ImageMagick и высокая нагрузка при обработке изображений

При обработке изображений с помощью ImageMagick CPU загружен на 100%, это баг в основных сборках, собранных с параметром –enable-openmp.

Проверяем (OpenMP означает что версия собрана с –enable-openmp):

convert --version
Version: ImageMagick 6.8.7-4 2013-11-02 Q16 http://www.imagemagick.org
Copyright: Copyright (C) 1999-2013 ImageMagick Studio LLC
Features: DPC OpenMP

Для решения проблемы, нужно собрать ImageMagick с опцией –disable-openmp, в результате вывод должен быть без OpenMP, также потребуется перезапустить все Ваши воркеры:

convert --version
Version: ImageMagick 6.8.9-0 Q16 x86_64 2014-06-25 http://www.imagemagick.org
Copyright: Copyright (C) 1999-2014 ImageMagick Studio LLC
Features: DPC Modules

Версию, собранную с опцией –disable-openmp для CentOs 6 можно найти в репозитарии: ImageMagick-last-6.8.9.0-2

OpenVZ: как настроить bridge с контейнером

Установка ПО на физическом сервере:

yum install bridge-utils

Создаем vmbr0 интерфейс:

brctl addbr vmbr0

Удаляем IP адрес с физического интерфейса eth1:

ifconfig eth1 0

Добавляем eth1 к мосту:

brctl addif vmbr0 eth1

Конфигурируем IP адрес на интерфейсе vmbr0:

ifconfig vmbr0 192.168.1.1

OpenSwan IPSec VPN Linux Cisco с контейнера OpenVZ

Данную статью пишу больше для себя, чтобы не забыть, ибо времени затрачено довольно много на решение этого вопроса. Для начала хочу отметить, что IPSec VPN не будет работать из контейнера OpenVZ, но будет работать с физического сервера, чего вполне достаточно, чтобы сеть за VPN была видна из Вашего контейнера OpenVZ.
Начнем с установки пакета OpenSwan, я рекомендую ставить отсюда: https://download.openswan.org/openswan/binaries/rhel/6/

rpm -Uhv https://download.openswan.org/openswan/binaries/rhel/6/openswan-2.6.38dr2-9.el6.x86_64.rpm

Желательно сразу иметь представление о схеме сети, понимать что именно Вам нужно. В текущем случае, мы объединяем в IPSec VPN внешний IP OpenVZ контейнера и подсеть за маршрутизатором Cisco.

Linux: защита скриптов от двойного запуска

У всех в повседневной работе присутствуют скрипты, которые выполняются довольно долго и запускаются по крону. Всегда есть риск, что запущенный по крону скрипт будет работать так долго, что придет время запуска его по крону и тогда скрипт запускается вновь, что создает серьезную нагрузку на сервер и вызывает различные проблемы.
На примере скрипта синхронизации контента я покажу как релизовать защиту от двойного запуска программ в linux системах.

Так выглядит сам скрипт:

#!/bin/sh

dt=`date +%c`

  echo $dt
  echo "Sync /srv/photo/ with web02"
  /usr/bin/rsync --numeric-ids -av --delete /srv/photo/ root@web02:/srv/photo/

Так выгляди защита от двойного запуска (добавляем в начало скрипта):

PATH="/sbin:/usr/sbin:/usr/local/sbin:/bin:/usr/bin:/usr/local/bin"                                                                                             

if pidof -x $(basename $0) > /dev/null; then
   for p in $(pidof -x $(basename $0)); do
   if [ $p -ne $$ ]; then
   echo "Script $0 is already running: exiting"
    exit
   fi
   done
fi

service X does not support chkconfig

Чтобы исправить данную ошибку, нужно сделать следующее (имя скрипта myscript):

cp /etc/init.d/myscript /tmp/
chmod +x /etc/init.d/myscript

Добавьте следующие записи в заголовок скрипта /etc/init.d/myscript:

#!/bin/sh
#
# chkconfig: 2345 95 20
# description: Some description
# What your script does (not sure if this is necessary though)
# processname: myscript

Включаем скрипт myscript в автозагрузку:

chkconfig myscript on

Профит!

What Is Kjournald and Why It’s Using 100% of I/O?

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

Очень часто проблема кроется в 100% утилизации дисковой подсистемы, тут либо мы упираемся в лимит производительности (см. IOPS), либо какой-то процесс стал активно использовать систему ввода/вывода. приступим к поиску проблемы.

Установим необходимое ПО:

yum install iotop sysstat -y

Поиск файлов измененных за последнее время

Если нам нужно найти все файлы в каталоге ‘/var’, созданные или изменённые в течении 1 дня:

find /var -type f -mtime -1

Найти файлы в каталоге ‘/var’, время последнего обращения к которым более 10 дней:

find /var -type f -atime +10

Найти файлы и директории с именем file_name. Поиск начать с корня (/)

find / -name file_name

Adaptec аппаратный RAID-контроллер

Один из самых распространенных и надежных аппаратных RAID-контроллеров Adaptec. В данной статье я опишу утилиту arcconf которая служит для управления контроллером из командной строки.
ASM (Adaptec Storage Manager) — графическая утилита.

Установка:

yum install -y compat-libstdc++-33
wget http://download.adaptec.com/raid/storage_manager/asm_linux_x64_v7_00_18781.tgz

Распаковываем, берем arconf и копируем ее в /usr/bin
Разрешаем запуск: chmod +x /usr/bin/arcconf

Включение смарт:

smartctl --smart=on --offlineauto=on --saveauto=on /dev/sg1

Состояние RAID можно получить следующей командой:

arcconf getconfig 1 ld

Полезные команды PostgreSQL

В наше время все чаще встречаются БД PostgreSQL, поэтому возможно кому-то будет полезно знать самые часто используемые команды для работы с этой БД.

Сделать дамп БД postgresql:

pg_dump -U postgres -c -O database > database.sql

Залить дамп БД postgresql (обязательно заливать БД под тем пользователем, под которым она доступна, иначе поломаются права):

psql -U dbusername database < database.sql

Просмотреть список всех БД в postgresql:

postgres=# \l

Nginx: просмотр директорий сайта

Иногда необходимо разрешить просмотр каталогов вашего сайта, в nginx для этого существует директива autoindex, по-умолчанию, она установлена в off, поэтому нам потребуется ее включить:

location / {
   root /www/mysite/htdocs;
   autoindex on;
}

Для веб сервера apache запрещает просмотр содержимого каталогов директива (вы можете ее добавить в файл .htaccess, либо в настройки виртуального хоста):

Options -Indexes