Configurer une configuration de limites.conf complètement illimitée pour les serveurs de test –
Pas de limites! Nous pouvons tous n’aimer aucune limite, mais est-ce vraiment une si bonne idée? Habituellement, quand il n’y a pas de limites, «il y aura des dragons». C’est la même chose avec limits.conf, bien que pour tester les serveurs, un limits.conf vraiment illimité aide!
Sommaire
Qu’est-ce que limites.conf?
le limits.conf
Le fichier contient les paramètres de limite de ressources pour le système d’exploitation Linux. Lorsque votre ordinateur Linux a été installé, le fichier a été créé dans le cadre de l’installation et contenait des valeurs pour des ressources telles que la taille de la mémoire virtuelle, le nombre maximal de fichiers, etc.
Ces valeurs sont définies sur des limites pré-spécifiées pour garantir que votre système Linux ne surchargera pas facilement. Sinon, un programme ou un processus non autorisé pourrait facilement interrompre un système par ailleurs performant. Imaginez, par exemple, une situation dans laquelle vous définissez le nombre maximal de fichiers ouverts sur illimité, et un processus non fiable (étant un processus avec un défaut, ou même un logiciel malveillant comme un virus ou un logiciel malveillant) commence maintenant à ouvrir le fichier après le fichier sur le système.
Bientôt, le système sera à court d’une ressource dont il a besoin pour gérer tous ces fichiers ouverts. Qu’il s’agisse du processeur de votre système (le processeur), de la mémoire ou même du disque dans certains cas, où, par exemple, nous avons peut-être configuré la taille maximale du fichier de base comme illimitée, et nous exécutons de gros processus dans un système avec beaucoup de mémoire et peu d’espace libre restant ou un petit lecteur racine.
En résumé, en utilisant le limits.conf
fichier de configuration, un utilisateur (ou sysadmin) peut spécifier des limites sur les ressources disponibles pour l’utilisateur et pour le système.
Le format du limits.conf
fichier (qui réside dans /etc/security/
) est bien défini. En général, nous spécifierons un domaine applicable (comme un utilisateur, un groupe et même des caractères génériques comme *
), un type (limite souple ou stricte), un élément auquel la règle se rapporte (comme le nofile
élément qui définit le nombre maximum de fichiers ouverts, le locks
élément qui définit le nombre maximum de verrous de fichiers qu’un utilisateur peut détenir, etc.) et enfin une valeur (le paramètre réel / maximum).
L’en-tête du limits.conf
le fichier définit clairement cela avec une quantité appropriée de détails:
Si vous souhaitez en savoir plus sur chaque élément spécifique et d’autres paramètres de configuration avec le limits.conf
fichier, exécutez simplement:
man limits.conf
À l’invite de votre terminal.
Aller illimité
En général, à toutes fins utiles, il ne faut jamais aller illimité avec limits.conf
. Ensuite, vous vous demandez peut-être pourquoi cet article? Eh bien, chaque fois qu’il y a une règle, il y a une exception valide. L’exception, dans ce cas, concerne le test des serveurs. Lorsque vous effectuez des tests ou des travaux d’assurance qualité de quelque nature que ce soit, vous vous heurtez souvent aux limites d’un système.
Configurer les choses comme illimitées, avec une configuration appropriée du cadre de test / QA pour prendre en charge la gestion des ressources système, est une exception valable au maintien de limites raisonnables et spécifiques au système à l’intérieur. limits.conf
. Pour tous les autres serveurs, comme indiqué, une configuration par serveur est préférée et recommandée.
Sans plus tarder, introduisons un script qui définit toutes les variables et options dans limits.conf
à illimité. Ce script est basé sur le script setup_server.sh sous licence GPLv2 dans le référentiel mariadb-qa sur GitHub. Vous pouvez également explorer ce script pour d’autres fichiers que vous pouvez adopter vers des paramètres illimités pour une configuration de serveur de test, par exemple /etc/sysctl.conf
paramètres et /etc/systemd/logind.conf
Pour configurer un serveur vers illimité, exécutez le script suivant à l’invite du terminal du serveur (test) que vous souhaitez configurer comme illimité.
Attention: veuillez noter que faire cela sur une machine de production n’est probablement pas une bonne idée, sauf si vous avez une solide compréhension du changement que vous apportez, comme expliqué en partie dans cet article, et que vous le faites pour une raison spécifique et valable. Faire ce changement a également des implications de sécurité importantes, et il est recommandé de le faire uniquement sur une machine qui se trouve derrière un pare-feu et un VPN, c’est-à-dire pas un serveur public. TLDR; Procéder à sa mise en œuvre est à vos propres risques.
Vous devez également savoir que l’utilisation d’un nombre élevé (supérieur à ~ 20000) pour nproc soft et hard peut provoquer une instabilité du système et se bloque sur Centos 7, mais pas sur Ubuntu 18, 19 et 20. Moi, et d’autres ingénieurs avec moi, j’ai a utilisé cette configuration pendant un certain temps pour tester les serveurs, et pour cette application, c’est idéal. Notez que tous les paramètres sont illimités sauf nofile
dont 1048576 est le maximum.
sudo bash -c "cat << EOF > /etc/security/limits.conf * soft core unlimited * hard core unlimited * soft data unlimited * hard data unlimited * soft fsize unlimited * hard fsize unlimited * soft memlock unlimited * hard memlock unlimited * soft nofile 1048576 * hard nofile 1048576 * soft rss unlimited * hard rss unlimited * soft stack unlimited * hard stack unlimited * soft cpu unlimited * hard cpu unlimited * soft nproc unlimited * hard nproc unlimited * soft as unlimited * hard as unlimited * soft maxlogins unlimited * hard maxlogins unlimited * soft maxsyslogins unlimited * hard maxsyslogins unlimited * soft locks unlimited * hard locks unlimited * soft sigpending unlimited * hard sigpending unlimited * soft msgqueue unlimited * hard msgqueue unlimited EOF"
Une fois que vous avez exécuté cela, redémarrez simplement votre serveur pour charger tous les nouveaux paramètres de configuration. Vous ne remarquerez aucune différence, sauf que vos tests, s’ils étaient très gourmands en ressources, ne s’arrêteront plus sur divers problèmes de configuration de limites.
Cela dit, comme indiqué ci-dessus, vous aurez besoin, dans le cadre de votre cadre de test, d’un solide processus de surveillance et de surveillance des ressources du serveur qui garantit que votre serveur ne sera pas surutilisé, ce qui entraîne souvent des blocages et des exigences de redémarrage. Dans un prochain article, je pourrais vous fournir les bases d’un tel script à partir duquel vous pourrez vous étendre pour couvrir votre propre configuration.
Emballer
Il existe des cas d’utilisation valides pour la configuration /etc/security/limits.conf
à chaque maximum possible. Ils sont généralement rares (les serveurs de test étant une exception notable).
Dans cet article, nous en avons appris plus sur limits.conf
: pourquoi il existe et comment modifier sa configuration. Nous avons exploré le limits.conf
format, syntaxe et idiomes et répertorié un script simple qui peut définir tous nos paramètres sur illimités.
Même si vous souhaitez configurer votre serveur à des limites moindres, le script est facile à adapter et peut être intégré (en tant que code GPLv2 comme décrit) dans vos propres scripts: il suffit de changer unlimited
aux valeurs souhaitées. C’est également un moyen simple de configurer rapidement un serveur aux valeurs souhaitées et ainsi d’unifier et de coder votre batterie de serveurs. limits.conf
mettre en place.
Prendre plaisir!