Pull to refresh
43
0
Дмитрий Андреев @kemko

DevOps engineer

Send message

Генерация уникального идентификатора пользователя средствами Nginx

Reading time5 min
Views14K
Приветствую Вас, хабрачитатели!

Расскажу об одной задачке, которая встала передо мной, и как я ее решил.

Сразу оговорюсь — часовой поиск в G и в Я удовлетворяющего результата не принес, но за следующий час было реализовано собственное решение.

Все это пока не более чем эксперимент — есть белые пятна как в идеи, так и в реализации, на данном этапе нужно понять жить или не жить.


Суть задачи сводилась к тому, что мне требовалось уникально идентифицировать посетителя в независимости от природы и вероисповедания компонентов системы (Web-проект). Причем сделать это максимально просто, быстро и без большого оверхеда по быстродействию.
Важно заметить, что авторизация пользователя по логину/паролю или еще как не производится.

В качестве веб-сервера и первичного балансировщика нагрузки у меня имеется Nginx.

В моей системе для php используетcя php-fpm через fastcgi, так же через fastcgi работает c++ сервер бизнес логики.

Читать дальше →
Total votes 38: ↑36 and ↓2+34
Comments33

Мониторинг прогнозированием, оповещения о потенциальном сбое

Reading time6 min
Views5.4K

Этот пост является продолжением предыдущего. Мониторинг прогнозированием – не стандартный метод мониторинга. Поэтому и оповещения необходимо использовать не совсем стандартные. Рассмотрим, как это делается и почему именно так.
Читать дальше →
Total votes 26: ↑26 and ↓0+26
Comments17

Почти линейное увеличение производительности bzip2 на многопроцессорных системах

Reading time2 min
Views17K
В Linux часто используется сжатие с помощью gzip и bzip2. Они оба обеспечивают хорошую плотность сжатия, и удобны в использовании. При этом bzip2 сжимает большинство файлов эффективнее — но, с другой стороны, работает медленнее, чем более традиционные gzip или zip.

Но можно получить эффективность bzip2, при этом существенно увеличив скорость. Речь идёт об утилите pbzip2 — Parallel BZIP2. В обычном случае при использовании bzip2 задействуется только одно процессорное ядро, в то время как на современных системах их может быть 2, 4, или, например, 8.

Pbzip2 может использовать сразу несколько процессорных ядер, что приводит, по заявлению авторов, к почти линейному увеличению производительности. Сжатые файлы, которые создаёт pbzip2, полностью совместимы с bzip2 1.0.2 и более новыми версиями bzip2 (также есть утилита pigz, которая, в свою очередь, является многопоточной реализацией gzip — спасибо altexxx).

Ниже результат тестирования скорости сжатия участка SQL-файла размером 1000M (dd if=dump.sql of=testfile bs=1M count=1000) на компьютере с двумя процессорами Intel Xeon E5520 (4 ядра, 8 потоков, тактовая частота 2,26 ГГц):

Результаты тестирования

Как видно из результатов тестирования, pbzip2, работающий в 4 потока, приблизительно в 3,6 раз быстрее, чем bzip2, работающий в один поток — что действительно является почти линейным увеличением производительности.

При этом pbzip2, работающий в 16 потоков, оказался медленнее, чем pbzip2, использующий 4 потока — вероятно, из-за скорости выполнения операций ввода/вывода. Также смотрите дополнительные тесты в комментариях (спасибо tristan и bliznezz) — в том числе, с использованием tmpfs-раздела в оперативной памяти.

Используется pbzip2 примерно так же, как и просто bzip2, но есть некоторые дополнительные функции, например вывод прогресса выполнения операции в процентах.

Читать дальше →
Total votes 58: ↑51 and ↓7+44
Comments17

Мониторинг прогнозированием с помощью rrdtool, как это делается

Reading time7 min
Views17K


Введение


