Как мы выстрелили себе в ногу и пытались разобраться, из чего именно

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

Так выглядит тестовый сайт на каждом сервере виртуального хостинга

Замеряется скорость и успешность ответа сайта. Любой сотрудник компании может посмотреть на общую статистику и увидеть, насколько хорошо идут у компании дела. Может увидеть процент успешных ответов тестового сайта по всему хостингу или по конкретному серверу. Не обязательно быть сотрудником компании – в панели управления клиенты тоже видят статистику по серверу, где размещён их аккаунт.

Мы назвали эту метрику uptime (процентное отношение успешных ответов от тестового сайта ко всем запросам к тестовому сайту). Не очень удачное название, легко перепутать с uptime-который-общее-время-после-последней-перезагрузки-сервера.

Лето прошло, и график uptime медленно ушёл вниз.


Администраторы сразу же определили причину – нехватка оперативной памяти. В логах легко было увидеть случаи OOM, когда на сервере кончалась память и ядро убивало nginx.

Руководитель отдела Андрей рукой мастера разбивает одну задачу на несколько и распараллеливает их на разных администраторов. Один идёт анализировать настройки Apache – возможно, настройки не оптимальные и при большой посещаемости Apache использует всю память? Другой анализирует потребление памяти mysqld – вдруг остались какие-либо устаревшие настройки с тех времён, когда виртуальный хостинг использовал ОС Gentoo? Третий смотрит на недавние изменения настроек nginx.

Один за другим администраторы возвращаются с результатами. Каждому удалось уменьшить потребление памяти в выделенной ему области. В случае nginx, например, был обнаружен включённый, но не используемый mod_security. OOM тем временем всё также часты.

Наконец, удаётся заметить, что потребление памяти ядром (в частности, SUnreclaim) страшно большое на некоторых серверах. Ни в выводе ps, ни в htop этот параметр не виден, поэтому мы не заметили его сразу! Пример сервера с адским SUnreclaim:
root@vh28.timeweb.ru:~# grep SU /proc/meminfo
SUnreclaim: 25842956 kB
24 гигабайта оперативной памяти отдано ядру, и ядро тратит их неизвестно на что!

Администратор (назовём его Гавриил) бросается в бой. Пересобирает ядро с опциями KMEMLEAK для поиска утечек.
Для включения KMEMLEAK достаточно указать опции, указанные ниже, и загрузить ядро с параметром kmemleak=on.
CONFIG_HAVE_DEBUG_KMEMLEAK=y
CONFIG_DEBUG_KMEMLEAK=y
CONFIG_DEBUG_KMEMLEAK_DEFAULT_OFF=y
CONFIG_DEBUG_KMEMLEAK_EARLY_LOG_SIZE=10000

KMEMLEAK пишет (в /sys/kernel/debug/kmemleak) такие строки:
unreferenced object 0xffff88013a028228 (size 8):
  comm "apache2", pid 23254, jiffies 4346187846 (age 1436.284s)
  hex dump (first 8 bytes):
    00 00 00 00 00 00 00 00                          ........
  backtrace:
    [<ffffffff818570c8>] kmemleak_alloc+0x28/0x50
    [<ffffffff811d450a>] kmem_cache_alloc_trace+0xca/0x1d0
    [<ffffffff8136dcc3>] apparmor_file_alloc_security+0x23/0x40
    [<ffffffff81332d63>] security_file_alloc+0x33/0x50
    [<ffffffff811f8013>] get_empty_filp+0x93/0x1c0
    [<ffffffff811f815b>] alloc_file+0x1b/0xa0
    [<ffffffff81728361>] sock_alloc_file+0x91/0x120
    [<ffffffff8172b52e>] SyS_socket+0x7e/0xc0
    [<ffffffff81003854>] do_syscall_64+0x54/0xc0
    [<ffffffff818618ab>] return_from_SYSCALL_64+0x0/0x6a
    [<ffffffffffffffff>] 0xffffffffffffffff
