Рубрика «высокая производительность» - 20

Когда создавалась библиотека для валидации данных quartet были поставленны следующие цели-ориентиры:

  • TypeScript
  • Краткость
  • Простота
  • Производительность

В этой статье я хотел бы рассмотреть производительность quartet и её причины.

Будем исследовать этот аспект в сравнении между quartet и другой намного более популярной ajv.

Читать полностью »

Кластер Elasticsearch на 200 ТБ+ - 1

С Elasticsearch сталкиваются многие. Но что происходит, когда хочешь с его помощью хранить логи «в особо крупном объёме»? Да ещё и безболезненно переживать отказ любого из нескольких дата-центров? Какой стоит делать архитектуру, и на какие подводные камни наткнёшься?

Мы в Одноклассниках решили при помощи elasticsearch решить вопрос лог-менеджмента, а теперь делимся с Хабром опытом: и про архитектуру, и про подводные камни.

Читать полностью »

Ускорение дисковой подсистемы Qemu KVM в Linux - 1

Иногда я берусь за различные задачи по настройке серверов. Некоторое время назад ко мне обратился владелец небольшой хостинговой компании, с интересной проблемой. Он хотел бы на своих серверах, где уже стоял Ubuntu 18.04, запускать виртуальные машины с Windows под KVM.

Однако проведённое им тестирование показало, что дисковая система KVM прилично отставала от показателей, которые у него были под Hyper-V. Он хотел раскочегарить qemu на своих Ubuntu серверах, чтобы избежать закупок дорогих серверных лицензий Windows (бесплатная версия Microsoft Hyper-V Server не устраивала из-за своих ограничений).
Читать полностью »

Spring — эффективный роутинг - 1

Виктор Васнецов, Рыцарь на распутье; fatcatart.com

Привет! Здесь краткий пересказ интересной баги c GitHub. Для воспроизведения см. проект spring-flux-callstack.

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

at reactor.core.publisher.FluxSwitchIfEmpty$SwitchIfEmptySubscriber.onComplete(FluxSwitchIfEmpty.java:75)
at reactor.core.publisher.FluxSwitchIfEmpty$SwitchIfEmptySubscriber.onComplete(FluxSwitchIfEmpty.java:78)
at reactor.core.publisher.Operators.complete(Operators.java:135)
at reactor.core.publisher.MonoEmpty.subscribe(MonoEmpty.java:45)
at reactor.core.publisher.MonoDefer.subscribe(MonoDefer.java:52)
at reactor.core.publisher.Mono.subscribe(Mono.java:4110)

Как вы уже поняли, это методы из Project Reactor, который обеспечивает асинхронную работу для Router Function в WebFlux.

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

Читать полностью »

Привет.

Сегодня мы предлагаем вам перевод статьи, затрагивающей не самую обсуждаемую тему: компиляцию кода в Python, а именно: работу с абстрактным синтаксическим деревом (AST) и байт-кодом. Притом, что Python является интерпретируемым языком, такие возможности в нем чрезвычайно важны с точки зрения оптимизации. О них мы сегодня и поговорим.
Читать полностью »

16 марта в Google Chrome выпустили новую версию Lighthouse 6. Рабочая версия ляжет в основу замеров в новом PageSpeed Insights и консоли разработчика. Подробности и тест движка в статье.
Читать полностью »

В софте всё восхитительно, но все недовольны - 1

Есть типичная позиция, которую можно встретить на Хабре и не только: «хотя железо с годами всё лучше, человечество свело эффект на нет тем, что пишет софт всё хуже».

Мол, ядер в процессорах стало больше, но тормозит всё пуще прежнего. Electron и Slack — порождения тьмы, пришедшие лишить нас счастья и памяти. Мобильные приложения стали прожорливее, чем старые операционные системы. А в самих операционных системах уже толком нет прогресса, но почему-то они продолжают разбухать в размерах. То ли дело было, когда люди умели уместить ОС на дискету!

Скажу прямо: когда я вижу подобные заявления, у меня бомбит. По-моему, в них упускают целый ряд важных факторов. А в итоге ситуация напоминает классическую речь Луи Си Кея «Everything's amazing and nobody's happy»: всё стало удивительно хорошо, а люди сидят и жалуются.

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

Читать полностью »

Аналитическая СУБД ClickHouse обрабатывает множество разных строк, потребляя ресурсы. Для ускорения работы системы постоянно добавляются новые оптимизации. Разработчик ClickHouse Николай Кочетов рассказывает о строковом типе данных, в том числе о новом типе, LowCardinality, и объясняет, как можно ускорить работу со строками.

— Сначала давайте разберемся, как можно хранить строки.
Читать полностью »

Обучение, переговоры, консультации удалённо — бесплатное решение видеоконференцсвязи Mind Server - 1В качестве вступления — приглашаю всех причастных в хаб Видеоконференцсвязь — в ближайшее время, полагаю, здесь будет публиковаться много интересных статей.
В свете последних событий многие компании, причастные к отрасли видеоконференцсвязи, начали бурную рекламную компанию своих продуктов и решений. И выглядит это, порой, не очень красиво: «Только на период пандемии — бесплатно пользуйтесь нашим сервисом...» Всё бы ничего, только такие компании искусственно создают ажиотаж, так как предлагают к эксклюзивному использованию и без того бесплатные версии своих продуктов. Не виню — время такое, лишь бы с пользой для народа.
Как только я услышал о карантине и увидел всевозможные акции бесплатных сервисов, я сразу обратился к своим давним парнёрам — одному из ведущих разработчиков ПО для ВКС в России, компании Майнд. Я решил, что подобная маркетинговая активность им не помешает, но получив отказ был немного обескуражен. Оказалось, что за последние дни нагрузка на облачный сервис Майнд выросла настолько, что вычислительных ресурсов перестало хватать на обработку огромного количества подключений. И это без всякой рекламы, поэтому рекомендовать облачные решения в этой статье я не буду.
В этой статье я напомню о скромном факте — особенности локального решения для видеоконференцсвязи Mind Server, о котором я уже рассказывал в прошлых статьях:
Профессиональная ВКС доступна как никогда. Mind Server — новая версия, новые цены
Видеоконференцсвязь Mind — оптимальный выбор для бизнеса
Речь идёт о бессрочной возможности пользоваться On-Premise версией Mind Server в закрытой сети совершенно бесплатно.
Читать полностью »

Grafana, InfluxDB, два тега и одна сумма. Или как посчитать сумму подгрупп? - 1
Всем привет!

Занимаюсь тестированием производительности. И очень люблю настраивать мониторинг и любоваться метриками в Grafana. А стандартом для хранения метрик в инструментах для подачи нагрузки является InfluxDB. В InfluxDB можно сохранять метрики из таких популярных инструментов, как:

Работая с инструментами по тестированию производительности и их метриками, накопил подборку рецептов программирования для связки Grafana и InfluxDB. Предлагаю рассмотреть интересную задачу, которая возникает там, где есть метрика с двумя и более тегами. Думаю, это не редкость. И в общем случае задача звучит так: подсчёт суммарной метрики по группе, которая делится на подгруппы.
Читать полностью »


https://ajax.googleapis.com/ajax/libs/jquery/3.4.1/jquery.min.js