Как стать автором
Обновить
30
0

Системный инженер CDN

Отправить сообщение

PostgreSQL: занимательный пример работы индексов, планировщика запросов и магии

Время на прочтение 5 мин
Количество просмотров 14K

В начале месяца я прочитал доклад про индексы в базах данных для Saint P Ruby Community и буквально через несколько дней жизнь не замедлила подкинуть мне показательный пример работы индексов, планировщика баз данных и важности обновления СУБД.

Итак, дано: большая таблица projects с кучей (ненужных) индексов, в том числе обычный BTree-индекс по числовой колонке forks_count. У неё есть связь по has_one с таблицей project_dependencies с функциональным GIN-индексом по полю packages в колонке data, в котором поле находится JSON-объект с названиями NPM-пакетов в ключах и их версиями в значениях (куда ж сейчас без джаваскрипта?):

Задача: вытащить примеры проектов, имеющих в зависимостях определённый пакет, показать пользователю наиболее популярные. Показателем популярности и ценности как раз будет количество форков — как правило это какие-то уже раскрученные публичные стартер-проекты.

Как думаете, будет просто? Поехали!
Всего голосов 15: ↑15 и ↓0 +15
Комментарии 1

DNS-поиск в Kubernetes

Время на прочтение 5 мин
Количество просмотров 24K
Прим. перев.: Проблема DNS в Kubernetes, а точнее — настройки параметра ndots, — на удивление популярна, причём уже не первый год. В очередной заметке по этой теме её автор — DevOps-инженер из крупной брокерской компании в Индии — в весьма простой и лаконичной манере рассказывает, о чём полезно знать коллегам, эксплуатирующим Kubernetes.



Одно из главных преимуществ развёртывания приложений в Kubernetes — беспроблемное обнаружение приложений. Внутрикластерное взаимодействие сильно упрощается благодаря концепции сервиса (Service), которая представляет собой виртуальный IP, поддерживающий набор IP-адресов pod'ов. Например, если сервис vanilla желает связаться с сервисом chocolate, он может обратиться напрямую к виртуальному IP для chocolate. Возникает вопрос: кто в данном случае разрешит DNS-запрос к chocolate и как?
Читать дальше →
Всего голосов 43: ↑42 и ↓1 +41
Комментарии 6

Профессиональное выгорание айтишников: 15 ответов психиатра Максима Малявина

Время на прочтение 9 мин
Количество просмотров 86K

Burn out нечаянно нагрянет, когда его совсем не ждёшь. Когда человек впервые сталкивается с профессиональным выгоранием, у него возникают вопросы:


— Что со мной: осенняя хандра, депрессия или профессиональное выгорание?
— Что с этим делать?
— К кому идти за помощью?


Мы боимся признать, что у нас проблема. Тянем с походом к врачу, откладываем разговор с руководством. Пока синдром не разворачивается в полную силу, и всё летит кувырком — работа, карьера, семья.


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


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


Я обратился за разъяснениями к психиатру Максиму Малявину. Хобби Максима не раз спасало меня от плохого настроения, а быть может и от начала профессионального выгорания. Его «Психиатрические байки» способны спасти от серости и печали будней не хуже, чем волшебная пилюлька бромдигидрохлорфенилбензодиазепина. А книги Максима «Записки психиатра, или Всем галоперидолу за счёт заведения!» и «Новые записки психиатра, или Барбухайка, на выезд!» давно прописались на моей книжкой полке.



Читать дальше →
Всего голосов 104: ↑97 и ↓7 +90
Комментарии 152

Большой FAQ про поезда дальнего следования и неочевидные правила

Время на прочтение 11 мин
Количество просмотров 86K

Ачивка «Ген тестировщика»: моя коллега сначала села в поезд, а спустя час распечатала билет на станции, мимо которой проехала.

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

Поэтому давайте мы сейчас выкусим весь изюм из правил перевозок основных пассажирских компаний на железной дороге, чтобы нести свет знаний в массы. И, возможно, немного снизить нагрузку на наш колл-центр на первой линии.
Читать дальше →
Всего голосов 80: ↑78 и ↓2 +76
Комментарии 191

