Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Igor Platonov. Task 8 #15

Open
wants to merge 1 commit into
base: master
Choose a base branch
from
Open

Igor Platonov. Task 8 #15

wants to merge 1 commit into from

Conversation

prog-supdex
Copy link

@prog-supdex prog-supdex commented Sep 3, 2020

Прикладываю три case-study по трем проектам

К сожалению, вышли они не очень большими, можно было бы больше информации внести, будь немного больше времени

case-study 1
case-study 2
case-study 3

Copy link
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.

Круто! Спасибо за интересные кейсы, всё понятно, здорово оформлено и проиллюстрировано!
Респект за отличное прохождение курса!
Судя по кейсам, пользу уже приносит и греет мне душу 👍

Какого-либо мониторинга тут нет

## Тесты
С тестами тут дела обстоят плохо. Их вообще перестали поддерживать, а также сами тесты, на мой взгляд, написаны достаточно неоптимальны, да и вообще, как-то непонятно =)
Copy link
Collaborator

Choose a reason for hiding this comment

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

Печальное начало )


![first](https://i.ibb.co/94sQ8qJ/r-test-1.jpg)

То есть, теперь тесты выполняются 7 секунд, вместо 24. Сами тесты не упали, все работает так, как надо.
Copy link
Collaborator

Choose a reason for hiding this comment

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

Пффф, отличный кейс в копилку ))


![fourth](https://i.ibb.co/X5vvQPs/r-test-4.jpg)

Удалось добиться еще лучших результатов. С 7 секунд до 5
Copy link
Collaborator

Choose a reason for hiding this comment

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

Круто!


Оказывается, Dashboard Pg Hero не работает, если режим rails Api Only.
Можно было через консоль получать необходимые данные, через команды, что дает нам Pg Hero — но мне очень хотелось смотреть в дашборд =)
Поэтому я развернул чистый rails приложение, указал там подключение к нужной нам бд, установил PG Hero и нам нем я уже смотрел Dashboard
Copy link
Collaborator

Choose a reason for hiding this comment

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

PgHero ещё можно поставить как Linux-пакет, у нас админ так и сделал.
https://github.com/ankane/pghero/blob/master/guides/Linux.md


В итоге, вызов bin/rake ab_test:users:list — вызывает ab с необходимыми параметрами по нужному нам роуту

Прогнав AB тесты по некоторым экшенам, и посмотрев в skylight — показало следующие результаты
Copy link
Collaborator

Choose a reason for hiding this comment

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

Лучше бы не называть такие тесты AB-тестами.
Потому что возникает путаница между ab, который apache benchmark и AB-тестами, которые https://ru.wikipedia.org/wiki/A/B-%D1%82%D0%B5%D1%81%D1%82%D0%B8%D1%80%D0%BE%D0%B2%D0%B0%D0%BD%D0%B8%D0%B5



Проанализировав этот контроллер, были обнаружены проблемы.
Например, бессмысленное использование dup у hash. Пример
Copy link
Collaborator

Choose a reason for hiding this comment

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

хотели подстраховаться наверное от того, чтобы попортить передаваемые данные

Copy link
Author

Choose a reason for hiding this comment

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

но ведь merge и так возвращает новый объект, а не изменяет текущий =)
тут больше похоже на то, что тот, кто писал это, не знал об этом)

Общее время выходило чуть больше 12 минут.

И после одного урока по оптимизации, где использовали потоковое чтение/запись с PG — я решил использовать этот способ
Переписал слегка запросы. Теперь мы потоково читаем и потоково пишем в другую БД
Copy link
Collaborator

Choose a reason for hiding this comment

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

Круто! 💪

## Итого
Удалось улучшить результат, но в данном приложение достаточно сложно самому делать нужные запросы, ходить по роутам, соблюдать необходимые условия и, при необходимости, что-то комментировать/дописывать в коде, дабы отработать нужный сценарий

Тут, правильнее всего, поставить New Relic и PG Hero на продакшн. Чтобы собрались данные и отталкиваясь от полученных результатов, оптимизировать приложение
Copy link
Collaborator

Choose a reason for hiding this comment

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

Да, круто, что вы собрали инфу своими руками и даже сделали довольно удобные инструменты для этого, но с системой мониторинга всё равно удобнее )

### Шаг №1
Запуск Coverage в Chrome на главной странице показало следующее

![op_first](https://i.ibb.co/6YYSGpt/t-front-0.jpg)
Copy link
Collaborator

Choose a reason for hiding this comment

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

98% unused, классика )

### Итого
Проблемы с изображениями, их очень много. Также, тут есть большой запас по избавлению от ненужного js и css

Обязательно подниму вопрос о переходе на http2, использование форматов изображений webp, для тех браузеров, что поддерживают. А также продолжу избавляться от неиспользуемого кода js и css
Copy link
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