Недавно я описывал созданную мной систему мониторинга транзитного VoIP методом прогнозирования. Самым сильным плюсом данного метода в задаче мониторинга транзитного VoIP является то, что нет необходимости выставлять критерии того, что считать нормальной работой величин, находящихся под мониторингом, а что – потенциальным сбоем.
Ядром системы является rrdtool, в котором реализованы прогнозирование методом Хольта-Винтерса и механизм выявления аберраций.
Мониторинг методом прогнозирования можно использовать не только для VoIP, но и для любого другого типа трафика, а так же, для величин, которые изменяются во времени с некой прогнозируемой цикличностью. В отличие от стандартных методов, при мониторинге с помощью прогнозирования не осуществляет мониторинг состояния величин, находящихся под мониторингом, зато осуществляется мониторинг динамики изменения их состояний во времени.
Если вам интересна математика прогнозирования рекомендую прочесть. Чтобы быть хоть немного в курсе темы, прочтите главу “Метод прогнозирования реализованный в rrdtool” моего предыдущего поста.
Читать дальше →
Total votes 39: ↑39 and ↓0+39
Comments13

Двухфакторная аутентификация на домашнем серваке — быстро, дёшево, дружелюбно

Reading time3 min
Views16K
Двухфакторная аутентификация — предоставления информации от двух различных типов аутентификации информации [»]

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



Это как если бы на дверь поставили второй замок. Ключ к первому — обычный пароль. Ко второму — действующий в течение 30 секунд одноразовый код. Попасть за дверь можно только если оба ключа окажутся правильными, а не один, как было раньше.

С некоторых пор Google сделала доступной двухфакторную аутентификацию в своих сервисах. Теперь токен переехал в ваш мобильный телефон с Android'ом! iPhone и Blackberry тоже сгодятся в такой роли. Очень удобно. Опробовав на Gmail, мне захотелось такую же штуку сделать у себя, тут-то я внезапно и нашёл libpam-google-authenticator.
Читать дальше →
Total votes 92: ↑89 and ↓3+86
Comments29

Поддержка мышки в Midnight Commander запущенного из под tmux/screen

Reading time1 min
Views9.9K
в топике про tmux был поднят вопрос о неработоспособность мыши в случае когда mc запущен в сессии tmux либо screen.

После небольшого исследования функции init_xterm_support, выяснилось что включить поддержку мыши, не прибегая к пересборке mc, можно прямо сейчас, достаточно «правильно» (как того ожидает mc) установить переменную COLORTERM.

image

Таким образом, если вам необходимо чтобы мышь работала в обычном режиме, поместите следующие строки в файл ~/.profile

if [ $TERM = "screen" ]; then
    export TERM=xterm
fi
if [ -n "$TMUX" ]; then
    export COLORTERM=rxvt
fi


Так же отследить решение проблемы можно будет в соответствующем тикете вот тут www.midnight-commander.org/ticket/2479

PS: Буду рад если кому то данная информация пригодится…

UPD: забыл добавить что желательно добавить в ~/.tmux.conf
следующую строку.
setw -g xterm-keys on


если этого не сделать то сочетание shift-стрелки, shift-Fx работать не будут…
Total votes 51: ↑47 and ↓4+43
Comments12

Скрипт резервного копирования vps серверов

Reading time1 min
Views13K
В связи с событиями у Clodo, выкладываю свой скрипт для резервного копирования. Очень подходит для небольших vps. Заточен для Ubuntu, но думаю, это не проблема.

Скрипт создает 2 архива: в одном файлы, в другом директория с дампами всей БД по базам.
Нужно поменять настройки в начале.
Читать дальше →
Total votes 28: ↑22 and ↓6+16
Comments39

Webasyst: открытый PHP-фреймворк для создания бизнес-приложений

Reading time2 min
Views2.1K
Хочу рассказать о проекте, который мы недавно выпустили.

Это открытый PHP-фреймворк для разработки бизнес-приложений: приложений, у которых есть бекенд, закрытый авторизацией, и к которым одновременно подключаются много пользователей с разграниченными правами доступа.



