Maison  >  Article  >  Opération et maintenance  >  Comment résoudre l'erreur de serveur interne de l'invite 500 de Nginx

Comment résoudre l'erreur de serveur interne de l'invite 500 de Nginx

WBOY
WBOYavant
2023-05-27 23:27:363005parcourir

Dans le cas de connexions concurrentes élevées, nginx est une bonne alternative au serveur Apache. nginx peut également être utilisé comme serveur d'équilibrage de charge de couche 7. Selon les résultats des tests, nginx 0.6.31 + php 5.2.6 (fastcgi) peut supporter plus de 30 000 connexions simultanées, ce qui équivaut à 10 fois celui d'Apache dans le même environnement.
Mais de nombreuses personnes recevront 500 erreurs lors de l'utilisation de nginx. Selon mon utilisation, cela est en grande partie dû au fait que le handle d'ouverture du fichier est trop petit.
Sous Linux, utilisez cette commande pour augmenter le descripteur de fichier ouvert par le processus.
ulimit -shn 51200
Seul 1000 est utilisé par défaut. Il n'est pas visible lorsque le nombre de liens est petit. L'utilisation de cette méthode de traitement peut efficacement empêcher que 500 erreurs ne se produisent.
Lorsque j'ai visité le site Web aujourd'hui, j'ai parfois rencontré une page d'erreur de serveur interne 500.
Après avoir vérifié les informations pertinentes, j'ai pensé que cela était dû à un accès excessif et à des processus limités du noyau système.
La réponse est la suivante :
$ ulimit. -n
11095
La limite du programme ne peut ouvrir que 11095 fichiers. La commande ulimit consiste à définir le nombre de descripteurs de fichiers que l'utilisateur actuel peut avoir dans un seul processus.
Il semble que le nombre de simultanéités simulées soit trop élevé. pour ajuster le nombre de paramètres de concurrence dans nginx.conf , (la mémoire de mon hôte de configuration est de 2 Go et le processeur est de 2,8 Go,)

Copiez le code Le code est le suivant :

vi /etc/nginx/ nginx.conf
events {
worker_connections 1024;
}

AdJust to

copy code Le code est le suivant:

Events {
worker_connections 10240;
}

Le problème ci-dessus se produira toujours, utilisez
[racine @qimutian nginx]# cat /proc/sys/fs/file-max
8192
Le système de fichiers est le plus grand Le nombre de fichiers ouverts
[root@qimutian nginx]# ulimit -n
1024
Les limites du programme ne peuvent s'ouvrir que 1024 fichiers
Utilisez [root@qimutian nginx]# ulimit -n 8192 pour l'ajuster
ou ajustez définitivement le nombre de fichiers ouverts dans Ajouter à la fin du fichier de démarrage /etc/rc.d/rc.local (ajoutez fs. file-max=8192 à la fin de /etc/sysctl.conf)
ulimit -n 8192
Ajustez le nombre d'ouvertures de fichiers centos5
Utilisez ulimit -a, il a été constaté que les fichiers ouverts ne peuvent pas dépasser 1024 par défaut. test hier, une erreur 500 s'est produite. Veuillez vérifier les détails.
Une erreur de serveur interne 500 s'est produite dans nginx. Quand je me suis réveillé et j'ai jeté un coup d'œil le matin, j'ai découvert qu'elle avait été ajustée comme suit.
vi /etc/security/limits.conf
Ajouter à la fin du fichier :
* soft nofile 8192
* hard nofile 20480
En même temps, ajouter
fs.file-max=8192 à la fin de vi / etc/sysctl.conf
Redémarrez, le numéro vérifié avec ulimit -n est déjà 8192
Méthode 2 (utilisation temporaire)
Saisissez ulimit -n 8192 directement dans le terminal et appuyez sur Entrée et ce sera OK

500 erreur de serveur interne Erreur supplément :
1. L'espace disque est plein Utilisez df -k pour vérifier si l'espace disque est plein. Libérer de l'espace sur le disque dur peut résoudre 500 erreurs. Si le journal d'accès est activé dans nginx, il est préférable de fermer le journal d'accès lorsqu'il n'est pas nécessaire. Le journal d'accès occupe beaucoup d'espace sur le disque dur.
2. Erreur du fichier de configuration nginx
Cela ne fait pas référence aux erreurs grammaticales si nginx a une erreur grammaticale dans le fichier de configuration, il vous le demandera au démarrage. Lors de la configuration de la réécriture, 500 erreurs peuvent se produire si certaines règles ne sont pas gérées correctement. Veuillez vérifier attentivement vos règles de réécriture. Si certaines variables du fichier de configuration sont mal définies, une erreur 500 se produira également, par exemple en faisant référence à une variable sans valeur.
3. Si aucun des problèmes ci-dessus n'existe, il se peut que le nombre de simultanéités simulées soit trop élevé. Vous devez ajuster le nombre de paramètres de simultanéité dans nginx.conf. La solution est la suivante :
1 Ouvrez le fichier /etc/security. /limits.conf et ajoutez deux phrases


Copiez le code Le code est le suivant :

* soft nofile 65535

* hard nofile 65535

2 Ouvrez /etc/nginx/nginx.conf
Ajoutez une ligne sous work_processes


Copiez le code Le code est le suivant :

worker_rlimit_nofile 65535;

3 Redémarrez nginx et rechargez les paramètres

Copier le code Le code est le suivant :

kill -9 `ps -ef | grep -v grep | -hup nginx

Redémarrez puis regardez le journal des erreurs nginx, aucune erreur 500 n'a également été trouvée.

4. Il s'agit peut-être d'un problème de base de données. Je n'ai trouvé aucun problème dans le journal nginx ou php. Finalement, j'ai constaté que la base de données n'était pas accessible. Après la correction, le problème a été résolu.

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!

Déclaration:
Cet article est reproduit dans:. en cas de violation, veuillez contacter admin@php.cn Supprimer