Inspectez le démon en cours avant de faire confiance au ulimit -n du shell de connexion. Pour une installation qui utilise squid.service, commencez par :

systemctl show squid.service -p MainPID -p LimitNOFILE
systemctl cat squid.service

Lisez /proc/PID/limits avec l'identifiant réel du processus. Dans un déploiement multi-processus, vérifiez aussi le worker concerné. Une valeur enregistrée dans la configuration ne prouve pas que ce processus en a hérité.

ContrôlePortée
Shell ulimit et PAM limits.confLes descendants du shell ou les sessions qui utilisent réellement le réglage PAM
systemd LimitNOFILE=Processus lancés sous la politique de ressources de ce service
Squid max_filedescriptors, lorsque c'est pris en chargeLimite applicative dans les contraintes du système d'exploitation

Un service système n'adopte pas les modifications PAM simplement parce qu'un administrateur a changé le fichier. Utilisez un drop-in propre au service lorsqu'il convient de modifier sa limite systemd. Squid documente que max_filedescriptors exige un redémarrage pour être modifié ; laissé non défini, il hérite de la limite souple du système.

Dimensionnez la limite en descripteurs, pas en utilisateurs. Les clients peuvent détenir plusieurs sockets, et les connexions sortantes, les journaux et les tubes auxiliaires consomment aussi des descripteurs. Relever la limite autorise une consommation plus forte sans réserver immédiatement une quantité fixe de RAM par descripteur possible. Ni une ancienne estimation de mémoire par socket ni 65,535 ne constituent une exigence de capacité universelle ou un plafond Linux.

Après la modification du service, comparez les limites du nouveau processus aux valeurs prévues. Si des défaillances surviennent bien en dessous, examinez la ressource réellement épuisée.

Articles similaires