Skip to content

dz4#118

Open
stashevgenij wants to merge 7 commits intohardcode-dev:masterfrom
stashevgenij:master
Open

dz4#118
stashevgenij wants to merge 7 commits intohardcode-dev:masterfrom
stashevgenij:master

Conversation

@stashevgenij
Copy link
Copy Markdown

@stashevgenij stashevgenij commented Aug 5, 2022

Rails Optimization - HW4

1. Завести dev.to локально

Пробую запустить проект по инструкции из README.

Возникли ошибки при yarn install, помог запуск yarn upgrade. Старые миграции не проходили, пришлось указать версию в наследовании ActiveRecord::Migration[4.2].

После этого проект успешно запустился, но база была пустая, запустил db:seed. Всё завелось)

2. Настроить свой NewRelic для мониторинга локального dev.to

Зарегистрировался в New Relic, скачал конфиг, установил гем, данные начали появляться в New Relic. Файл конфига добавил в гит игнор.

3. Настроить свой Skylight / Scout / Datadog для мониторинга локального dev.to

Зарегистрировался в Skylight, так как он уже настроен в проекте через ENV переменную, решил так и оставить, просто добавить эту переменную в Envfile и config/application.yml.

В Skylight появилось только окружение production, поэтому я добавил development в конфиге application.rb.

4. Настроить свой Prometheus + Grafana для мониторинга локального dev.to

Добавил гем prometheus_exporter, ещё раз изучил и скопировал конфиги docker-compose.yml, prometheus.yml. Также решил добавить и custom-collector.rb, чтобы потренироваться с кастомными метриками. Добавил инишиалайзер, обновил Procfile.dev.

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

5. Настроить rack-mini-profiler

Добавил гем, rmp поднялся.

6. Настроить rails-panel

Добавил гем meta_request, Rails Panel поднялась.

7. Сделать возможность запуска проекта в local_production

Скопировал конфиг development.rb и изменил настройки под local_production, дополнил все настройки новой средой local_production. Создал файл tmp/caching-dev.txt. Добавил скрипт запуска bin/startup_lp с компиляцией ассетов.

Возникла ошибка таймаута, поэтому увеличил время таймаута для среды local_production.

8. Оптимизация

Сделал замеры до и после добавления кеширования, как итог скорость загрузки увеличилась примерно в 2 раза.

100 запросов с помощью команды ab без кеширования выполнялись за 9-10 секунд, после добавления кеширования за 4-5.

Итог

Я попрактиковался в настройке и использовании разных систем мониторинга, попробовал как SaaS, так и DIY решения. Еще раз попробовал rmp и rails-panel, закрепил навыки.

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

Попробовал инструмент ab, на мой взгляд, самый простой и быстрый для замера скорости загрузки страниц и понимания эффективности оптимизаций. Удобно использовать в фидбек-лупе, так как быстро даёт обратную связь по проделанным изменениям.

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

Copy link
Copy Markdown
Collaborator

@spajic spajic left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

👌✅

Comment thread case-study.md

Попробовал инструмент `ab`, на мой взгляд, самый простой и быстрый для замера скорости загрузки страниц и понимания эффективности оптимизаций. Удобно использовать в фидбек-лупе, так как быстро даёт обратную связь по проделанным изменениям.

Добавил небольшую оптимизацию на главную страницу с помощью кеширования, оценил на конкретных цифрах какой эффект даёт кеширование фрагмента.
Copy link
Copy Markdown
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Отлично, всё то что надо! 👍

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants