Reminder to all repository users: Please do not add , commit and push any data files to your remote git repositories. The disk space the Git server is limited, it wasn't dimensioned to host anything else than code. Solely your code files need versioning. The data inputs/outputs don't. A good idea is to do "git add" individually on each file you want to commit, to avoid versioning unwanted content.

Profiling

To make it easier to track down performance problems GitLab comes with a set of profiling tools, some of these are available by default while others need to be explicitly enabled.

Sherlock

Sherlock is a custom profiling tool built into GitLab. Sherlock is only available when running GitLab in development mode and when setting the environment variable ENABLE_SHERLOCK to a non empty value. For example:

ENABLE_SHERLOCK=1 bundle exec rails s

Recorded transactions can be found by navigating to /sherlock/transactions.

Bullet

Bullet is a Gem that can be used to track down N+1 query problems. Because Bullet adds quite a bit of logging noise it's disabled by default. To enable Bullet, set the environment variable ENABLE_BULLET to a non-empty value before starting GitLab. For example:

ENABLE_BULLET=true bundle exec rails s

Bullet will log query problems to both the Rails log as well as the Chrome console.

As a follow up to finding N+1 queries with Bullet, consider writing a QueryRecoder test to prevent a regression.