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

Optimization StoriesController#index #141

Open
wants to merge 2 commits into
base: master
Choose a base branch
from

Conversation

beglov
Copy link

@beglov beglov commented May 29, 2024

  • Завести dev.to локально
  • Настроить свой NewRelic для мониторинга локального dev.to
    судя по всему сервис не доступен с российского IP
  • Настроить свой Skylight / Scout / Datadog для мониторинга локального dev.to
    выбрал Skylight, т.к. привлек своей простотой
  • Настроить свой Prometheus + Grafana для мониторинга локального dev.to
  • Настроить rack-mini-profiler
  • Настроить rails-panel
    не вижу особой ценности в этом инструменте, всю туже информацию можно увидеть в логах
  • Сделать возможность запуска проекта в local_production

Оптимизация StoriesController#index

rack-mini-profiler показывает что существенное время занимает рендеринг partial-ов _single_story.html.erb.
Можно их закешировать. Перед внесением изменений среднее время выполнения запроса к странице было около 100 мс.

$ ab -n 50 http://localhost:3000/
This is ApacheBench, Version 2.3 <$Revision: 1879490 $>
Copyright 1996 Adam Twiss, Zeus Technology Ltd, http://www.zeustech.net/
Licensed to The Apache Software Foundation, http://www.apache.org/

Benchmarking localhost (be patient).....done


Server Software:        
Server Hostname:        localhost
Server Port:            3000

Document Path:          /
Document Length:        138134 bytes

Concurrency Level:      1
Time taken for tests:   5.143 seconds
Complete requests:      50
Failed requests:        0
Total transferred:      6933450 bytes
HTML transferred:       6906700 bytes
Requests per second:    9.72 [#/sec] (mean)
Time per request:       102.866 [ms] (mean)
Time per request:       102.866 [ms] (mean, across all concurrent requests)
Transfer rate:          1316.46 [Kbytes/sec] received

Connection Times (ms)
              min  mean[+/-sd] median   max
Connect:        0    0   0.0      0       0
Processing:    81  103  22.3     91     164
Waiting:       80  102  22.3     90     164
Total:         81  103  22.3     91     164

Percentage of the requests served within a certain time (ms)
  50%     91
  66%    103
  75%    123
  80%    129
  90%    142
  95%    144
  98%    164
  99%    164
 100%    164 (longest request)

После добавления кеширования среднее время выполнения запроса стало 67 мс.

$ ab -n 50 http://localhost:3000/
This is ApacheBench, Version 2.3 <$Revision: 1879490 $>
Copyright 1996 Adam Twiss, Zeus Technology Ltd, http://www.zeustech.net/
Licensed to The Apache Software Foundation, http://www.apache.org/

Benchmarking localhost (be patient).....done


Server Software:        
Server Hostname:        localhost
Server Port:            3000

Document Path:          /
Document Length:        138134 bytes

Concurrency Level:      1
Time taken for tests:   3.379 seconds
Complete requests:      50
Failed requests:        0
Total transferred:      6933450 bytes
HTML transferred:       6906700 bytes
Requests per second:    14.80 [#/sec] (mean)
Time per request:       67.589 [ms] (mean)
Time per request:       67.589 [ms] (mean, across all concurrent requests)
Transfer rate:          2003.56 [Kbytes/sec] received

Connection Times (ms)
              min  mean[+/-sd] median   max
Connect:        0    0   0.0      0       0
Processing:    52   68  19.6     59     139
Waiting:       52   67  19.6     58     138
Total:         52   68  19.6     59     139

Percentage of the requests served within a certain time (ms)
  50%     59
  66%     63
  75%     65
  80%     89
  90%    102
  95%    105
  98%    139
  99%    139
 100%    139 (longest request)

Таким образом удалось ускорить отдачу страницы примерно в 1.5 раза.

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.

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

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