unreferenced object 0xffff880d67030280 (size 624):
  comm "hrrb", pid 23713, jiffies 4346190262 (age 1426.620s)
  hex dump (first 32 bytes):
    01 00 00 00 03 00 ff ff 00 00 00 00 00 00 00 00  ................
    00 e7 1a 06 10 88 ff ff 00 81 76 6e 00 88 ff ff  ..........vn....
  backtrace:
    [<ffffffff818570c8>] kmemleak_alloc+0x28/0x50
    [<ffffffff811d4337>] kmem_cache_alloc+0xc7/0x1d0
    [<ffffffff8172a25d>] sock_alloc_inode+0x1d/0xc0
    [<ffffffff8121082d>] alloc_inode+0x1d/0x90
    [<ffffffff81212b01>] new_inode_pseudo+0x11/0x60
    [<ffffffff8172952a>] sock_alloc+0x1a/0x80
    [<ffffffff81729aef>] __sock_create+0x7f/0x220
    [<ffffffff8172b502>] SyS_socket+0x52/0xc0
    [<ffffffff81003854>] do_syscall_64+0x54/0xc0
    [<ffffffff818618ab>] return_from_SYSCALL_64+0x0/0x6a
    [<ffffffffffffffff>] 0xffffffffffffffff


Гавриил не раскрыл нам всех своих тайн и не рассказал, как он из вышеуказанных строк выяснил точную причину утечки памяти. Скорее всего, он использовал команду addr2line /usr/lib/debug/lib/modules/`uname -r`/vmlinux ffffffff81722361 для поиска точной строки. Или просто открыл файл net/socket.c и смотрел на него, пока файлу стало неуютно.

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

Дальше было просто – Гавриил поправил патч и пересобрал ядро. Добавил мониторинг значения SUnreclaim на всех серверах под ОС Linux. Инженеры предупредили клиентов и перезагрузили хостинг в новое ядро.
OOM исчезли.

Но проблема с доступностью сайтов осталась
На всех серверах тестовый сайт несколько раз в день переставал отвечать.

Здесь автор начал бы рвать волосы на разных частях тела. Но Гавриил сохранял спокойствие и включил запись трафика на части хостинговых серверов.

В дампе трафика было видно, что чаще всего запрос к тестовому сайту падает после внезапного получения пакета TCP RST. Другими словами, запрос до сервера доходил, но соединение в итоге разрывалось со стороны nginx.
Дальше ещё интереснее! Запущенная Гавриилом утилита strace показывает, что демон nginx не отправляет этот пакет. Как такое может быть, ведь только nginx слушает 80-й порт?
Причиной оказалась совокупность нескольких факторов:
  • в настройках nginx указана опция reuseport (включающая опцию сокета SO_REUSEPORT), позволяющая разным процессам принимать соединения на одинаковом адресе и порту
  • в (на тот момент, самой новой) версии nginx 1.13.0 есть баг, из-за которого при запуске теста конфигурации nginx через nginx -t и использовании опции SO_REUSEPORT этот тестовый процесс nginx действительно начинал слушать 80-й порт и перехватывать запросы реальных клиентов. И при завершении процесса теста конфигурации клиенты получали Connection reset by peer
  • наконец, в мониторинге заббикса был настроен мониторинг корректности конфигурации nginx на всех серверах с установленным nginx: команда nginx -t вызывалась на них раз в минуту.
Только после обновления nginx можно было выдохнуть спокойно. График uptime сайтов пошёл вверх.

Какая мораль у всей этой истории? Сохраняйте оптимизм и избегайте использования самостоятельно собранных ядер.

timeweb.com/ru/

Ruvds присоединился к халве


RUVDS предоставил возможность клиентам получить рассрочку по карте “Халва” (ПАО «Совкомба́нк»). Облачный провайдер дает держателям карт “Халва” уникальные условия пользования виртуальными серверами VPS/VDS во всех точках присутствия RUVDS в Москве, Лондоне или Цюрихе.
Держатели карт “Халва” получат рассрочку по платежам на все услуги хостинг-провайдера на 3 месяца без переплаты и без процентов.

RUVDS стала первой компанией, предоставляющей услуги IAAS, присоединившейся к партнерской программе “Халва”. По словам управляющего партнера RUVDS Никиты Цаплина, теперь любой желающий может приобрести виртуальный сервер в рассрочку и воспользоваться современной облачной инфраструктурой. Данная услуга поможет при запуске стартапа, когда у компании еще нет собственных средств на покупку серверов и создание своей инфраструктуры.

