Limites de serveur contrôlent très concrètement dans l'hébergement combien de fichiers et de processus vos services peuvent garder ouverts en même temps et décident ainsi de la latence, des messages d'erreur et de la disponibilité. Je montre étape par étape comment mesurer, adapter et surveiller les limites des fichiers et des processus, afin que les serveurs web, même sous charge, puissent fonctionner correctement. fiable travailler.
Points centraux
- Soft/Hard Comprendre les limites et les fixer de manière appropriée
- nofile (fichiers) et nproc (processus) augmenter de manière ciblée
- PHP-FPM et configurer correctement les files d'attente
- Suivi utiliser et identifier les goulots d'étranglement
- Sécurité avec des plafonds raisonnables
Ulimits en bref : soft vs hard
J'utilise Ulimits pour obtenir des données fiables par utilisateur ou par processus. Frontières pour les ressources. Les limites souples sont les limites actuelles, modifiables, que je peux relever jusqu'à la limite dure si l'application a besoin d'une plus grande marge de manœuvre à court terme. Les limites dures représentent la limite supérieure absolue et empêchent une croissance incontrôlée de certains services qui affecterait l'ensemble de l'hôte. Par défaut, la commande ulimit sans commutateur se réfère à la limite dure, ce qui facilite les adaptations pour les administrateurs disposant de droits. J'évite ainsi qu'un seul script n'envahisse le serveur avec trop de fichiers ou de processus. surchargé.
Je distingue toujours les paramètres les plus importants comme nofile (fichiers ouverts), nproc (processus/threads), fsize (taille des fichiers), stack (taille de la pile) et cpu (temps CPU). Les piles web avec PHP, base de données et composants de cache nécessitent souvent beaucoup plus de descripteurs ouverts que les valeurs minimales par défaut. Sans limites correctes, les messages tels que „too many open files“, les longs temps de réponse ou les timeouts lors des demandes s'accumulent. Je mesure d'abord l'utilisation réelle, j'augmente progressivement les limites et je vérifie ensuite la latence, le compteur d'erreurs et le débit. Ainsi, je garantis des performances cohérentes en cas d'accès élevé. Temps de réponse.
Pourquoi les limites sont-elles décisives en matière d'hébergement ?
Les environnements d'hébergement partagent les ressources matérielles, c'est pourquoi je préviens l'accès inéquitable aux ressources par des comptes ou des services individuels grâce à des limites adaptées et je maintiens la Performance stable. Dans les plans d'entrée de gamme, on limite par exemple les processus CGI/PHP simultanés et le temps CPU par utilisateur, afin qu'une tâche cron erronée ne ralentisse pas tout l'hôte. Dans les plans de niveau supérieur, davantage de processus peuvent être exécutés et davantage de RAM peut être utilisée, ce qui profite aux applications exigeantes telles que les boutiques. Pour cela, j'évalue toujours ensemble le nombre de processus, la RAM par processus et le temps de l'unité centrale, afin de ne pas laisser de goulots d'étranglement artificiels. Je propose un cadre pratique détaillé pour des ressources équitables dans l'article sur les Limites de l'hébergement mutualisé, qui explique de manière compacte le contexte attribue.
De même, les fichier descriptor limit est critique, car chaque fichier ouvert, chaque socket et chaque pipe lie un descripteur. Les valeurs par défaut de 1024 sont souvent trop petites pour les applications web modernes, surtout lorsqu'il y a beaucoup de connexions simultanées. C'est pourquoi je commence par lire les pics réels dans les journaux et les outils avant d'augmenter les valeurs, afin de connaître les effets sur les tables du noyau et la pression de la mémoire. J'augmente ainsi le débit sans risquer de compromettre la sécurité et la réactivité de l'hôte. Comprendre le principe, c'est éviter les pannes aléatoires dues à des espaces trop restreints. Barrières.
Les paramètres les plus importants au quotidien : nofile, nproc et autres.
Pour les charges de travail proches du web, il existe nofile tout en haut, car les connexions HTTP, les sockets en amont et les connexions aux bases de données consomment massivement des descripteurs. Je prévois des tampons pour les pics de charge, par exemple deux à quatre fois le pic typique, afin que de courtes vagues de trafic ne provoquent pas immédiatement des erreurs. Pour les services basés sur les travailleurs, je fais évoluer nofile parallèlement au nombre de travailleurs et à leurs connexions maximales. Si un CDN, un reverse proxy ou une couche de messagerie viennent s'y ajouter, les besoins augmentent encore, ce dont je tiens compte lors du calcul. Ce n'est qu'avec une mémoire tampon propre que les erreurs sporadiques „open file“ disparaissent et que les Taux d'erreur diminue.
À l'adresse suivante : nproc-J'examine les processus et les threads ensemble, car certaines durées d'exécution utilisent des pools de threads qui comptent contre la limite supérieure. Je vérifie les stratégies de spawn des serveurs web, des serveurs d'applications et de la base de données, afin que la limite supérieure ne passe pas inaperçue et ne bloque pas de nouveaux travailleurs. Des valeurs nproc trop basses se traduisent souvent par un démarrage lent des services ou par des files d'attente qui ne sont pas traitées. J'augmente la limite en fonction du nombre de cœurs CPU, de la charge IO et de l'architecture de l'application. Ainsi, le processus de spawn reste calculable et évite les erreurs de programmation. Blocages.
Vérifier les limites d'U : c'est ainsi que je lis la réalité
Je commence toute optimisation par la visibilité, car sans chiffres, les mesures ne sont pas efficaces. aveugle. La commande ulimit -a me montre les limites actuelles de la session shell et me fournit ainsi la base pour les comparaisons avec les configurations de service. Je vérifie séparément nofile et nproc, car ce sont précisément ces valeurs qui atteignent d'abord leurs limites dans l'hébergement. En outre, j'utilise lsof, ss ou netstat pour compter les fichiers ouverts et les sockets par processus. Ce n'est que lorsque je connais le pic sous la charge de production que je planifie des tampons et les ajoute à la Valeurs limites un.
# Toutes les limites d'une session
ulimit -a
# Descripteurs de fichiers (Soft/Hard)
ulimit -n
ulimit -Hn
# Processus/threads par utilisateur
ulimit -u
ulimit -Hu
Pour les services que systemd lance, je ne regarde pas seulement mon shell interactif, car systemd met en place ses propres Limites. Je compare donc les valeurs effectives d'un processus en cours via /proc//limits afin de démasquer les contradictions entre le shell et le service. Les divergences indiquent des paramètres manquants dans les fichiers unitaires, que je complète alors directement. Cette comparaison m'évite de devoir chercher longtemps pourquoi une application ne peut pas ouvrir de fichiers supplémentaires malgré des limites de shell plus élevées. Je trouve ainsi rapidement les lacunes de configuration et veille à ce que les applications soient cohérentes. Cadre.
Personnalisation temporaire : tests rapides dans les sessions en cours
Avant de fixer des limites de manière permanente, je teste de manière ciblée des limites plus élevées dans un shell. Valeurs. Je peux ainsi voir sans redémarrer si l'application accepte plus de connexions comme prévu ou si la latence diminue. Les valeurs augmentées s'appliquent à cette session jusqu'à ce que je la ferme ou que je redémarre le service. Je documente l'effet sur syslog, les journaux d'erreurs et les métriques afin que les ajustements permanents ultérieurs soient fondés. De courts essais m'épargnent de grands retours en arrière et fournissent des données fiables. Pièces justificatives.
# Temporaire dans le shell courant
ulimit -n 65536 # Augmenter les descripteurs de fichiers
ulimit -u 4096 # Augmenter la limite de processus/thread
# Vérifier/ajuster explicitement les limites hard (root)
ulimit -Hn 131072
ulimit -Hu 8192
J'effectue ce genre de tests à des moments de pics de charge planifiés, afin d'obtenir des effets réels. voir. Si les erreurs „too many open files“ cessent et que le nombre de requêtes par seconde augmente, je retiens les valeurs mesurées. Si l'impact reste faible, je cherche des freins parallèles comme des backlogs de socket trop étroits, des limites de worker dans le serveur web ou des pools de connexion de base de données. Ce n'est que lorsque l'ensemble de la chaîne est à l'échelle qu'un ulimit server plus élevé est proprement rentable. J'évite ainsi des optimisations partielles qui n'ont pas d'effet sensible au final. Amélioration apporter.
Configuration permanente : limits.conf et systemd
Pour des valeurs permanentes, j'édite le fichier /etc/security/limits.conf et j'ajoute des valeurs spécifiques à l'utilisateur ou au service. Lignes. Je distingue les limites soft et hard afin que les applications restent très élastiques à court terme tout en ayant une limite supérieure claire. Pour les services systemd, je fixe en plus une limiteNOFILE et une limiteNPROC, car sinon les fichiers unitaires passent outre les modifications du shell. Après l'adaptation, je recharge systemd et je démarre les services concernés pour que les nouvelles limites s'appliquent. Le redémarrage est important, sinon les processus restent dans d'anciens paramètres. Valeurs cadres.
# /etc/security/limits.conf (exemple)
* soft nofile 65536
* hard nofile 131072
www-data soft nproc 4096
www-data hard nproc 8192
# unité systemd (par ex. /etc/systemd/system/nginx.service.d/limits.conf)
[Service]
LimitNOFILE=65536
LimitNPROC=4096
# Activer les modifications
systemctl daemon-reload
systemctl redémarrer nginx
| Contexte | Lieu | Validité | Typique de |
|---|---|---|---|
| Session interactive | ulimit dans Shell | Shell/Childs actuels uniquement | Essais rapides |
| Utilisateurs de tout le système | /etc/security/limits.conf | Processus basés sur le login/PAM | Une base durable |
| Services (systemd) | fichier d'unité : LimitNOFILE/LimitNPROC | Service concerné uniquement | Des limites de service claires |
Bien situer les limites du noyau à l'échelle du système
Outre les limites U liées aux processus et aux utilisateurs, il existe des plafonds à l'échelle du système, que je vérifie toujours. Même un nofile élevé ne sert à rien si le noyau maintient la table globale des descripteurs de fichiers au plus juste. Je contrôle donc fs.file-max (nombre total de FDs ouverts possibles) et fs.nr_open (nombre maximal de FDs autorisés par processus au niveau du noyau). Si ces valeurs ne correspondent pas, je me heurte très tôt à des limites, malgré l'augmentation de l'Ulimit.
# Vérifier les limites à l'échelle du système
cat /proc/sys/fs/file-max
cat /proc/sys/fs/nr_open
cat /proc/sys/fs/file-nr # In-Use, Free, Max
# Augmenter temporairement (jusqu'au redémarrage)
sysctl fs.file-max=2097152
# Permanent (dans /etc/sysctl.d/99-ulimits.conf)
fs.file-max = 2097152
Je respecte la cascade : limite de processus (RLIMIT_NOFILE) ≤ fs.nr_open ≤ fs.file-max (global). Si nofile est défini via fs.nr_open, le noyau ignore silencieusement la demande. En conséquence, je dimensionne globalement, puis par service. Pour les backlogs accept, je redimensionne également net.core.somaxconn et les paramètres de backlog des services respectifs, sinon les connexions entrantes continuent à mourir de faim dans la file d'attente.
unités systemd : TasksMax, PIDsMax et DefaultLimits
Sur les distributions modernes, systemd ne limite pas seulement les descripteurs, mais aussi le nombre de tâches (processus/threads) par service via TasksMax. Je définis des valeurs appropriées pour les configurations de concentrations élevées ou j'utilise „infinity“ lorsque je donne le contrôle à nproc. Pour les services aux utilisateurs, cela aide [email protected] ou system.conf avec des commutateurs DefaultLimit* pour élever les valeurs de référence de manière cohérente.
# Service drop-in pour plus de tâches et de FD
mkdir -p /etc/systemd/system/php-fpm.service.d
cat < /etc/systemd/system/php-fpm.service.d/limits.conf
[Service]
LimitNOFILE=131072
LimitNPROC=8192
TasksMax=16384
EOF
systemctl daemon-reload
systemctl restart php-fpm
# Défauts à l'échelle du système (à utiliser avec précaution)
# /etc/systemd/system.conf
DefaultLimitNOFILE=65536
DefaultLimitNPROC=4096
DefaultTasksMax=8192
Important : sudo, su et les connexions SSH héritent de limites différentes. Pour les connexions basées sur PAM, /etc/security/limits.conf s'applique, mais souvent pas pour les shells non login ou les cronjobs. Je teste donc toujours le chemin complet par lequel mon service démarre, afin qu'il ne reste pas de divergences silencieuses.
Faire évoluer le serveur web en même temps que Ulimits
Avec NGINX, je lie worker_processes, worker_connections et worker_rlimit_nofile avec les limites fixées pour l'ensemble du système. Règle générale : connexions simultanées maximales ≈ worker_processes × worker_connections, plus une réserve pour les upstreams, les logs et les pipes internes. Si worker_rlimit_nofile n'est pas augmenté, NGINX fonctionne tôt en EMFILE malgré des ulimits élevées.
# Exemple NGINX (extrait)
worker_processes auto ;
events {
worker_connections 40960 ;
multi_accept on ;
use epoll ;
}
worker_rlimit_nofile 131072 ;
Pour Apache (MPM event), je fais attention à ServerLimit, ThreadsPerChild et MaxRequestWorkers. Si la somme des connexions possibles augmente, nofile doit croître en parallèle. Sinon, les files d'attente se remplissent alors que le CPU et la RAM ont encore de la marge. De plus, j'adapte les backlogs de listen (par exemple pour NGINX : listen ... backlog=...) et le noyau-somaxconn, afin que les nouveaux accepts ne soient pas rejetés.
Bases de données et caches : bien budgétiser les fichiers ouverts
Les bases de données et les caches ont leurs propres vis de réglage : utiliser MySQL/MariaDB open_files_limit et des paramètres de connexion, PostgreSQL bénéficie d'un pool de connexions avant cela, tandis que Redis traduit directement le nombre de clients en FD ouverts. Je m'assure que les services respectifs rencontrent un nofile supérieur à leurs valeurs maximales internes. Sinon, le démarrage ou les pics de charge échouent, même si la couche d'application a été mise à l'échelle.
Un schéma typique : PHP-FPM augmente le parallélisme, mais le serveur de base de données reste sur les anciennes limites FD et Connection-Caps. Je mesure les handles ouverts par composant et répartis les tampons de manière additive. J'évite ainsi qu'un service en aval ne castre la performance globale.
Conteneurs et orchestration : Ulimits dans le contexte Docker/Kubernetes
Dans les conteneurs, les limites U agissent indépendamment du contexte de connexion de l'hôte. Je les définis explicitement au démarrage ou dans l'orchestration et je respecte en outre les limites cgroups (PIDs, mémoire). Dans l'environnement Docker, je définis nofile/nproc et, en option, une limite PIDs. Kubernetes encapsule cela via SecurityContext et des options spécifiques à RuntimeClass ; selon l'environnement, les limites U doivent être définies via Container Runtime.
# Docker en local
docker run --ulimit nofile=131072:131072 \
--ulimit nproc=8192:8192 \
--pids-limit 20000 \
--nom webapp -p 80:80 myimage:latest
# Docker Compose (extrait)
services :
app :
image : myimage:latest
ulimits :
nofile :
soft : 65536
hard : 131072
nproc : 8192
pids_limit : 20000
Je vérifie toujours les limites dans le conteneur via /proc/self/limits et j'observe que les adaptations de l'hôte comme limits.conf ne se diffusent pas automatiquement dans les processus du conteneur. Je crée de la transparence avec des paramètres de déploiement clairs et contrôlés par version pour chaque service.
Dépannage en pratique : EMFILE, EAGAIN et spawns lents
Pour des analyses reproductibles, j'utilise strace et je recherche EMFILE („Too many open files“) ou EAGAIN („Resource temporarily unavailable“) lors de accept(), open(), pipe() ou clone(). Je compte régulièrement les FD par processus et les compare aux limites fixées. Je détecte ainsi plus rapidement les fuites dans les Filehandles (par exemple les appels Close() oubliés).
# Déterminer les FD ouverts par processus
ls -l /proc//fd | wc -l
# Vue d'ensemble de l'utilisation du système
cat /proc/sys/fs/file-nr
# ajuster strace pour les erreurs FD
strace -fp -e trace=desc,process,network 2>&1 | grep -E 'EMFILE|EAGAIN'
Les problèmes de démarrage dus à des limites nproc trop strictes se révèlent par des démarrages lents, des messages „can't fork“ ou des pools de travail incomplets. Je corrèle ces événements avec des stratégies de spawn (pre-fork, dynamic, on-demand) afin que les adaptations ne se contentent pas de soulager les symptômes, mais soutiennent l'architecture.
Automatisation, tests et retour en arrière
Je garde les modifications de limites reproductibles : je gère les drop-ins pour systemd, les fichiers sysctl.d et les modèles de service de manière déclarative. Chaque modification fait l'objet d'un ticket, de valeurs mesurées avant/après et d'un rollback clair. Dans Staging, je simule la charge de travail avec des outils comme wrk, vegeta ou k6 et je fais attention aux latences P95/P99, aux taux d'erreur et aux temps de file d'attente. Seuls des résultats solides justifient une extension en production.
# Créer une structure drop-in pour plusieurs services
for s in nginx php-fpm redis ; do
mkdir -p /etc/systemd/system/$s.service.d
cat < /etc/systemd/system/$s.service.d/limits.conf
[Service]
LimitNOFILE=65536
LimitNPROC=4096
TasksMax=8192
EOF
done
systemctl daemon-reload
systemctl restart nginx php-fpm redis
Lors des campagnes, j'augmente les limites de manière contrôlée, je note l'heure de début/fin et je les compare aux courbes de trafic. Après le pic, je réintroduis les valeurs les plus conservatrices afin de minimiser la surface d'attaque et de libérer les ressources inutilisées du noyau.
Risque de confusion : Ulimits vs. paramètres Watcher/Kernel
Toutes les erreurs „trop de fichiers“ ne proviennent pas de nofile. Les observateurs de systèmes de fichiers (inotify) possèdent leurs propres limites (par ex. max_user_watches), qui sont rapidement atteintes en cas de nombreux petits fichiers ou de piles de développement. vm.max_map_count (par ex. pour les moteurs de recherche) ou net.ip_local_port_range (ports éphémères) peuvent également agir comme des facteurs limitants. Je vérifie ces paramètres séparément afin de ne pas me tromper de curseur.
Dimensionner correctement le PHP-FPM : Processus, files d'attente, limites
Pour PHP-FPM, je coordonne pm.max_children, pm.max_requests et les limites ulimit, afin que le démarrage du processus, la mémoire Connexions rester équilibré. Lorsque FPM atteint sa limite supérieure, les demandes atterrissent dans une file d'attente ; c'est voulu, mais cela n'a de sens que si le serveur web gère proprement les délais d'attente et le backoff. Je mesure le temps d'exécution moyen et j'en déduis un nombre de processus viable qui ne dépasse pas la capacité de l'unité centrale et de la mémoire vive. Pour cela, j'adapte la limite du descripteur de fichier afin que les connexions parallèles en amont et les enregistreurs de logs aient une marge de manœuvre suffisante. Ceux qui veulent aller plus loin trouveront ici des vis de réglage pratiques pour Processus PHP-FPM et détermine la meilleure Balance.
Je vérifie également combien de connexions à la base de données restent ouvertes en même temps par ouvrier FPM, afin que les pools de connexions ne deviennent pas des chasse d'aigle doivent être réduits. Un nombre trop élevé de travailleurs augmente la pression de la RAM et les changements de contexte, un nombre trop faible fait stagner le débit. C'est pourquoi je procède par étapes, j'observe la latence P50/P95 et les échecs, et j'ajuste par petits pas. Ce n'est que lorsque les temps de file d'attente, la charge du processeur et les taux d'erreur sont en équilibre que je fixe les valeurs de manière permanente. Ainsi, la pile fonctionne de manière plus prévisible et reste en charge. réactif.
Suivi et planification des capacités
Je justifie chaque étape par des données de mesure, sinon les modifications des limites n'ont qu'un effet limité. ressenti. Les métriques telles que les fichiers ouverts par processus, les requêtes en cours et en attente, les secondes CPU par travailleur et la mémoire RSS m'aident à les classer. Les logs me montrent quand les limites matérielles s'appliquent et si des services refusent des connexions pour cette raison. Les tableaux de bord avec les latences P95/P99 révèlent les goulots d'étranglement qui masquent les valeurs moyennes. De tout cela, je déduis un process limit hosting pratique qui lisse la charge et réduit les files d'attente. raccourcit.
Je garde toujours une réserve de marge de manœuvre pour que les pics courts ne perturbent pas le son. produire. Ceux qui se dirigent vers des pics mensuels ou des pics de campagne relèvent les limites une à deux semaines avant et vérifient des tests de trafic réels. Ensuite, je réactive des limites plus strictes afin de réduire les ressources et les surfaces d'attaque. Ce rythme protège la plate-forme de manière économique tout en réduisant le risque de perturbation. La planification est ici payante à plus d'un titre, car les mesures proactives permettent de réduire les fenêtres de service et les coûts. Temps de fonctionnement sécurisé
Inodes et nombre de fichiers : des limites discrètes aux effets importants
En plus de nofile, le système de fichiers limite le nombre de fichiers Inodes et donc le nombre possible de fichiers, indépendamment de la mémoire utilisée. Les projets web avec de nombreux petits fichiers en cache ou des fichiers de session s'y heurtent rapidement. Je vérifie df -i, nettoie les anciens artefacts, les restes de rotation et les répertoires Temp et adapte si nécessaire la structure du système de fichiers. En consolidant les caches CMS ou en les plaçant en mémoire, on soulage en même temps les inodes et l'impression IO. J'intègre les détails, le contexte et les stratégies dans mon guide de Comprendre les inodes qui traite le sujet pour les cabinets d'hébergement. ouvre.
Si les inodes sont rares, une limite de descripteur de fichier plus élevée est utile à elle seule rien. Je veille donc à une rotation claire des logs, je limite la verbosité de débogage et je déplace les artefacts rarement utilisés dans la mémoire d'archivage. Les pipelines de construction devraient également nettoyer les artefacts, afin que les déploiements ne dévorent pas insidieusement les réserves d'inodes. Une telle hygiène permet de maintenir les limites stables à long terme et de gagner beaucoup de temps lors de la recherche d'erreurs. Un regard propre sur les inodes évite les erreurs inattendues. Arrêts de travail.
Résoudre les messages d'erreur typiques de manière ciblée
Le message „too many open files“ me signale presque toujours un nombre de fichiers trop juste. nofile. J'augmente temporairement dans le shell, je confirme l'effet et j'ajuste ensuite les valeurs dans limits.conf et systemd. Si „resource temporarily unavailable“ apparaît lors du spawn, c'est souvent dû à la limite nproc que j'augmente en fonction de l'architecture du worker. Si les scripts PHP semblent bloqués, je vérifie également memory_limit, max_execution_time et les secondes CPU que la configuration d'hébergement accorde à CGI/FPM. J'élimine les goulots d'étranglement le long de la chaîne et j'empêche qu'un commutateur à un endroit ne crée que de nouveaux Freins à un autre endroit.
Si ces erreurs surviennent sporadiquement, je travaille avec des corrélations de métriques pour déterminer le moment et la situation de charge. attraper. Les pics de connexions simultanées, l'augmentation des erreurs de backend ou les longues recherches DNS fournissent de bonnes indications. Je vérifie alors séparément les limites des services concernés afin d'identifier les valeurs effectives. Si la configuration est correcte mais que les erreurs persistent, je cherche des fuites dans les gestionnaires de fichiers, des veilleurs défectueux ou des sockets ouverts inutiles. Le confinement progressif permet de gagner du temps et de réduire les Risque de nouvelles défaillances.
Équilibrer intelligemment performance et sécurité
Je n'augmente jamais les limites de manière illimitée, car des ouvertures trop larges constituent des surfaces d'attaque. agrandir. Les scénarios de force brute ou de déni de service profitent de limites trop élevées si aucun autre contrôle n'intervient. C'est pourquoi je combine les limites avec le Rate Limiting, des stratégies de backoff et des délais d'attente clairs sur le serveur web et en amont. Je fixe des limites supérieures strictes de manière à ce que les pics légitimes puissent se produire, mais que les abus ne puissent pas s'aggraver. Ainsi, je garantis la disponibilité sans compromettre la sécurité. Contrôle de perdre.
Au quotidien, une approche graduée s'avère payante : un peu de headroom pour les pics, un effet mesurable, et régulièrement Critiques. Celui qui connaît les déploiements, les campagnes de trafic et les charges saisonnières planifie les limites de manière proactive. Je documente chaque modification avec la date, la raison et les valeurs mesurées, afin que les analyses ultérieures ne soient pas dans le noir. Ce catalogue accélère les décisions futures et évite les doublons. La performance et la sécurité en profitent, car les décisions sont basées sur Données basée.
Évaluer les forfaits d'hébergement : à quoi dois-je faire attention ?
J'examine les offres d'hébergement non seulement en fonction du CPU et de la RAM, mais aussi explicitement en fonction de Ulimits pour les processus, les descripteurs et les secondes CPU. Des indications concrètes sur nproc, nofile et, le cas échéant, sur les contingents d'inodes m'aident à évaluer correctement la capacité. Pour les boutiques et les API, je demande des engagements transparents pour les processus PHP-FPM, les budgets CPU et l'augmentation des limites sur demande. Les environnements VPS ou dédiés me donnent la souveraineté, mais là aussi, des valeurs par défaut raisonnables comptent pour le fonctionnement. Des chiffres clairs permettent d'éviter les déceptions et de maintenir les migrations. en ligne droite.
| Plan | Limite de processus (nproc) | Fichiers (nofile) | RAM/processus | temps CPU | Aptitude |
|---|---|---|---|---|---|
| Débutant | 32-64 | 4096-8192 | 256 à 512 Mo | 5-600 s | Petits sites |
| Entreprises | 64-128 | 16384-65536 | 512 à 1024 Mo | 600-3600 s | Boutiques, API |
| VPS/dédié | Configurable | Configurable | Selon les besoins | Selon les besoins | Charge élevée |
En bref
Je mesure d'abord l'utilisation réelle, puis je soulève Frontières et vérifier l'effet sur la latence, le taux d'erreur et le débit. Les commutateurs clés sont nofile pour les fichiers/sockets et nproc pour les processus/threads, complétés par fsize, stack et cpu. Je définis les valeurs permanentes de manière cohérente dans limits.conf et dans les unités systemd, afin que les services bénéficient de conditions cadres identiques. Pour PHP-FPM, je fais correspondre étroitement le nombre de processus, la mémoire et les files d'attente à la limite du descripteur de fichier. Le monitoring, l'hygiène des inodes et les limites supérieures raisonnables permettent de maintenir les configurations d'hébergement sous charge. fiable et réactif.