Фреймворк называется Webasyst, написан на PHP/MySQL/Smarty/jQuery, бесплатный, с открытым кодом (лицензия LGPL).

Немного подробнее под катом
Total votes 68: ↑55 and ↓13+42
Comments47

svnconfbackup: скрипт для резервного копирования конфигурационных файлов

Reading time7 min
Views3.8K
Несколько лет назад передо мной встала задача резервного копирования конфигурационных файлов. Да не простого, а такого, чтоб в любой момент можно было бы просмотреть что и когда изменилось. Я знал о существовании csvbackup, но хотелось свой скрипт, с Subversion и без Perl'а.
Читать дальше
Total votes 10: ↑7 and ↓3+4
Comments2

Сервер на стероидах: FreeBSD, nginx, MySQL, PostgreSQL, PHP и многое другое

Reading time16 min
Views40K
Нравится мне эта картинка, у меня, вот никогда такие красивые графики в какти не получались =(

Введение


С момента написания мной предыдущей статьи по оптимизации этой связки прошло довольно много времени. Тот многострадальный Pentium 4 c 512Мб памяти, обслуживающий одновременно до тысячи человек на форуме и до 150,000 пиров на трекере уже давно покоится на какой-нить немецкой, свалке, а клуб сменил уже не один сервер. Всё сказанное в ней всё ещё остаётся актуальным, однако есть вещи которые стоит добавить.
Статья большая, так что будет поделена на логические блоки:

0. Зачем вообще что-то оптимизировать?
  
1. Оптимизация ОС (FreeBSD)
  1.1 Переход на 7.х 
  1.2 Переход на 7.2
  1.3 Переход на amd64
  1.4 Разгрузка сетевой подсистемы
  1.5 FreeBSD и большое кол-во файлов
  1.6 Softupdates, gjournal и mount options
  
2. Оптимизация фронтенда (nginx)
  2.1 Accept Filters
  2.2 Кеширование
  2.3 AIO
  
3. Оптимизация бэкенда
  3.1 APC
  3.1.1 APC locking
  3.1.2 APC hints
  3.1.3 APC fragmentation
  3.2 PHP 5.3
  
4. Оптимизация базы данных
  4.1 MySQL 
  4.1.1 Переход на 5.1
  4.1.2 Переход на InnoDB
  4.1.3 Встроеный кеш MySQL - Query Cache
  4.1.4 Индексы
  
4.2 PostgreSQL
  4.2.1 Индексы
  4.2.2 pgBouncer и другие.
  4.2.3 pgFouine
  
4.3 Разгрузка базы данных
  4.3.1 SphinxQL
  4.3.2 Не-RDBMS хранилище
  4.4 Кодировки
  4.5 Асинхронность
  
Приложение. Мелочи.
  1. SSHGuard или альтернатива.
  2. xtrabackup
  3. Перенос почты на другой хост
  4. Интеграция со сторонним ПО
  5. Мониторинг
  
 6. Минусы оптимизации

Кому что-нибудь из этого списка интересно, жмём сюда...
Total votes 375: ↑368 and ↓7+361
Comments105

Скрипт для быстрого обзора информации о жёстких дисках

Reading time1 min
Views3.8K
Решил поделится с хабрасообществом небольшим PHP скриптом, который немного экономит моё время.

Суть проблемы


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

Описание скрипта


Скрипт генерирует список всех жёстких дисков и их разделов. Для каждого раздела выделяется точка монтирования, свободное место на диске в процентах и общая ёмкость раздела. В последствии я добавил отображение текущей температуры жёсткого диска используя пакет hddtemp, как оказалось это очень помогает в определении эффективности охлаждения.

Читать дальше →
Total votes 75: ↑64 and ↓11+53
Comments58
2

Information

Rating
Does not participate
Location
Люберцы, Москва и Московская обл., Россия
Date of birth
Registered
Activity