Skip to content

DmitryKK/ecto_profiler

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

9 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

EctoProfiler

Hex Version

Project for Ecto DB profiling

Installation

  1. Add ecto_profiler to your list of dependencies in mix.exs:
def deps do
  [{:ecto_profiler, github: "DmitryKK/ecto_profiler", only: [:dev]}]
end

Fetch and compile the dependency

mix do deps.get, deps.compile

  1. Ensure ecto_profiler is started before your application:
def application(:dev) do
  [applications: [:ecto_profiler]]
end
  1. Add some ecto_profiler configuration to the config file config/dev.exs
config :ecto_profiler, EctoProfiler,
  # name of yours app
  app_name: :my_great_app,
  # title of profiling page (optional)
  page_title: "Profiling for my great APP"
  1. Add EctoProfiler logger for ecto to the config file config/dev.exs, for example:
config :my_greap_app, MyGreatApp.Repo,
  adapter: Ecto.Adapters.Postgres,
  username: "postgres",
  password: "postgres",
  database: "my_great_app_dev",
  hostname: "localhost",
  pool_size: 10,
  timeout: 15_000,
  pool_timeout: 15_000,
  ownership_timeout: 15_000,
  loggers: [{EctoProfiler, :log, []}]
  1. Maximize stacktrace depth for phoenix in your configuration file. Default value for dev is 20, for prod is 8. But it is litle depth and you should increase this, for example:
config, :phoenix, :stacktrace_depth, 50
  1. Add the profiling route to the router file web/router.ex:
defmodule MyGreatApp.Router do

  get "/profiling", EctoProfiler.MainController, :show
  1. EctoProfiler uses Mnesia for storing data, therefore you need to run mnesia in your application. For example, you could run separate proccess where would it:
  mnesia.start()

Start the application with iex -S mix phoenix.server

Visit http://localhost:4000/profiling

You should see page with current profiling.

Documentation

Documentation can be generated with ExDoc and published on HexDocs. Once published, the docs can be found at https://hexdocs.pm/ecto_profiler.

Contributing

  1. Fork it
  2. Create your feature branch (git checkout -b my-new-feature)
  3. Commit your changes (git commit -am 'Add some feature')
  4. Push to the branch (git push origin my-new-feature)
  5. Create new Pull Request