> ## 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.

# Suivre le temps de file d'attente des requêtes

## Temps de file d'attente

Une configuration courante pour une application Ruby est que le serveur web Ruby tel qu'Unicorn ou Puma s'exécute derrière un autre serveur web (externe) tel que Nginx ou Apache. Ceux-ci sont généralement utilisés pour terminer les connexions SSL et gérer les assets statiques par exemple. Lorsque votre serveur web Ruby est occupé à traiter des requêtes, Nginx ou Apache peut toujours accepter de nouvelles connexions et attendre qu'un processus Ruby devienne disponible pour traiter la requête. Le serveur web externe met la requête en file d'attente entre-temps.

Idéalement, il y a suffisamment de capacité pour que le serveur web externe n'ait jamais à attendre Ruby, mais en pratique, cela peut se produire lorsqu'il y a un pic soudain de requêtes.

Un bon indicateur de capacité est donc la métrique du temps de file d'attente, c'est-à-dire le temps écoulé entre le moment où le serveur web externe a accepté la requête et le moment où Ruby la traite. Un long temps de file d'attente sur une période prolongée indique que vous devrez augmenter le nombre de processus/threads Ruby pour traiter les requêtes, ou faire évoluer davantage de serveurs web.

Vous pouvez trouver les métriques de temps de file d'attente sur la page des graphiques de performance :

<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="Capture d'écran du graphique du temps de file d'attente" width="2560" height="1440" data-path="assets/images/screenshots/queue_time_graph.png" />

## Configuration

AppSignal suit automatiquement le temps de file d'attente sur Heroku, mais si vous exécutez votre propre serveur avec NGINX ou Apache, vous devrez configurer les en-têtes corrects pour que le suivi du temps de file d'attente fonctionne.

### NGINX

Vous pouvez utiliser la variable [`${msec}`](http://nginx.org/en/docs/http/ngx_http_core_module.html#variables) avec [NGINX 1.2.6](http://nginx.org/en/docs/http/ngx_http_core_module.html#variables) ou supérieur. C'est l'heure actuelle en millisecondes.

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

### Apache

Dans Apache, [mod\_headers](https://httpd.apache.org/docs/current/mod/mod_headers.html) expose une variable `"$t"` qui peut être utilisée pour suivre le temps de file d'attente. Ajoutez l'en-tête comme suit :

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

### HAProxy

Ajoutez ce qui suit à la configuration frontend HAProxy pertinente pour suivre le temps de file d'attente de la requête. Cela expose la valeur datetime du moment où la requête a été envoyée afin qu'AppSignal puisse calculer le temps de file d'attente de la requête.

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

## Namespaces

À partir de la gem Ruby 2.11 et plus récente, le temps de file d'attente est signalé pour tous les namespaces. Auparavant, il ne signalait les temps de file d'attente que pour les namespaces « web » et « background ». Mettez à jour vers la dernière version de la gem Ruby si vous ne voyez pas les graphiques de temps de file d'attente pour vos [namespaces personnalisés](/application/namespaces)
