Est-ce que quelqu'un pourrait me décrire les avantages et les inconvénients de l'utilisation d'un fichier de socket Unix par rapport à un port TCP / IP localhost: port lors de la configuration de services sur un serveur (Ubuntu, FWIW)?
Dans ce cas particulier, il s’agit d’un serveur Python WSGI (uWSGI), mais je ne suis intéressé que de manière générale (par exemple, je sais que vous pouvez configurer MySQL de deux manières).
Je me rends compte que l'utilisation de tcp / ip signifie que les services peuvent être exposés à d'autres machines, mais je voudrais simplement savoir s'il existe un compromis entre performances et accès lors de l'accès local à des services.
À votre santé.
Réponses:
Les sockets Unix sont un peu plus rapides car vous n’avez pas la surcharge tcp. Si vous vous rendez compte que cette perte de performance est une question de charge du serveur. Si la charge du serveur n'est pas très élevée, vous ne le reconnaîtrez pas.
Si vous utilisez Jails (FreeBSD) ou une autre technologie de virtualisation pour séparer le serveur MySQL, par exemple, du serveur Web, vous utilisez souvent la configuration tcp / ip à la place des sockets. Les règles de pare-feu doivent cependant restreindre l'accès.
Vous devez savoir si votre système est soumis à une charge importante afin qu'un socket soit indispensable ou si vous pouvez vous concentrer sur une conception de système agréable (services de séparation), une solution TCP / IP serait préférable.
Alors faites une réponse courte:
Oui, il y a une différence de performance, les sockets sont plus rapides. Si vous ne supportez pas une charge de serveur élevée, choisissez ce qui convient le mieux à la conception de votre système.
la source
socket(AF_INET, SOCK_STREAM, ...)
)C'est fondamentalement un compromis entre performance et flexibilité. Les sockets de domaine Unix vous donneront de meilleures performances, alors qu'une socket connectée à localhost vous donnera une meilleure portabilité. Vous pouvez facilement déplacer l'application serveur vers un autre système d'exploitation en modifiant simplement l'adresse IP de localhost en un autre nom d'hôte.
Un socket de domaine Unix utilise le système de fichiers local pour créer un mécanisme IPC entre les processus serveur et client. Vous verrez un fichier dans / var quelque part lorsque le socket de domaine Unix est connecté.
Si vous recherchez uniquement la solution de performance ultime, vous pouvez explorer un IPC à mémoire partagée. Mais c'est un peu plus complexe.
la source
Avantages des sockets de domaine Unix.
Inconvénients des sockets de domaine Unix
la source