Справка:
ПАО «Совкомба́нк» — российский универсальный коммерческий банк с головным офисом в Костроме. Входит в двадцатку крупнейших банков России по активам.
RUVDS российский хостинг-провайдер VPS серверов, специализирующийся на оказании услуг IAAS корпоративного класса. Партнерами компании являются АО «ФИНАМ», финансовая группа «БКС», Национальный расчетный депозитарий (Московская биржа), АО «ВЦИОМ», компания «Гарс-Телеком», оператор такси Gett, оператор доставки Delivery Club и многие другие.
Компания RUVDS обладает собственным дата-центром уровня TIER 3 в г. Королеве, Московская область, а также гермозонами в дата-центрах в Цюрихе Interxion ZUR1 (Швейцария), Лондоне Equinix LD8 (Великобритания), и ММТС-9 (Москва, Россия).

ruvds.com
sovcombank.ru

Общайтесь с техподдержкой KeyWeb.Ru через Viber



Компания KeyWeb.Ru всегда заботилась о своих клиентах, о их времени и удобстве пользования всеми нашими сервисами!

Сейчас, идя в ногу со временем и выслушав предложения клиентов, мы разработали новый сервис для ещё более продуктивного сотрудничества и удобства общения с вами! Теперь для решения возникших вопросов вам нужен только мобильный телефон с установленным мессенджером Viber!

Общение в техподдержкой KeyWeb.Ru через Viber даст вам возможнось решать возникшие вопросы удобно и оперативно. При возникновени вопроса вам нужно просто написать нам в Viber и тикет будет создан автоматически.

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

Присоединяйтесь к тестированию нового сервиса с 12.11.2018 по 12.12.2018.

Для нас очень важно ваше мнение и обратная связь, поэтому команда KeyWeb.Ru ждёт ваших отзывов и предложений по данному сервису!

Приятного пользования и до встречи в чате!

Подписаться на канал, Вы сможете в личном кабинете по следующей ссылке.

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

keyweb.ru

Виртуальный сервер CPU 2; RAM 2Gb; 60Gb


Виртуальный сервер (CPU 2; RAM 2Gb; 60Gb) по специальной цене
+ Поддержка http/2 и бесплатных SSL Let's Encrypt
+ Перенос ваших сайтов — БЕСПЛАТНО!
Специальная цена 400 рублей в месяц
Промокод: VPS-2_TN1118
Внимание! Акция действует с 12.11.2018 по 18.11.2018
www.trustednetwork.ru

Уважаемые клиенты!


На сервере s1.lealhost.com запланирована замена сетевого кабеля в 13:00 по московскому времени. Так как замена кабеля относится к горячей замене, перезапуск сервера не потребуется. Однако, сеть может быть недоступна в течение нескольких секунд.

Всем клиентам сервера была добавлена компенсация: 5 дней к активным хостинг-аккаунтам.
Приносим извинения за неудобства.

Главные акции ноября: скидки на домены и подарки от REG.RU



Для ценителей искусства: домен .ART за 149 рублей
Зарегистрируйте лаконичный домен в перспективной зоне .ART всего за 149 рублей и расскажите всему миру о своём творческом проекте!
www.reg.ru/company/promotions/5145

Бесплатный SSL-сертификат при регистрации домена
Регистрируя домен на сайте REG.RU, вы получаете возможность подключить SSL-сертификат от GlobalSign в подарок и укрепить репутацию вашего онлайн-проекта без лишних затрат.
www.reg.ru/company/promotions/5063

Доменные имена для IT-проектов от 64 рублей!
Выберите оригинальный адрес для интернет-магазина, блога или корпоративного сайта по минимальной цене. Акция действует только до 31 декабря!
www.reg.ru/company/promotions/5123

Продление доменов .RU или.РФ — бесплатно!
При продлении хостинга на год и более вы можете бесплатно продлить домен в зоне .RU или.РФ. Экономьте по максимуму!
www.reg.ru/company/promotions/5153

ISPmanager 5 Lite на 1 месяц в подарок к VPS!
Закажите любой тарифный план VPS и получите 1 месяц бесплатного использования панели ISPmanager 5 Lite для удобного управления быстрым хостингом от REG.RU.
www.reg.ru/company/promotions/5065

Больше скидок — для участников клуба REG.Friends!
Станьте участником клуба REG.Friends, регистрируйте домены по сниженным ценам и заказывайте надёжные сервисы со скидкой!
www.reg.ru/club/tariffs

Ежегодное увеличение наших платы за услуги



