J'exécute Squid 3.3 (EPEL) sur CentOS 7 et j'ai récemment obtenu le message d'erreur suivant dans ma page d'accueil cache.log
WARNING! Your cache is running out of filedescriptors
Je suis un peu perplexe à ce sujet, car il semble que je dispose de nombreux descripteurs :
squidclient mgr:info | grep 'file descri'
Maximum number of file descriptors: 16384
Available number of file descriptors: 16326
Reserved number of file descriptors: 100
Squid a également été compilé avec ce drapeau :
--with-filedescriptors=16384
Squid confirme que ceux-ci sont effectivement disponibles au démarrage :
2015/08/18 21:11:45 kid1| With 16384 file descriptors available
Cependant, cette erreur continue de se produire. Peu de temps après l'enregistrement de cette erreur, le squid
semble également atteindre 100 % de l'unité centrale ou utiliser la quasi-totalité de la mémoire du système à plus de 90 %, ce qui fait chuter la vitesse d'Internet ou la bloque indéfiniment. Le fait de tuer le processus et de le redémarrer résout le problème, mais il finit par se reproduire.
J'ai un total de 8 Go de mémoire disponible, ce sont les paramètres relatifs à la mémoire et au cache dans mon système d'exploitation. squid.conf
cache_dir ufs /var/spool/squid 16000 16 256
cache_mem 1024 MB
J'utilise également ufdbguard
et des plugins d'aide supplémentaires pour l'authentification Kerberos et NTLM.
Des conseils ?
0 votes
Fournir la sortie dmesg
0 votes
Rien d'utile, surtout un pare-feu
0 votes
Avez-vous essayé des solutions comme celle-ci : cyberciti.biz/faq/ ?
0 votes
Combien de fichiers dans votre répertoire de cache ? find /var/spool/squid -type f | wc -l
0 votes
Non, parce que la valeur du descripteur telle qu'elle est maintenant semble correcte ? La plupart des exemples montrent le problème lorsque les descripteurs ont une faible valeur comme 1024, ce qui n'est pas le cas ici.
0 votes
La valeur du cache est de 43409. Je suppose que c'est beaucoup, mais j'ai assez d'espace disque/RAM en théorie.
0 votes
Je pense que vous ne comprenez pas ce que sont les descripteurs de fichiers. Augmentez le nombre de fichiers ouverts dans /etc/security/limits.conf à 65535. Fournissez également la sortie de sysctl fs.nr_open.
0 votes
Je commence à comprendre maintenant, la valeur des répertoires de cache rapportée est plus grande que les descripteurs actuels donc elle doit être augmentée, n'est-ce pas ?
0 votes
Yep. Chaque descripteur de fichier est un entier associé au fichier ouvert. Vérifie l'ouverture de l'homme 2.
0 votes
ulimit -n
maintenant 65535,fs.nr_open = 1048576
0 votes
Ok, redémarre le calmar et vérifie le résultat. Vous devriez modifier sudo vi /etc/default/squid comme le dit le lien :)
0 votes
Rapports sur les calamars
With 16384 file descriptors available
todavía0 votes
Avez-vous édité /etc/default/squid ?
0 votes
Oui, mais dans mon cas, ce serait /etc/sysconfig/squid, car CentOS 7 est systemd.
0 votes
Grep max_filedesc /etc/squid/squid.conf
0 votes
Défini comme la même valeur que ulimit, aucun changement. J'obtiens
NOTICE: Could not increase the number of filedescriptors
dans mon cache.log maintenant cependant. Je ne sais pas si SELINUX peut le bloquer.0 votes
Veuillez préciser si vous avez redémarré Squid après tous les changements ?
0 votes
Oui, redémarrage complet du processus squid avec systemctl, je n'ai pas redémarré le serveur lui-même cependant.
0 votes
Fournir la sortie sysctl fs.file-max
0 votes
fs.file-max = 777240
0 votes
En fait, il me manque quelque chose. Vérifiez avec la commande ulimit que les limites des fichiers sont correctes.
0 votes
Rapports ulimit
65535
0 votes
Je pense que c'est dû au fait que la valeur de compilation est codée en dur.
0 votes
Je suis dans le même bateau. Si vous exécutez
squid -v
vous verrez l'option de compilation--with-filedescriptors=16384
c'est le mur que vous frappez. Je suis moi-même en train de débattre de ce que je dois faire ensuite. J'envisage de compiler à partir des sources et de modifier les descripteurs.