Ceph. Анатомия катастрофы

Время на прочтение 20 мин
Количество просмотров 58K
Ceph — это object storage, призванный помочь построить отказоустойчивый кластер. И все-таки отказы случаются. Все, кто работает с Ceph, знают легенду о CloudMouse или Росреестре. К сожалению, делиться отрицательным опытом у нас не принято, причины провалов чаще всего замалчивают, и не дают будущим поколениям научиться на чужих ошибках.

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


Далее вы найдете видео и текстовую версию одного из лучших докладов DevOpsConf Russia 2018.


Всего голосов 57: ↑57 и ↓0 +57
Комментарии 116

GDPR как оружие массового поражения

Время на прочтение 5 мин
Количество просмотров 48K

Под угрозой все. Вообще все


Бытует мнение, что сочинение законов, которые нарушают практически все – это изобретение нашей Родины. Но, как и со слонами, всё не так однозначно: при изучении General Data Protection Regulation (GDPR) я понял, что в этом мы безнадёжно отстали от Европы. Шутка ли – завиноватить одним махом весь мир! Думаете, вашей компании не предстоит прогибаться под GDPR? Я развею это опасное заблуждение.

В этой статье я не буду описывать все закорючки GDPR, знакомство с которыми первым делом порождает вопрос «А нельзя ли просто забанить всех европейцев?» (и это не шутка, так и спрашивают), но сосредоточусь на запугивании тех, кто до сих пор не исследовал вопрос влияния GDPR на свою работу, априори полагая, что находятся вне зоны поражения.

Читать дальше →
Всего голосов 84: ↑77 и ↓7 +70
Комментарии 159

(Законы Акина) законы космической инженерии

Время на прочтение 3 мин
Количество просмотров 38K
1. Инженерная разработка — это цифры. Анализ без цифр — это просто мнение.

2. Создание правильной ракеты занимает бесконечное количество времени. Поэтому следует создавать ракеты, в которых что-то неправильно.
Читать дальше →
Всего голосов 82: ↑76 и ↓6 +70
Комментарии 29

От факапа до бэкапа: истории ИТ-компаний, потерявших данные

Время на прочтение 7 мин
Количество просмотров 21K

 
Большинство компаний понимают важность создания бэкапов. Но вот беда — представление о том, что должна собой представлять стратегия резервирования данных, имеет не так много компаний. В результате они теряют информацию, клиентов, а значит, и деньги. Еще в 2014 году эксперты информировали о том, что бизнес теряет около $1.7 триллиона долларов в год из-за безвозвратных потерь ценнейших данных, которые почему-то не резервировались. Сейчас этот показатель вырос, поскольку часовой вынужденный простой дата-центра обходится оператору в $50 000 — $80 000. Два года назад часовой простой влек за собой убытки в $40 000 — $60 000.
 
Читать дальше →
Всего голосов 22: ↑21 и ↓1 +20
Комментарии 20

Генерация страниц сайта средствами сервис-воркеров

Время на прочтение 12 мин
Количество просмотров 19K

(С)

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

  • кэширование страниц сайта для офлайн доступа;
  • ведение учета страниц, доступных офлайн, проброс необходимых данных;
  • мониторинг статуса сети, онлайн или офлайн;
  • общение сервис-воркера со страницами и вкладками, которые он обслуживает;
  • перехват сервис-воркером запроса на открытие адреса /offline/ и генерирование новой страницы прямо на устройстве, без запроса к серверу.

Если тема сервис-воркеров и Progressive Web Apps (PWA) для вас новая, то перед чтением этой статьи необходимо познакомиться с ними поближе.

Меня зовут Рыбин Павел, я работаю во фронтенд-разработке Медиапроектов Mail.Ru Group. Это руководство мне помогали писать грабли, набитые шишки и подводные камни, попавшиеся мне при реализации PWA для мобильной версии Авто Mail.Ru.

