Maison > Article > Opération et maintenance > Comment analyser le journal des erreurs nginx
Il existe deux principaux types de journaux nginx : les journaux d'accès et les journaux d'erreurs. Le journal d'accès enregistre principalement chaque demande du client accédant à nginx, et le format peut être personnalisé ; le journal des erreurs enregistre principalement le journal lorsque le client accède à nginx et qu'une erreur se produit, et le format ne prend pas en charge la personnalisation. . Les deux journaux peuvent éventuellement être désactivés.
Grâce au journal d'accès, vous pouvez obtenir des informations pertinentes telles que la source géographique de l'utilisateur, la source du saut, l'utilisation du terminal, le nombre de visites à une certaine URL ; le journal des erreurs, vous pouvez Vous pouvez obtenir le goulot d'étranglement des performances d'un certain service système ou serveur, etc. Par conséquent, si vous faites bon usage des journaux, vous pouvez obtenir de nombreuses informations précieuses.
[Access.log]
log_format main '$remote_addr $remote_user [$time_local] "$request" $http_host '
'$status $upstream_status $body_bytes_sent "$http_referer" '
'"$http_user_agent" $ssl_protocol $ssl_cipher $upstream_addr '
"$request_time $upstream_response_ time';
Nom de la variable |
Description de la variable |
Exemple |
$remote_addr |
Adresse du client | 113.140.15.90 |
$remote_user |
Nom d'utilisateur du client | - |
$time_local |
Visitez l'heure et le fuseau horaire | 18/Jul/2012:17:00:01 +0800 |
$request |
DemandéURI et HTTPProtocole |
"GET /pa/img/home/logo-alipay-t.png HTTP / 1.1" |
$http_host |
Adresse de demande, c'est-à-dire l'adresse que vous saisissez dans le navigateur (IP ou nom de domaine) |
img.alipay.com 10.253.70.103 |
$statut |
HTTPStatut de la demande |
200 |
$upstream_status |
en amont Statut |
200 |
$body_bytes_sent |
Taille du contenu du fichier envoyé au client |
547 |
$http_referer |
Aller à la source |
"https://cashier.alipay.com.../" |
$http_user_agent |
Agent de terminal utilisateur |
"Mozilla/4.0 (compatible ; MSIE 8.0 ; Windows NT 5.1 ; Trident/4.0 ; SV1 ; GTB7.0 ; .NET4.0C ; |
$ssl_protocol |
SSLVersion du protocole |
TLSv1 |
$ssl_cipher |
Algorithmes en échange de données |
RC4-SHA |
$upstream_addr Adresse |
Backendamont, c'est-à-dire l'adresse de l'hôte qui fournit réellement les services |
10.228.35.247:80 |
$request_time |
Durée totale de la demande entière |
0,205 |
$upstream_response_time |
Pendant le processus de demande, amonttemps de réponse |
0.002 |
线上实例:
116.9.137.90 - [02/Août/2012:14:47:12 +0800] "GET /images/XX/20100324752729.png HTTP/1.1"img.alipay.com 200 200 2038 https://cashier.alipay.com/XX/PaymentResult.htm?payNo=XX&outBizNo=2012XX " Mozilla/4.0 (compatible ; MSIE 8.0 ; Windows NT 6.1 ; Trident/4.0 ; SLCC2 ; .NET CLR 2.0.50727 ; .NET CLR 3.5.30729 ; .NET CLR 3.0.30729 ; Media Center PC 6.0 ; Tablet PC 2.0 ; 360SE )" TLSv1 AES128-SHA 10.228.21.237:80 0,198 0,001
线下测试( $http_referer):
10.14.21.197 - - [14/Août/2012:17:28:22 +0800] "GET /spanner/watch/v1?--db=ztg-1&--mode=compare&--index=status&--option=&--cluster=whole&-F=2012%2F8%2F12-00%3A00%3A00&-T =%2B2880&-i=1&-n=0&_=1344936501292 HTTP/1.1" 200 94193 "http://spanner.alipay.net/optionFrame/history.html" "Mozilla/5.0 (Windows NT 6.1) AppleWebKit/537.1 (KHTML , comme Gecko) Chrome/21.0.1180.60 Safari/537.1"
备注:$http_referer和重定向有关。
线下测试($http_host ):
备注:$http_host的值和你在浏览器里输入的值有关。
错误信息 |
错误说明 |
"en amont prématurément (过早的) connexion fermée" |
请求uri的时候出现的异常,是由于en amont还未返回应答给用户时用户断掉连接造成的,对系统没有影响,可以忽略 |
"échec de recv() (104 : connexion réinitialisée par un homologue)" |
(1)服务器的并发连接数超过了其承载量,服务器会将其中一些连接Down掉; (2)客户关掉了浏览器,而服务器还在给客户端发送数据; (3)浏览器端按了Arrêter |
"(111 : Connexion refusée) lors de la connexion en amont" |
用户在连接时,若遇到后端en amont挂掉或者不通,会收到该错误 |
"(111 : Connexion refusée) lors de la lecture de l'en-tête de réponse depuis l'amont" |
Lorsque les utilisateurs lisent les données après une connexion réussie, si le backend en amont se bloque ou est bloqué, ils recevront cette erreur |
"(111 : Connexion refusée) lors de l'envoi de la requête en amont" |
Nginx et amont sont connectés avec succès et envoient des données, si le backend amont se bloque ou est bloqué, vous recevrez le erreur |
"(110 : expiration du délai de connexion) lors de la connexion en amont " |
nginx a expiré lors de la connexion au amont |
"(110 : connexion expirée) lors de la lecture en amont" |
nginxExpiration du délai lors de la lecture de la réponse de en amont
|
"(110 : expiration du délai de connexion) lors de la lecture de l'en-tête de réponse depuis l'amont" |
nginxExpiration du délai lors de la lecture des en-têtes de réponse de en amont |
"(110 : Délai de connexion expiré) lors de la lecture en amont" | nginxExpiration du délai lors de la lecture de la réponse de en amont |
"(104 : Connexion réinitialisée par un homologue) lors de la connexion en amont" |
en amontEnvoyer "En amont envoyé invalide" en-tête lors de la lecture de l'en-tête de réponse depuis l'amont" en amont | L'en-tête de réponse envoyé est invalide
"l'amont n'a envoyé aucun en-tête HTTP/1.0 valide lors de la lecture de l'en-tête de réponse de l'amont" |
amont | L'en-tête de réponse envoyé est invalide
"client destiné à envoyer un corps trop volumineux" |
est utilisé pour définir la valeur maximale du contenu de la demande du client pouvant être accepté. La valeur par défaut est 1M | ,
envoyé par 🎜> client dépasse la valeur définie |
"réouverture des journaux"L'utilisateur envoie kill -USR1 commande |
"arrêt gracieux", |
Utilisateur envoyé kill -WINCHCommand |
"aucun serveur n'est à l'intérieur en amont" |
amont n'est pas configuré sous serveur |
"pas d'amont en direct lors de la connexion à l'amont" |
amont serveurtous raccroché |
"SSL_do_handshake( ) échec" |
SSLÉchec de la prise de contact |
"SSL_write() a échoué (SSL :) lors de l'envoi au client" |
|
"(13 : Autorisation refusée) lors de la lecture en amont" |
|
"(98 : Adresse déjà utilisée ) tout en se connectant à l'amont" |
|
"(99 : Impossible d'attribuer l'adresse demandée) lors de la connexion en amont" |
|
"Échec de ngx_slab_alloc() : pas de mémoire dans le cache partagé de la session SSL" |
ssl_session_cache est causé par une taille insuffisante et d'autres raisons |
"impossible d'ajouter une nouvelle session SSL au cache de session pendant la négociation SSL" |
ssl_session_cache n'est pas assez grand, etc. Causes |
"send() a échoué (111 : connexion refusée)" |
|
Pour plus d'articles techniques liés à Nginx, veuillez visiter la colonne Tutoriel Nginx pour apprendre !
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!