Как стать автором
Обновить
1
0
Сергей Очкасов @sochkasov

Пользователь

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

Трансляция онлайн-видео с минимальной задержкой

Время на прочтение5 мин
Количество просмотров48K
Не так давно к нам обратился клиент, который занимается видео-трансляциями аукционов и лошадиных скачек в прямом эфире. Сами мероприятия проходят в Австралии, а вот ставки на них делаются игроками в Макао — игровой столице Юго-Восточной Азии. Разумеется, он столкнулся с задержкой сигнала — как без неё. Задержка — это время между взятием кадра и его появлением на экране конечного устройства. И если обычному зрителю задержка в 5 или даже 10 секунд не критична, то тем, кто ставит на тотализаторе, подобная разница может стоить огромных денег. Отсюда возникла задача — свести к минимуму время прохождения видео от источника к зрителю.

В итоге задача была решена, удалось снизить задержку во всей цепочке до 500 мс. Вспомнился заодно случай, когда с помощью нашего софта другой клиент уменьшил время вещания видео с Андроида на экран компьютера до 1-2 секунд, что оказалось лучшим показателем по сравнению в другими вариантами, которые он пробовал.

Мы подумали, что некоторые техники, которые мы применили, будут интересны не только нам.

Итак, цепочку доставки видео схематично можно разделить на 6 этапов: съёмку, сжатие, передачу по локальной сети от энкодера к медиа-серверу, передача через интернет, декодирование и отображение на устройстве пользователя.



Посмотрим, чем определяются издержки на каждом из этапов и как их можно сократить.
Читать дальше →
Всего голосов 15: ↑10 и ↓5+5
Комментарии32

Чудо свершилось. Вышла «отвязанная» версия Arduino Mega Server

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

Революция о которой так долго говорили большевики свершилась. Теперь вы можете взять карточку памяти microSD, записать на неё файлы дистрибутива AMS и ваша Arduino превратиться в маленькое (или большое, это как посмотреть) чудо. Вам больше не нужны «костыли» с поддержкой стороннего сервера, Arduino Mega Server стал полностью автономным и вполне «юзабельным» в одиночном режиме работы. И это открывает для всех нас очень интересные перспективы.
Читать дальше →
Всего голосов 28: ↑28 и ↓0+28
Комментарии27

Ethernet Library или почему в природе не существует серверов на Arduino

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

В этой статье я опишу ситуацию с которой столкнулся во время разработки проекта Arduino Mega Server. Суть дела заключается в том, что существует такая библиотека Arduino Ethernet Library, написанная для поддержки сетевой платы Ethernet Shield на чипе W5100. Это стандартная плата и стандартная библиотека, которая многие годы поставляется в комплекте со средой разработки Arduino.

И эта библиотека является основой для всех проектов, использующих обмен информацией по проводной сети. Так вот, оказалось, что эта библиотека попросту профнепригодна. На ней в принципе невозможно построить нормальное сетевое взаимодействие. Можно только «баловаться» одиночными запросами и ответами. Ни о каком построении серверов на базе этой библиотеки речь не может идти. Почему?
Читать дальше →
Всего голосов 62: ↑61 и ↓1+60
Комментарии74

Производительность VMware vSphere 5.5 и 6.0 — настройки, соображения. Perfomance Best Practices

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

Проштудировав документы Perfomance Best Practices for vSphere 5.5 и Perfomance Best Practices for vSphere 6.0, не выявил особых расхождений в настройке, как и чего-то дополнительно специфичного для vSphere 6.0.

Большая часть написанного умещается в стандартные рекомендации формата «используйте совместимое и сертифицированное оборудование» и «при сайзинге ВМ выделяйте ресурсы (vCPU, vRAM) в объёме не более необходимого».

Тем не менее, базовые вещи решил оформить отдельным постом, немного переструктурировав, избавив от «воды» и некоторых отсылок и замечаний, которые являются слишком специфичными и для большинства реализаций являются скорее вредными чем полезными. В сухом остатке остались рекомендации, советы и соображения, проверенные и протестированные на практике и применимые для 90% инфраструктур VMware vSphere и standalone ESXi. Разбавленные общими соображениями и дополнениями.
Читать дальше →
Всего голосов 8: ↑8 и ↓0+8
Комментарии28