В тексте будут встречаться небольшие примеры кода, иллюстрирующие рассказ. Расширенную же демо-версию можно посмотреть на GitHub.
Читать дальше →
Всего голосов 39: ↑39 и ↓0 +39
Комментарии 12

Настройка BGP для обхода блокировок, или «Как я перестал бояться и полюбил РКН»

Время на прочтение 11 мин
Количество просмотров 139K

Ну ладно, про «полюбил» — это преувеличение. Скорее «смог сосуществовать с».


Как вы все знаете, с 16 апреля 2018 года Роскомнадзор крайне широкими мазками блокирует доступ к ресурсам в сети, добавляя в "Единый реестр доменных имен, указателей страниц сайтов в сети «Интернет» и сетевых адресов, позволяющих идентифицировать сайты в сети «Интернет», содержащие информацию, распространение которой в Российской Федерации запрещено" (по тексту — просто реестр) по /10 иногда. В результате граждане Российской Федерации и бизнес страдают, потеряв доступ к необходимым им совершенно легальным ресурсам.


После того, как в комментариях к одной из статей на Хабре я сказал, что готов помочь пострадавшим с настройкой схемы обхода, ко мне обратились несколько человек с просьбой о такой помощи. Когда у них всё заработало, один из них порекомендовал описать методику в статье. Поразмыслив, решил нарушить свое молчание на сайте и попробовать в кои-то веки написать что-то промежуточное между проектом и постом в Facebook, т.е. хабрапост. Результат — перед вами.

Читать дальше →
Всего голосов 124: ↑120 и ↓4 +116
Комментарии 301

Ускоряем Nginx за 5 минут

Время на прочтение 5 мин
Количество просмотров 280K
image
Попытайтесь повторить это сами

Как правило, настроенный должным образом сервер Nginx на Linux, может обрабатывать 500,000 — 600,000 запросов в секунду. Но этот показатель можно весьма ощутимо увеличить. Хотел бы обратить внимание на тот факт, что настройки описанные ниже, применялись в тестовой среде и, возможно, для ваших боевых серверов они не подойдут.

Минутка банальности.

yum -y install nginx

На всякий пожарный, создадим бэкап исходного конфига.

cp /etc/nginx/nginx.conf /etc/nginx/nginx.conf.orig
vim /etc/nginx/nginx.conf

А теперь можно и похимичить!
Бдыжь-бдыжь
Всего голосов 203: ↑138 и ↓65 +73
Комментарии 127

Правдивая история роботизации, начинающаяся с одного простого графика

Время на прочтение 12 мин
Количество просмотров 58K


В начале этого года мне на глаза попался график, на котором отражена не только чрезвычайно важная история роботизации, но также история обсуждения самой роботизации. Заодно здесь показан прогноз развития в ближайшие годы как самой роботизации, так и ее обсуждения. Это график количества эксплуатируемых буровых вышек в Соединенных Штатах (зеленая линия) и количество рабочих, занятых в нефтяной промышленности (красная линия). Это важная часть мозаики, которую необходимо собрать воедино, пока не стало слишком поздно.
Читать дальше →
Всего голосов 57: ↑53 и ↓4 +49
Комментарии 321

Добавление и удаление на ходу SATA/SCSI устройств

Время на прочтение 2 мин
Количество просмотров 65K
Современный Linux (2.6+) может обнаруживать новоподключенные устройства (на шинах, которые поддерживают hotplug). Их можно, так же отключать, предварительно отмонтировав файловые системы и сделав sync. Среди hotplug шин не только USB, но и SATA, SCSI и SAS (в теории, это же применимо и к PATA, но там много глупых контроллеров, которые не умеют адекватно реагировать на исчезновение устройства).

