Disons que je veux avoir un serveur avec autant de comptes d'utilisateurs que possible. Combien coûte le max?
Je veux des millions de comptes d'utilisateurs. C'est fou? J'hébergerais des dizaines de miroirs d'équilibrage de charge de la boîte, et les données utilisateur seraient stockées sur un partage de stockage hautement disponible, tandis que toutes les autres données sont supposées volatiles.
"I want millions of user accounts. Is that crazy?"
- Oui. Utilisez un répertoire pour autant d'utilisateurs, pas des dizaines de miroirs pour autant d'utilisateurs.Réponses:
Théoriquement, vous pouvez avoir autant d'utilisateurs que l'espace d'ID utilisateur le prend en charge. Pour déterminer cela sur un système particulier, consultez la définition du
uid_t
type. Il est généralement défini commeunsigned int
ouint
signifiant que sur les plates-formes 32 bits, vous pouvez créer jusqu'à près de 4,3 milliards d'utilisateurs. Sur les plates-formes 64 bits, vous pouvez avoir plus de 16e18 ID utilisateur différents.Cependant, d'autres ressources peuvent s'épuiser avant d'atteindre cette limite, par exemple l'espace disque. Si vous créez un répertoire personnel pour chaque utilisateur, même avec seulement 1 Mo d'espace pour chaque utilisateur, vous avez besoin de plus de 4 Po de stockage. De plus, un grand nombre d'utilisateurs laissant les processus s'exécuter en arrière-plan, la planification de tâches cron, l'ouverture de sessions ftp et / ou ssh peuvent créer une lourde charge pour le système.
la source
Jusqu'à ce que l'espace UID soit épuisé. Les systèmes contemporains utilisent des entiers non signés 32 bits, avec 65535 et 4294967295 étant des valeurs magiques pour "tout" / "inconnu" / etc., donc il y a de la place pour 4294967294 utilisateurs distincts simultanés. Les anciens systèmes peuvent toujours afficher des entiers non signés 16 bits.
la source
D'autres réponses ont littéralement répondu à la question d'OP concernant des limites spécifiques. Étant donné la nature de la SF comme référence à long terme également, je pense qu'il est important de signaler une mise en garde très importante sur l'approche que vous envisagez.
Vous souhaitez utiliser un service d'annuaire pour gérer les comptes d'utilisateurs à cette échelle. C'est exactement le problème pour lequel les services d'annuaire [par exemple OpenLDAP, Active Directory, et al.] Ont été conçus.
L’utilisation d’outils utilisateur «standard» [1] Unix pour gérer plus d’une poignée de comptes d’utilisateurs locaux est une voie très usée et douloureuse, qui ne s’adaptera pas très facilement et - compte tenu de la description de votre problème - entraînera très probablement une la ré-architecture de la solution que vous avez choisie lorsqu'elle ne se transforme pas en fait horizontalement avec plusieurs serveurs.
[1] Ils fonctionnent généralement de manière très similaire, mais les incantations exactes varient d'une plate-forme à l'autre, sont parfois différentes même dans des distributions Linux d'héritage similaires et bien sûr sont régulièrement modifiées avec les versions des versions du système d'exploitation. Caveat emptor.
la source
Comme ci-dessus, vous êtes théoriquement limité par la taille int non signée de l'UID, mais vous serez probablement limité par les ressources actuellement avant d'atteindre cette limite.
la source