coding

Описание

Мы используем CDN для раздачи статичных файлов и хотим иметь статистику по этой раздаче (коды ответов, rps, полосу пропускания)

Первый и самый главный вопрос - откуда получить эти данные? Конечно же из CDN API.

Ищем… Ага! Статистика по конкретному аккаунту с разбивкой по ресурсам

Атуально для Akka HTTP начиная с версии 10.2.0

Github Issue: Add coordinated shutdown support

По-умолчанию, Akka при завершении (в т.ч. получении SIGTERM) запускает процесс Coordinated Shutdown, в рамках которого происходят последовательно несколько фаз:

  • before-service-unbind
  • service-unbind
  • service-requests-done
  • service-stop
  • before-cluster-shutdown
  • cluster-sharding-shutdown-region
  • cluster-leave
  • cluster-exiting
  • cluster-exiting-done
  • cluster-shutdown
  • before-actor-system-terminate
  • actor-system-terminate

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

В рамках Akka HTTP нас в первую очередь интересуют следующие фазы

  • service-unbind #перестаёт слушаться tcp порт и перестают приниматься новые соединения. Установленные соединения не разрываются
  • service-requests-done #ожидается окончание запросов, которые в данный момент обрабатываются кодом и клиент ожидает на них ответ
  • service-stop #закрываются все установленные соединения

По-умолчанию (default-phase-timeout = 5s), после unbind есть 5 секунд на завершение текущих запросов

При использовании Kubernetes, стоит принимать во внимание также его таймаут terminationGracePeriodSeconds, в течение которого будет ожидаться реакция на SIGTERM, после чего будет послан SIGKILL. По-умолчанию, он равен 30s

Представьте, что у вас есть сайт. А на этом сайте у вас подключен TinyMCE. Да подключен не к одному textarea, а к пачке разных, и надо сделать так, чтобы на разных textarea были разные настройки. Что в первую очередь приходит в голову? Правильно! Наделаем разных классов и будем по css-селекторам создавать разные инстансы. А что получим в итоге? Тоже правильно! Лапша в коде

Сделаем по-умному

В summernote для codeview используется codemirror, так что нам надо, чтобы сам summernote расставил переносы строк (prettifyHtml: true), а средствами codemirror`а мы уже сделаем отступы.

Введение

Об удобстве использования профайлера, да ещё с графическим интерфейсом и говорить нечего, особенно когда надо найти узкие места под нагрузкой.

tideways - само расширение php для сбора данных о производительности кода

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

Так случилось, что появилась необходимость бэкапить накопленные архивы фотографий, поэтому поставил себе в jail на фряхе owncloud 6.0.0a. Ничего сложного в этом нет, кроме как необходимость собирать nginx, php и mysql с нужными модулями из исходников, т.к. в пакетах нет необходимого. Может как-нибудь в будущем накатаю пост об этом.

Итак, в установленном и работающем ownCloud размеры синхронизированных папок отображаются неправильно: максимально показывается 2ГБ на папку, а общие занятое и свободное пространства неверные.