Обновление прошивки противоугонной системы Starline E90

Время на прочтение4 мин
Количество просмотров65K
Так уж получилось, что любая вещь становится для меня более интересной, если ее можно соединить с компьютером. А если еще из такого «соседства» выходит практическая польза, то это вдвойне плюс! Впрочем, все это предисловие, а суть состоит в следующем.

Некоторое время назад я приобрел для своего автомобиля сигнализацию Starline E90. Почти сразу же после покупки выяснилось, что у данной модели сигнализации существует несколько ревизий, отличающихся версией прошивки, и, вероятно, железом. Купленное мной устройство было выпущено в 2013 году, соответственно, имело не самую свежую прошивку, а какой же гик не любит новейших версий ПО! Как оказалось в дальнейшем, версию прошивки моей автосигнализации можно достаточно легко обновить. Осторожно, под катом скриншоты!


Читать дальше →
Всего голосов 19: ↑17 и ↓2+15
Комментарии18

Arduino Mega Server

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

Да, это снова Ардуино, но не спешите закрывать страничку, на этот раз вас ждёт нечто действительно новое и интересное. В основном в этой статье речь пойдёт о микроконтроллерных платах Arduino Mega и плате сетевого интерфейса Ethernet Shield W5100 и о том чуде, которое можно с ними сотворить если позволить себе выйти за рамки стереотипов.
Читать дальше →
Всего голосов 30: ↑30 и ↓0+30
Комментарии34

«Убийца Bootstrap» — Material Design Lite. Версия 1.0.0

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

Компания Google вышла на новый уровень в продвижении своего детища — Material Design. Выпущена версия 1.0.0 open-source проекта Material Design Lite.
Читать дальше →
Всего голосов 64: ↑47 и ↓17+30
Комментарии86

Пулы потоков: ускоряем NGINX в 9 и более раз

Время на прочтение15 мин
Количество просмотров87K
Как известно, для обработки соединений NGINX использует асинхронный событийный подход. Вместо того, чтобы выделять на каждый запрос отдельный поток или процесс (как это делают серверы с традиционной архитектурой), NGINX мультиплексирует обработку множества соединений и запросов в одном рабочем процессе. Для этого применяются сокеты в неблокирующем режиме и такие эффективные методы работы с событиями, как epoll и kqueue.

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

Каждый процесс расходует память и каждое переключение между ними требует дополнительных циклов процессора, а также приводит к вымыванию L-кэшей

У медали есть и обратная сторона. Главной проблемой асинхронного подхода, а лучше даже сказать «врагом» — являются блокирующие операции. И, к сожалению, многие авторы сторонних модулей, не понимая принципов функционирования NGINX, пытаются выполнять блокирующие операции в своих модулях. Такие операции способны полностью убить производительность NGINX и их следует избегать любой ценой.

Но даже в текущей реализации NGINX не всегда возможно избежать блокировок. И для решения данной проблемы в NGINX версии 1.7.11 был представлен новый механизм «пулов потоков». Что это такое и как его применять разберем далее, а для начала познакомимся с нашим врагом в лицо.
Читать дальше →
Всего голосов 72: ↑71 и ↓1+70
Комментарии58

Уровень сигнала трансивера через SNMP в Cisco

Время на прочтение7 мин
Количество просмотров23K
Иногда нужно узнать уровень сигнала в трансивере. Причины бывают разные: внезапное падение канала связи, подключение новых оптических кроссировок, мониторинг. Инженер с необходимым уровнем доступа решает этот вопрос меньше чем за одну минуту с помощью команды:

#show interfaces Te1/49 transceiver
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
                                 Optical   Optical
           Temperature  Voltage  Tx Power  Rx Power
Port       (Celsius)    (Volts)  (dBm)     (dBm)
---------  -----------  -------  --------  --------
Te1/49       53.3       3.25      -4.3      -2.8

