HEX
Server: Apache/2.4.41 (Ubuntu)
System: Linux vmi1674223.contaboserver.net 5.4.0-182-generic #202-Ubuntu SMP Fri Apr 26 12:29:36 UTC 2024 x86_64
User: root (0)
PHP: 7.4.3-4ubuntu2.22
Disabled: pcntl_alarm,pcntl_fork,pcntl_waitpid,pcntl_wait,pcntl_wifexited,pcntl_wifstopped,pcntl_wifsignaled,pcntl_wifcontinued,pcntl_wexitstatus,pcntl_wtermsig,pcntl_wstopsig,pcntl_signal,pcntl_signal_get_handler,pcntl_signal_dispatch,pcntl_get_last_error,pcntl_strerror,pcntl_sigprocmask,pcntl_sigwaitinfo,pcntl_sigtimedwait,pcntl_exec,pcntl_getpriority,pcntl_setpriority,pcntl_async_signals,pcntl_unshare,
Upload Files
File: //opt/openproject/config/initializers/log_slow_sql_queries.rb
OpenProject::Application.configure do
  config.after_initialize do
    slow_sql_threshold = OpenProject::Configuration.sql_slow_query_threshold.to_i
    return if slow_sql_threshold == 0

    ActiveSupport::Notifications.subscribe("sql.active_record") do |_name, start, finish, _id, data|
      # Skip transaction that may be blocked
      next if data[:sql].match(/BEGIN|COMMIT/)

      # Skip smaller durations
      duration = ((finish - start) * 1000).round(4)
      next if duration <= slow_sql_threshold

      payload = {
        duration: duration,
        time: start.iso8601,
        cached: !!data[:cache],
        sql: data[:sql],
      }

      sql_log_string = data[:sql].strip.gsub(/(^([\s]+)?$\n)/, "")
      OpenProject.logger.warn "Encountered slow SQL (#{payload[:duration]} ms): #{sql_log_string}",
                              payload: payload,
                              # Hash of the query for reference/fingerprinting
                              reference: Digest::SHA1.hexdigest(data[:sql])
    rescue StandardError => e
      OpenProject.logger.error "Failed to record slow SQL query: #{e}"
    end
  end
end