124 votes

nginx - le corps de la requête du client est mis en mémoire tampon dans un fichier temporaire

J'obtiens l'erreur suivante dans mes fichiers journaux chaque fois que j'essaie de télécharger un gros fichier.

a client request body is buffered to a temporary file /var/lib/nginx/body/0000000001

Bien que le fichier se télécharge avec succès, je reçois toujours l'erreur ci-dessus.

J'ai augmenté le client_body_buffer_size a 1000m ce qui correspond à ce que je pense être le plus gros fichier téléchargé. Cependant, ce n'était qu'une supposition et bien que je n'obtienne plus cette erreur, je me demande si c'est une valeur appropriée à définir pour le paramètre de l'erreur de chargement. client_body_buffer_size ?

J'apprécierais que quelqu'un puisse m'éclairer sur cette directive et sur la manière dont elle doit être utilisée.

107voto

Michael Hampton Points 232226

Il s'agit d'un avertissement et non d'une erreur. C'est pourquoi il a été précédé de [warn] dans le journal.

Cela signifie que la taille du fichier téléchargé était plus grande que le tampon en mémoire réservé aux téléchargements.

La directive client_body_buffer_size contrôle la taille de cette mémoire tampon.

Si vous pouvez vous permettre d'avoir 1 Go de RAM toujours réservé pour le téléchargement occasionnel de fichiers, c'est parfait. Le fait de mettre le téléchargement en mémoire tampon dans la RAM plutôt que dans un fichier temporaire sur le disque permet d'optimiser les performances, bien qu'avec des téléchargements aussi importants, quelques secondes supplémentaires n'ont probablement pas beaucoup d'importance. Si la plupart de vos téléchargements sont petits, c'est probablement un gaspillage.

En fin de compte, vous êtes le seul à pouvoir décider de la taille appropriée.

42voto

eddy85br Points 405

Si vous ne voulez pas que NginX stocke le contenu du corps dans un fichier temporaire, vous pouvez définir votre configuration comme suit :

    client_body_buffer_size     10M;
    client_max_body_size        10M;

Si vous fixez ces deux configurations à la même taille maximale (en k, M ou G pour kB, MB ou GB, respectivement), vous empêcherez NginX de créer un fichier temporaire.

Pour plus d'informations : http://nginx.org/en/docs/http/ngx_http_core_module.html#client_body_buffer_size y http://nginx.org/en/docs/http/ngx_http_core_module.html#client_max_body_size

SistemesEz.com

SystemesEZ est une communauté de sysadmins où vous pouvez résoudre vos problèmes et vos doutes. Vous pouvez consulter les questions des autres sysadmins, poser vos propres questions ou résoudre celles des autres.

Powered by:

X