Naar hoofdinhoud gaan

Queue times

Een veelvoorkomende opzet voor Ruby-applicaties is dat de Ruby-webserver, zoals Unicorn of Puma, achter een andere (externe) webserver draait, zoals Nginx of Apache. Die worden meestal gebruikt om bijvoorbeeld SSL-verbindingen af te sluiten en statische assets af te handelen. Wanneer uw Ruby-webserver bezig is met het verwerken van requests, kunnen Nginx of Apache nog steeds nieuwe verbindingen accepteren en wachten tot een Ruby-proces beschikbaar wordt om de request af te handelen. De externe webserver zet de request in de tussentijd in een queue. Idealiter is er voldoende capaciteit zodat de externe webserver nooit op Ruby hoeft te wachten, maar in de praktijk kan dit gebeuren bij een plotselinge piek aan requests. Een goede indicator van capaciteit is daarom de queue time-metric, oftewel de hoeveelheid tijd tussen het moment waarop de externe webserver de request accepteerde en het moment waarop Ruby de request afhandelt. Een lange queue time gedurende een langere periode geeft aan dat u het aantal Ruby-processen/threads moet opschalen om requests af te handelen, of meer webservers moet opschalen. U vindt de queue time-metrics op de Performance Graphs-pagina: Screenshot of Queue time graph

Setup

AppSignal trackt de queue time automatisch op Heroku, maar als u uw eigen server draait met NGINX of Apache, moet u de juiste headers instellen om queue time-tracking te laten werken.

NGINX

U kunt de variabele ${msec} gebruiken met NGINX 1.2.6 of hoger. Dit is de huidige tijd in milliseconden.
proxy_set_header X-Request-Start "t=${msec}";

Apache

In Apache exposeert mod_headers een "$t"-variabele die kan worden gebruikt om de queue time te tracken. Voeg de header als volgt toe:
RequestHeader set X-Request-Start "%t"

HAProxy

Voeg het volgende toe aan de relevante HAProxy frontend-configuratie om de queue time van de request te tracken. Hiermee wordt de datetime-waarde geëxposed van wanneer de request werd verstuurd, zodat AppSignal de queue time van de request kan berekenen.
http-request set-header X-Request-Start t=%[date(0, us)]

Namespaces

Vanaf Ruby gem 2.11 en nieuwer wordt queue time gerapporteerd voor alle namespaces. Voorheen werden queue times alleen gerapporteerd voor de “web”- en “background”-namespaces. Update naar de nieuwste versie van de Ruby gem als u geen queue time-grafieken ziet voor uw custom namespaces