Отключать их лучше не дёргая на ходу физическое устройство, а сказав ядру полностью забыть про про него (гарантируя тем самым, что никаких операций ввода-вывода с устройством производиться не будет, даже если вспохватившийся кеш). Кроме того, иногда нужно выполнять эмуляцию процедуры plug-unplug без физического дёргания питания/шины данных (что не очень хорошо для железа). Самая типичная ситуация — это отладка скриптов udev.

Удаление устройства


echo 1 >/sys/block/sdX/device/delete

(x — буква устройства, sda, sdb, etc).

Эта команда удаляет указанное устройство. Заметим, это низкоуровневая команда, которая не проверяет кеш и статус примонтированности, так что лучше сначала сказать umount & sync.

К сожалению, я не знаю метода совместить выключение шпинделя диска с его удалением с точки зрения ядра. Шпиндель можно отключить командой scsi-spin, однако, при попытке удалить устройство, оно будет раскручено заново и удалено. А у удалённого устройства уже нельзя ничего останавливать (нет устройства). Так что эта часть проблемы пока не решена.

Добавление устройства


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

echo "- - -" >/sys/class/scsi_host/hostX/scan

X — номер шины, совпадает с номером SATA порта на материнской плате. Если не знаете, можете смело делать для всех хостов по очереди, ничего, кроме небольшого лага в дисковых операциях, незаметного для софта и файловой системы, это не даст.

Обратите внимание, host'ы нумеруются с 0, а не с 1. (а в dmesg ata устройства нумеруются с 1).

Так же осуществляется и сканирование USB-SATA переходников (usb-боксов и внешних винчестеров — они просто фигурируют как ещё один scsi_host).

Если мы говорим про SCSI, то вместо "- — -" можно указать точный номер устройства/шины/LUN'а сканируемого устройства (например, «200 1 2»). SATA, в силу архитектурных особенностей (один target для одного initiator) принимает туда только «0 0 0».

Ещё об удалении… Если вы не знаете буквы устройства, но знаете его физическое место подключения, то удалять можно «прямым текстом», записью «1» в "/sys/bus/scsi/devices/targetX:0:0/X:0:0:0/delete".
Всего голосов 64: ↑54 и ↓10 +44
Комментарии 48

Где живут ваши объявления?

Время на прочтение 8 мин
Количество просмотров 41K
image

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

Начнем с небольшой истории о том, что проект представляет из себя сегодня, чем занимается команда инженеров, и что мы планируем делать в ближайшем будущем. Еще мы собрали в этом посте множество ссылок на уже опубликованные материалы, доклады и презентации нашей команды, которыми давно хотели поделиться. Хотите знать, где живут ваши объявления? Добро пожаловать под кат!
Читать дальше →
Всего голосов 116: ↑109 и ↓7 +102
Комментарии 115

Индексы в PostgreSQL — 1

Время на прочтение 17 мин
Количество просмотров 384K

Предисловие


В этой серии статей речь пойдет об индексах в PostgreSQL.

Любой вопрос можно рассматривать с разных точек зрения. Мы будем говорить о том, что должно интересовать прикладного разработчика, использующего СУБД: какие индексы существуют, почему в PostgreSQL их так много разных, и как их использовать для ускорения запросов. Пожалуй, тему можно было бы раскрыть и меньшим числом слов, но мы втайне надеемся на любознательного разработчика, которому также интересны и подробности внутреннего устройства, тем более, что понимание таких подробностей позволяет не только прислушиваться к чужому мнению, но и делать собственные выводы.

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

В этой части мы поговорим про разделение сфер ответственности между общим механизмом индексирования, относящимся к ядру СУБД, и отдельными методами индексного доступа, которые в PostgreSQL можно добавлять как расширения. В следующей части мы рассмотрим интерфейс метода доступа и такие важные понятия, как классы и семейства операторов. После такого длинного, но необходимого введения мы подробно рассмотрим устройство и применение различных типов индексов: Hash, B-tree, GiST, SP-GiST, GIN и RUM, BRIN и Bloom.
Читать дальше →
Всего голосов 104: ↑103 и ↓1 +102
Комментарии 59

Атаки на сетевое оборудование с Kali Linux

