• Борьба с одновременным перестроением кеша с помощью RED

      Описание проблемы


      Представим среднестатистический высоконагруженный сайт. Обычно на таких сайтах между backend'ом и DB ставят прослойку кеша. С увеличением количества посетителей, вероятность того, что несколько пользователей одновременно наткнутся на "протухший" кеш увеличивается. Если такое случается, то нагрузка на backend и DB возрастает, что в свою очередь увеличивает время обработки запроса и увеличивает вероятность возникновения подобной ситуации. Вот такая вот система с положительной обратной связью:Маленькие красные горбики — это "затупившие" на множественном обновлении кеша запросы. Эта статья будет описывать один из подходов к решению проблемы на примере(patch attached) связки PHP/APC, однако теоретическая база применима к любому языку и системе кеширования.
      Читать дальше →
    • О сетях: всего понемногу

        Недавно у нас были небольшие обучающие курсы для повышения нашей компетенции в сетевой части нашей инфраструктуры. Основную идею этих курсов, покрывающую OSPF/BGP/MPLS я тут повторять не буду ибо:
        • Пока ещё явно недостаточно компетентен.
        • Есть много более объективные ресурсы рассказывающие об этих темах.

        Так что тут я опишу интересные около-сетевые моменты которые были затронуты в процессе обучения. Часть из этого может показаться вам банальным, однако постараюсь компенсировать возможную скуку при прочтении обилием ссылок на дополнительные материалы

        Ссылки на вики зачастую более примечательны секциями «External links» и «References» нежели самим содержанием

        Читать дальше
      • Уязвимость связки PHP+nginx с кривым конфигом

          Summary


          Announced: 2010-05-20
          Credits: 80sec
          Affects: сайты на ngnix+php с возможностью загрузки файлов в директории с fastcgi_pass




          Background


          Зачастую How-To по настройке связки nginx с php-fpm / php-cgi есть подобные строчки:

          location ~ \.php$ {
              fastcgi_pass 127.0.0.1:9000;
              fastcgi_index index.php;
              fastcgi_param SCRIPT_FILENAME /scripts$fastcgi_script_name;
              include fastcgi_params;
          }
          

          Читать дальше →
        • Chef или как управлять тысячей серверов

            Suck on my chocolate salty balls (c) ChefДавайте каждый попробует ответить на вопрос: как установить apache на сервер? Этот вопрос порождает ещё десяток: какая ОС стоит на сервере, какую версию ставить, где лежат конфиги по-умолчанию и т.д. и т.п.

            А теперь давайте попробуем ответить на вопрос: как установить apache на 1000 серверов? Тут, при стандартном подходе, вопросов возникнет ровно в 1000 раз больше. Часть из вас наверняка подумали, что можно написать скрипт на shell/perl/python/ruby, который будет обходить все сервера и устанавливать apache, другая часть подумала о distributed shell'ах (PDsh, dsh, etc), кто-то же подумал монтировать rootfs серверов по NFS.

            В ряде случаев выше предложенные варианты решений удовлетворительны, но на практике я нигде не видел полностью гомогенных систем (зачастую, внутри компании можно встретить не только разные версии ОС, но и различные дистрибутивы. Также в России/СНГ очень распространена каша из FreeBSD/Linux в ядре проектов), так что вряд ли за адекватное время будет возможно написать скрипт, который установит и настроит apache на зоопарке в 1000 машин под CentOS, Debian, Ubuntu, FreeBSD всевозможных версий.

            По моим наблюдениям, очень мало IT подразделений, даже очень крупных компаниий, используют в своей работе SCM (Software Configuration Management). В этом посте я постараюсь описать все преимущества использования Chef в IT инфраструктуре на простых примерах и больших масштабах.

            Если же, после столь короткого вступления, вы не прониклись идеей Chef, да и времени читать длинный технический пост у вас нет, то рекомендую вам пролистать до конца и посмотреть как используем Chef мы, Engine Yard, 37signals и подумать, можете ли вы переложить на него часть своей работы.
            Читать дальше →
          • GPFS. Часть 2. Эксплуатация GPFS кластера

              IBM GPFSВ продолжение моего предыдущего поста о настройке GPFS-кластера, как и обещал, перехожу к описанию весьма распространённых ситуаций, с которыми можно столкнуться при работе с GPFS.




              Читать дальше →
            • GPFS. Часть 1. Создание GPFS кластера

                GPFS (General Parallel File System)

                После одной из моих последних статьей на хабре про серверную оптимизацию мне прислали множество вопросов про распределенные файловые системы. И теперь я нашел в себе силы и возможности написать про замечательную кластерную файловую систему GPFS.

                Описание тестовой лаборатории:
                • Сервер виртуализации Xen. Dom0 под SLES11
                • 3 Xen DomU виртуальных сервера под quorum-ноды с двумя дополнительно проброшенными блочными устройствами
                • 2 Xen DomU виртуальных сервера под client-ноды

                Тестовый стенд, основанный на технологии Xen, крайне удобен, ибо позволяет на ходу подцеплять/отцеплять диски от виртуалок, добавлять в них память и процессоры.

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

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

                  Введение


                  С момента написания мной предыдущей статьи по оптимизации этой связки прошло довольно много времени. Тот многострадальный 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. Минусы оптимизации

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

                    image

                    Сисадмины делятся на тех, кто не делает бэкапы, и тех кто, их уже делает =)

                    Про то как восстанавливать файлы с ext3 / ufs написана не одна статья, так что не буду повторятся и напишу про не самые широко известные способы восстановления конфигов на продакшн сервере.

                    Читать дальше →
                  • Основы IPv6

                      Предисловие


                      Пост является кратким конспектом Wiki, TechNet'а, FreeBSD'шного handbook'a, Serverfault'a, множества RFC и документов IANA, а также курсов от Специалист.Ру для сотрудников Яндекса.

                      Пост можно рассматривать как копилку ссылок по актуальной на 2012 год спецификации IPv6. Однако он никак не описывает возможные способы установки IPv6 соединения с интернетом и не привязан к какой-либо определённой ОС.
                      Учтите, что прочтение данной хабрастатьи займёт у вас не более получаса, однако крайне рекомендуется ознакомиться со всеми приведёнными в статье ссылками… Последнее может занять несколько недель.
                      Читать дальше →