Кому-то (у кого нет соответствующего доступа) приходится ждать этой минуты целую вечность. Например, когда канал упал в пиковые часы и на резервном линке какие-то потери, которые обнаружились только при загрузке линка трафиком. Или когда новый канал нужно было сдать вчера, а ничего не работает, потому что поставщик неправильно подписал оптику на CWDM-мультиплексоре, и требуется методом тыка отыскать «правильную волну». И все это происходит в условиях дефицита верховных сетевых инженеров и времени.

В статье рассматривается вариант того, как проверить сигнал, имея лишь read-only доступ по SNMP.
Читать дальше →
Всего голосов 13: ↑12 и ↓1+11
Комментарии3

Kolab Groupware (Часть 2 — Установка)

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


Если вы еще не знаете что такое Kolab, то вы вероятно захотите прочитать первую статью, где я делал подробный обзор на этот довольно функциональный и полностью свободной почтовый сервер с красивой веб-мордой.
На этот раз мы будем его устанавливать.
Читать дальше →
Всего голосов 13: ↑12 и ↓1+11
Комментарии7

Отправка Nginx-логов в Google Analytics

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

С наших Download-серверов каждый день скачивается несколько миллионов драйверов (статичных .exe и .zip файлов). Для анализа поведения пользователей перед нами встала задача посчитать следующие параметры: когда, сколько, как часто и даже кто именно скачивает драйверы.

Самым очевидным решением было бы использовать инструменты типа AWstat, GoAccess, ELK stack или Splunk, а в крайнем случае собирать логи Nginx.

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

И тогда мы решили заставить Nginx самостоятельно отправлять события в Google Analytics сразу же после скачивания файла. Мы также смогли передать в GA уникальный идентификатор пользователя ClientID.
В результате мы получили аналитику по статичным файлам, к которым раньше невозможно было привязать счетчик GA.

Под катом готовый конфиг и примеры работы нашей системы.
Читать дальше →
Всего голосов 38: ↑35 и ↓3+32
Комментарии14

Zabbix Moscow Meetup в Badoo

Время на прочтение2 мин
Количество просмотров9.3K
27 июня в московском офисе Badoo проводим Zabbix Moscow Meetup.
В программе: отличные доклады, чай-кофе-пицца, много общения. Начало в 11-30, подробное расписание выложим чуть позже.
Будем записывать доклады на видео.

Алексей Владышев, Zabbix
«Zabbix: прошлое, настоящее и будущее»


Я расскажу о пути который прошёл Zabbix, что изменилось в технологическом и функциональном плане, и мои мысли о том куда мы двигаемся.

Илья Аблеев, Badoo
«Zabbix в Badoo или о чем не пишут в мануале»

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

IoT за копейки, или Что может DeviceHive

Время на прочтение4 мин
Количество просмотров45K
В современном мире «интернет вещей» (IoT) стремительно набирает популярность. Он в будущем поможет человечеству автоматизировать многие аспекты жизни, упростить рутинные операции, да и просто сделать жизнь комфортнее и приятнее. Современная элементная база только способствует этому. Еще несколько лет назад задача управления устройством из сети порождала необходимость использовать высокопроизводительные процессоры, что увеличивало стоимость конечного исполнительного устройства в разы. Сейчас же есть возможность построить простые и эффективные IoT-решения за копейки.

Сделать свой дом поистине «умным» можно и без использования модных Raspberry Pi или Arduino. Большинство IoT-задач сводится к подключению типовых датчиков и исполнительных механизмов со стандартными интерфейсами: I2C, SPI, UART. А иногда даже с элементарным аналоговым выводом, с которого нужно считать наличие напряжения или подать его, или просто замкнуть.


Читать дальше →
Всего голосов 27: ↑23 и ↓4+19
Комментарии69

Сравнение Security Enhanced NGINX и Hiawatha Web Server при отражении атак 7 уровня (BOTS/SQL/XSS etc.)

Время на прочтение5 мин
Количество просмотров17K
Добрый день.