В Leaseweb, мы всегда ищем новые способы, чтобы помочь вашему бизнесу добиться успеха. В прошлом году не стал исключением. Для того, чтобы предоставить вам еще лучше связь с миром, мы улучшили наше подключение к сети с помощью пиринг с интернет-бирж в Австралии и Гонконге открыли новые центры обработки данных по всему миру, а также разработаны частные сетевые услуги через выделенные и облачных серверов. Мы выпустили новую API-интерфейсы для виртуальных серверов, модернизированы сервера VPS с различными вариантами бесплатно ОС, при условии, CloudStack контейнерного сервиса и расширении функциональности портала клиента для переустановки ОС и панели управления, разбиение диска на разделы и мониторинг трафика. И все это при поддержке нашей приверженности к надежности, которую мы усилили, предоставляя специальную подготовку и расширение нашей команды поддержки клиентов.

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

Пересмотренные ставки применяются только с 1 января 2019 по договоренности начала или до 1 января 2018 года будет включена Пересмотренная цена в первой 2019 фактуре и может быть просмотрена на портале клиентов.

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

С наилучшими пожеланиями,
Bas Винкель
Управляющий директор, LEASEWEB Asia Pacific Pte. Ltd.

Лоукост сервера. Вам промокод на 500Р



Вы тоже видите избыточность топовых серверов?
правильное решение, всегда самое простое — лоукост сервер.

Ресурсов сервера должно хватать для решения задачи, это главный фактор на сегодня при выборе из множества конфигураций. Избыточное резервирование всех ресурсов не спасает от всех проблем, но стоит очень приличных средств. Для спокойной работы, лучше вовремя сделанного бекапа не придумано ни одного 100% решения.

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

Лоукост сервер 2 Ядра, 8Gb памяти, 120Gb SSD
Заказать за 900р
Совсем забыли)) промокод на 500р — SERVER500

Почему выбирают Adman?


adman.com

Как пережить «черную пятницу»



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

Black Friday или «черная пятница» — период распродаж, в который значительно увеличивается посещаемость сайтов и использование мобильных приложений.
  • В 2017 году в онлайн-магазине «М.Видео» за пятницу и выходные трафик возрос почти в 2 раза по сравнению с выходными октября
  • В KupiVip в 2017 году трафик вырос на 126% по сравнению с обычным днем в ноябре и на 75% в сравнении с прошлогодним мероприятием
Пока предприниматели решают, какие товарные позиции получат скидку, немногие задаются вопросом «выдержит ли сайт».


У IT-инфраструктуры есть своя «точка кипения». Из-за покупательской активности сервисы перестают работать или долго отвечают на запросы пользователей, корзины тормозят, отгрузки встают. Что же делать?

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

Оценить нагрузку самостоятельно
Чтобы понять максимально допустимую нагрузку, можно организовать тестирование самим, например, используя Яндекс.Танк. Это генератор десятков тысяч HTTP-запросов в секунду. Чтобы запустить нагрузочное тестирование, следуйте официальной документации.

Спрогнозировать нагрузку на магазин в «черную пятницу» можно на основе плана продаж в период акции и исторических данных по конверсии. Пример расчета можно найти в статье «Методология расчета нагрузки».

Теперь сравните прогноз с результатом стресс-теста — если прогноз больше, чем 80% от результата теста, то, по нашему опыту, необходимо выделить дополнительные ресурсы. В «черную пятницу» особенно важно учесть все активности по привлечению клиентов и спрогнозировать пики посещений сайта.

Например, одна рассылка на 10,000 клиентов при конверсии 10% в первый час приводит к открытию 1,000 сессий в час, а 10 рассылок по 1,000 человек с интервалом в 1 час приводят к открытию 100 сессий в час.

Обычно интернет-проект состоит из нескольких модулей, например: база данных, web-сервер, система кэширования. Каждый из них нуждается в различных типах и объемах ресурсов. Поэтому при анализе нагрузки нужно снимать не просто показатели отклика проекта, но и показатели потребления ресурсов с разных модулей: скорость ввода-вывода дисков, процессорное время, память. Уделите внимание и тому, хватает ли вашей выделенной полосы для планируемой нагрузки: возможно, стоит увеличить ширину канала. Постарайтесь определить модули/узлы системы, которые являются «бутылочными горлышками» — это и будут потенциальные точки масштабирования.

blog.selectel.ru/kak-perezhit-chernuyu-pyatnicu/