> ## Documentation Index
> Fetch the complete documentation index at: https://docs.appsignal.com/llms.txt
> Use this file to discover all available pages before exploring further.

# Request-Queue-Time verfolgen

## Queue-Zeiten

Ein gängiges Setup für Ruby-Anwendungen ist, dass der Ruby-Webserver wie Unicorn oder Puma hinter einem anderen (äußeren) Webserver wie Nginx oder Apache läuft. Diese werden normalerweise verwendet, um SSL-Verbindungen zu terminieren und beispielsweise statische Assets zu verwalten. Wenn Ihr Ruby-Webserver mit der Verarbeitung von Requests beschäftigt ist, können Nginx oder Apache weiterhin neue Verbindungen annehmen und darauf warten, dass ein Ruby-Prozess verfügbar wird, um den Request zu bearbeiten. Der äußere Webserver stellt den Request in der Zwischenzeit in eine Queue.

Idealerweise gibt es genügend Kapazität, sodass der äußere Webserver nie auf Ruby warten muss, aber in der Praxis kann dies bei einem plötzlichen Anstieg der Requests passieren.

Ein guter Indikator für die Kapazität ist daher die Queue-Time-Metrik, d. h. die Zeitspanne zwischen dem Annehmen des Requests durch den äußeren Webserver und der Bearbeitung des Requests durch Ruby. Eine lange Queue-Zeit über einen längeren Zeitraum deutet darauf hin, dass Sie die Anzahl der Ruby-Prozesse/Threads, die Requests bearbeiten, oder die Anzahl der Webserver hochskalieren müssen.

Sie finden die Queue-Time-Metriken auf der Performance-Graphs-Seite:

<img src="https://mintcdn.com/appsignal-715f5a51/4TRZP0Sq9Zq7PAPW/assets/images/screenshots/queue_time_graph.png?fit=max&auto=format&n=4TRZP0Sq9Zq7PAPW&q=85&s=59ec70caa98e86cf5ec34dd5c76eb045" alt="Screenshot of Queue time graph" width="2560" height="1440" data-path="assets/images/screenshots/queue_time_graph.png" />

## Setup

AppSignal verfolgt die Queue-Zeit auf Heroku automatisch, aber wenn Sie Ihren eigenen Server mit NGINX oder Apache betreiben, müssen Sie die richtigen Header einrichten, damit die Verfolgung der Queue-Zeit funktioniert.

### NGINX

Sie können die Variable [`${msec}`](http://nginx.org/en/docs/http/ngx_http_core_module.html#variables) mit [NGINX 1.2.6](http://nginx.org/en/docs/http/ngx_http_core_module.html#variables) oder höher verwenden. Dies ist die aktuelle Zeit in Millisekunden.

<CodeGroup>
  ```ruby Ruby theme={null}
  proxy_set_header X-Request-Start "t=${msec}";
  ```
</CodeGroup>

### Apache

In Apache stellt [mod\_headers](https://httpd.apache.org/docs/current/mod/mod_headers.html) eine `"$t"`-Variable bereit, die zur Verfolgung der Queue-Zeit verwendet werden kann. Fügen Sie den Header wie folgt hinzu:

<CodeGroup>
  ```ruby Ruby theme={null}
  RequestHeader set X-Request-Start "%t"
  ```
</CodeGroup>

### HAProxy

Fügen Sie der relevanten HAProxy-Frontend-Konfiguration Folgendes hinzu, um die Queue-Zeit des Requests zu verfolgen. Dies stellt den Datums-/Zeitwert bereit, zu dem der Request gesendet wurde, sodass AppSignal die Queue-Zeit des Requests berechnen kann.

<CodeGroup>
  ```conf Config theme={null}
  http-request set-header X-Request-Start t=%[date(0, us)]
  ```
</CodeGroup>

## Namespaces

Ab Ruby-Gem 2.11 und neuer wird die Queue-Zeit für alle Namespaces gemeldet. Zuvor wurden Queue-Zeiten nur für die Namespaces "web" und "background" gemeldet. Aktualisieren Sie auf die neueste Version des Ruby-Gems, wenn Sie keine Queue-Time-Graphen für Ihre [benutzerdefinierten Namespaces](/application/namespaces) sehen.