В завершение «недели NGINX», мы решили рассказать об очень интересной сборке «безопасной» версии NGINX китайской компании Neusoft, о которой не было замечено ни одной статьи на Хабре, а именно — SeNginx. В дополнение к этому, мы также расскажем вам о втором веб сервере, которому не уделяется так много внимания, как Nginx — Hiawatha Web Server, и постараемся сравнить Hiawatha с SeNginx в плане использования их для обеспечения безопасности вашего сайта или web приложения.

image image

Отметим, что за 5 лет существования нашей хостинговой компании нам довелось повидать целый спектр атак различных уровней и типов на сайты и web приложения наших клиентов, а также поработать с London Metropolitan Police в поиске и поимке одного управляющего ботнетом. Сегодня DDoS атаки стали настолько частыми, что только за вчерашний день Arbor в одном из наших датацентров зафиксировал 49 DDoS атак 3/4 уровней мощностью до 20-25 Gbit/s (график 1 и график 2). И, хотя Arbor девайсы и могут при определенной настройке неплохо справляться с атаками 3 и 4 уровня, они практически бесполезны при атаках 7 уровня, целью которых является перегрузка ресурсов сервера, а также поиск уязвимостей в вашем приложении.

Самым бюджетным вариантом отражения атак 7 уровня являются различные варианты с использованием DNS RoundRobin + HaProxy, Nginx, Varnish Cache и т.д., которые либо позволяют рассредоточить атаку между несколькими серверами клиента, либо дают возможность обработать запросы ботов «в лоб» с помощью отдачи кешированной версии страницы. Данный подход, к сожалению, часто требует ручной настройки, постоянного мониторинга и редко эффективен при меняющихся типах атак.

Наглядное представление DNS RoundRobin + Nginx (источник):

image

После длительных поисков нами был найден отличный модуль к NGINX, написанный русскими программистами на Perl в 2012 году и позволяющий фильтровать ботов, которые заходят на ваш сайт в автоматическом режиме — Roboo (статья на Хабре). Модуль показал себя с наилучшей стороны, позволяя фильтровать сотни тысяч запросов от ботов с помощью NGINX с минимальной нагрузкой на сервер.
Читать дальше →
Всего голосов 22: ↑19 и ↓3+16
Комментарии12

Увеличиваем производительность с помощью SO_REUSEPORT в NGINX 1.9.1

Время на прочтение3 мин
Количество просмотров40K
В NGINX версии 1.9.1 появилась новая возможность, позволяющая использовать сокетную опцию SO_REUSEPORT, которая доступна в современных версиях операционных систем, таких как DragonFly BSD и Linux (ядра 3.9 и новее). Данная опция разрешает открывать сразу несколько слушающих сокетов на одном и том же адресе и порту. При этом, ядро будет распределять входящие соединения между ними.
Читать дальше →
Всего голосов 35: ↑35 и ↓0+35
Комментарии31

Релиз FastNetMon 1.1.2 открытого решения для мониторинга DoS/DDoS атак

Время на прочтение3 мин
Количество просмотров27K
За прошедшие почти 10 месяцев с релиза 1.0.0 была очень большая работа по улучшению программы.

Из основных изменений стоит отметить следующие:
  • Возможность выявлять самые популярные виды атак: syn_flood, icmp_flood, udp_flood, ip_fragmentation_flood
  • Добавление поддержки протокола Netflow, поддерживаются 5, 9 и 10 (IPFIX) версии
  • Добавление поддержки протокола sFLOW v5, который поддерживается большинством современных сетевых коммутаторов
  • Добавлена поддержка использования netmap (поддерживаются Linux и FreeBSD, для Linux предоставляется специальная версия драйвера ixgbe: github.com/pavel-odintsov/ixgbe-linux-netmap) для захвата пакетов. Данный режим обеспечивает наивысшую производительность захвата трафика наряду с PF_RING ZC.
  • Добавлена поддержка PF_RING ZC (к сожалению, этот режим требует отдельной лицензии на библиотеку PF_RING)


Читать дальше →
Всего голосов 30: ↑29 и ↓1+28
Комментарии25