Время на прочтение 4 мин
Количество просмотров 66K
image

 
В данной статье мы рассмотрим актуальные атаки на сетевое оборудование и инструменты, доступные в популярном дистрибутиве Kali Linux для их проведения.

Читать дальше →
Всего голосов 38: ↑38 и ↓0 +38
Комментарии 10

Статистика распределения доменов по AS, IP, NS, MX и прочим параметрам

Время на прочтение 7 мин
Количество просмотров 9.7K
Давным-давно перестал работать 1stat.ru — откровенно говоря, для нас это была трагедия (сейчас вроде он как-то работает).

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


Подробности
Всего голосов 15: ↑14 и ↓1 +13
Комментарии 14

Проброс USB в виртуалку по сети средствами UsbRedir и QEMU

Время на прочтение 6 мин
Количество просмотров 46K


На сегодняшний день существет довольно много способов пробросить USB-устройство на другой компьютер или виртуалку по сети.
Из наиболее популярных — железячные такие как AnywhereUSB и чисто програмные продукты, из тех что я попробовал сам: USB Redirector и USB/IP.
Я бы хотел рассказать вам еще об одном интересном способе, который работает непосредственно с эмулятором QEMU.
Он так же является частью проекта spice, официально поддерживаемым RedHat.

UsbRedir, это открытый протокол для проброса usb-устройств по tcp на удаленный виртуальный сервер, разработанный при поддержке RedHat в рамках проекта spice. Но как оказалось им можно вполне успешно пользоваться и без spice. В роли сервера выступает usbredirserver, который шарит usb-устройство на определенный порт, а в качестве клиента сам QEMU, который эмулирует подключение экспортированного usb-устройства в определенный usb-контроллер вашей виртуальной машины. Благодаря такому подходу в качестве гостевой системы может использоваться абсолютно любая ОС, так как она даже не знает, что устройство является проброшенным удаленно, а вся логика ложится на QEMU.
Читать дальше →
Всего голосов 11: ↑10 и ↓1 +9
Комментарии 22

Пьеса «Технический долг»

Время на прочтение 6 мин
Количество просмотров 76K

Пьеса «Технический долг» в 9 частях. Ставится и показывается впервые.


Часть 0: В пустой комнате стоят Разработчик (Р) и Менеджер (М).

М: Я собрал нас тут, чтобы рассказать пренепреятнейшее известие: система КРОТОПОН, которая работает на продакшане заглючила и мы потеряли кучу денег. Кроме того нет никого, кто знает как она работает. Поэтому (с придыханием) наш СЕО дал мне священную миссию — написать новую систему. Как ты думаешь, за два месяца справишься?

Р: А что делать-то нужно?

М: Да там немного, всего лишь пару десятков систем связать и рюшечки навесить.

Р: Эй, да это же на год работы! И вообще требования будут?

М: (В телефон) Да, конечно, за пол года справимся. (Разработчику) Ну ты тут пока начинай, а я тебе требования потом донесу.

Менеджер уходит.

Р: Но тут же…

Разработчик тяжело вздыхает, затаскивает в комнату инструменты и начинает что-то сооружать.
Читать дальше →
Всего голосов 201: ↑195 и ↓6 +189
Комментарии 196

NGINX: Перехват ошибок 5хх с помощью отладочного сервера

Время на прочтение 6 мин
Количество просмотров 23K

Является ли ошибкой ответ 5хх, если его никто не видит? [1]


image

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

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

Для облегчения процесса поиска и отладки могут быть использованы некоторые полезные приёмы в случае, когда NGINX используется для проксирования или балансировки приложения. В этой статье будет рассмотрено особое использование директивы error_page в применении к типичной инфраструктуре приложения с проксированием через NGINX.
Читать дальше →
Всего голосов 45: ↑45 и ↓0 +45
Комментарии 4

Информация

В рейтинге
Не участвует
Откуда
Санкт-Петербург, Санкт-Петербург и область, Россия
Зарегистрирован
Активность