Я использую Unicorn в качестве моего сервера приложений для своего приложения Rails, и пытаюсь понять, почему иногда бывает нетривиальная ( > 5 секунд) задержка между началом запроса и достижением моего контроллера.
Это то, что выводит мой production.log:
Started GET "/search/articles.json?q=mashable.com" for 138.7.7.33 at 2015-07-23 14:59:19 -0400**
Parameters: {"q"=>"mashable.com"}
Searching articles for keyword: mashable.com, format: json, Time: 2015-07-23 14:59:26 -0400
Обратите внимание, что существует 7-секундная задержка между STARTED GET: и "Поиск статей для ключевого слова", что является первым, что делает метод контроллера.
articles.json перенаправляется на мой метод "статей" моего контроллера, который просто делает это сейчас:
def articles
format = params[:format]
keyword = params["q"]
Rails.logger.info "Searching articles for keyword: #{keyword}, format: #{format}, Time: #{Time.now.to_s}"
end
Это мои маршруты .rb
MyApp::Application.routes.draw do
match '/search/articles' => 'search#articles'
#more routes here, but articles is the first route
end
Что может вызвать эту задержку? Это потому, что рабочий из Единорога занят? Это потому, что работник Единорога занимает слишком много памяти, что приводит к замедлению работы системы?
Примечание. Я не считаю, что задержка заключается в создании каких-либо подключений к базе данных, но я могу ошибаться. Коду не нужно делать вызов базы данных, а максимальные соединения для моей базы данных - 1000, и обычно не более 1-2 соединений.