Базовый траблшутинг в среде VMware vSphere или что делать, если тормозит ВМ

Время на прочтение6 мин
Количество просмотров58K
Что-то в последнее время технические статьи о виртуализации (да и не только о виртуализации) скатываются к формату «в новой версии ожидается такая фича». Складывается ощущение, что разбор механизмов и описание опыта, проблем и решений интересны только зарубежным экспертам. С другой стороны, есть такая проблема у экспертов — если что-то изучил, оно становится элементарным и воспринимается само собой разумеющимся, настолько, что писать об этом как-то глупо. Особенно если уже было кем-то описано где-то. Когда-то. На каком-то языке. Ниженаписанное — плод консолидации личных заметок, сначала предназначавшийся для личного упорядочивания мыслей, но наупорядочив значительный объём текста, подумал, что кому-то может пригодиться.

Типовая проблема «виртуализаторов» — владелец сервиса, заказчик или пользователь жалуется, что у него «тормозит» виртуальная машина. Так как виртуализация предполагает консолидацию большого количества ВМ на базе одного комплекта аппаратных ресурсов, переподписку (overprovision — когда мы предполагаем, что серверы не затребуют одновременно максимум своих ресурсов, а значит, например, в 40 ГБ физической памяти мы можем натолкать не 10 серверов по 4 ГБ RAM, а 15, используя Dynamic Memory), а кроме того, серверы могут тормозить и из-за ошибок в программных компонентах и их настройках, то каждый раз приходится решать за что хвататься и куда смотреть в первую очередь. Особенно, если с таким ёмким описанием проблемы, как «тормозит машина» не предоставлено никакой диагностической информации, как чаще всего и бывает. Под катом небольшое руководство для этого случая.
Читать дальше →
Всего голосов 18: ↑18 и ↓0+18
Комментарии4

Обзор новостей онлайн-стриминга и медиа за апрель

Время на прочтение3 мин
Количество просмотров1.9K
Добрейшего.

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

NAB Show 2015

Для меня лично главной новостью месяца стал NAB Show 2015, проводившийся в Лас-Вегасе.

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

Позже в новостях увидел небольшой видеоотчёт о DASH Industry Forum networking reception, в котором сам принял участие. Наша команда является associate member в DASH-IF, и я также был приглашён. На видео ещё раз послушал тех людей, с кем довелось лично пообщаться. Они дают неплохой обзор того, где находится стандарт MPEG-DASH и чего ждать в будущем.
Читать дальше →
Всего голосов 6: ↑5 и ↓1+4
Комментарии0

Как мы отбивали xss/sql атаку с Nginx и Naxsi

Время на прочтение4 мин
Количество просмотров25K
image
Совсем недавно в разгар рабочего дня от клиента к нам поступила тревожная информация о том, что их сайт подвергается XSS/SQL атакам, часть из которых была успешной. Необходимо было срочно принять меры и настроить базовую защиту в течение нескольких часов, т.к. возможности быстро найти и устранить несовершенства кода у разработчиков не было.

После недолгих раздумий выбор пал на firewall веб-приложений для nginx под названием naxsi, который технически является модулем nginx.
Читать дальше →
Всего голосов 35: ↑28 и ↓7+21
Комментарии23

Webix 2.3. Весеннее обновление

Время на прочтение3 мин
Количество просмотров15K
Не так давно в блоге разработчиков этой JavaScript библиотеки появился пост о релизе новой версии за номером 2.3. Обновления это хорошо, спору нет. Но, глядя в окно на позднемартовскую улицу, становится не вполне понятно, что же выбрать: разбираться с новыми доступными возможностями или же вместо этого неторопливо прогуливаться под неокрепшим еще весенним солнцем, отмечая подспудно скорое уже пришествие долгожданного лета и вдыхая жадно всем нутром своим разлитый повсюду запах весны и оживления? Вопрос непростой. Нужно разбираться.



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

Информация

В рейтинге
Не участвует
Откуда
Коломна, Москва и Московская обл., Россия
Дата рождения
Зарегистрирован
Активность