Pull to refresh
1
0
Дмитрий @askord

User

Send message

Профилировщик запросов в БД в Phoenix. И немножко о том как работает stacktrace в Elixir/Erlang

Reading time4 min
Views3.1K

В нашей компании мы используем Elixir, фреймворк Phoenix и Ecto. И недавно на работе мне поставили задачу, сделать профилировщик запросов в БД, чтобы выяснить узкие точки системы, которые следует оптимизировать. Таким образом задачи были следущие:


  1. Выяснить, какие функции чаще всего обращаются в базу (query calls)
  2. Выяснить какие функции создают самые долгие и медленные запросв (query time)
  3. Результаты необходимо аккумулировать и выводить в виде списка/графика.

Как и все, изначально я решил попробовать существующие решения. Простой гуглопоиск выдал мне несколько статей, и некоторые решения а-ля:


https://github.com/parroty/exprof
http://erlang.org/doc/man/fprof.html
https://github.com/proger/eflame
https://github.com/TheRealReal/new-relixir


и др.


Беглый осмотр сразу дал понять что существующие решения не подходят. Некоторые не позволяют аккумулировать результаты, некоторые вообще считают общие вызовы и не важно там БД или нет, что-то платное и так же не обладает необходимой функциональностью. Почесав репу, я понял, что придется писать свой личный кастомный профилировщик.

Читать дальше →
Total votes 13: ↑13 and ↓0+13
Comments0

Information

Rating
Does not participate
Location
Москва, Москва и Московская обл., Россия
Date of birth
Registered
Activity