2009-07-29 8 views
18

Ich richtete Django heute auf Cherokee (mit SCGI), und ich bemerkte, dass the Django docs sagen, dass Sie entweder eine Host/Port-Kombination oder einen Socket für die Kommunikation zwischen dem Webserver und Django verwenden können.FastCGI auf Port vs auf Socket

Das einzige, was sie zu diesem Thema zu sagen haben, ist

Was Sie wählen, eine Art Präferenz ist; Ein TCP-Socket ist normalerweise aufgrund von Berechtigungsproblemen einfacher.

(Übrigens hatte ich Probleme mit dem Ausführen mit einem Socket, aber nicht mit einem Host :).)

Ich erinnere mich vage daran, wie Sockets von meiner Systemprogrammierklasse funktionieren, aber ich bin wirklich neugierig, was der effektive Unterschied zwischen den beiden ist. Jedes Mal, wenn es eine Auswahl gibt, gibt es jemand mit einer Meinung zu der Sache, also hatte ich gehofft, das zu bekommen. Gibt es insbesondere Leistungsunterschiede?

Oder, wenn es überhaupt nicht wichtig ist, würde ich nur eine Bestätigung wünschen, also kann ich mit meiner Programmierung fortfahren und dieses sysadmin-y-Zeug ignorieren.

+0

Sowohl ein TCP-Socket als auch ein Unix namens Socket sind Sockets. Welche hast du Probleme mit? – Thomas

+0

Es war eine Weile her, aber ich erinnere mich ein lighttpd bei einer .sock Datei auf meinem Dateisystem-zu-Punkt aufweisen, der eine benannte Buchse ist, nicht wahr? Ach, ich muss mehr über dieses Zeug lesen. –

Antwort

36

Ein UNIX-Socket wird als Datei im Dateisystem verwaltet. Sie müssen Benutzer-/Gruppenwerte und Berechtigungen richtig festlegen. Es muss auch in einem beliebigen jailroot enthalten sein (ein häufiger Fehler bei der Verwendung von postfix + mysql).

Sie brauchen nicht, dass für eine TCP-Socket zu tun, solange Sie an einen Port binden> 1000

Ein UNIX-Socket leicht werden kann schneller angesehen, da sie nicht ein Netzwerkprotokoll hat und somit überspringt der Netzwerkstapel, ist jedoch auf eine einzige Maschine beschränkt. TCP auf den anderen Händen ermöglicht es Ihnen, Verbindungen zu Diensten herzustellen, die auf verschiedenen Hosts ausgeführt werden.

+21

port> 1023 tatsächlich – Thomas

6

Der wirkliche Unterschied Ich denke, dass, wenn Sie eine wirklich hohe Verbindungsrate mit kurzlebigen Verbindungen haben, können Sie aus den Häfen laufen, weil verwendete Ports für eine Weile mit TCP in TIME_WAIT Zustand enden. Nicht so mit benannten Sockets.

würde ich eine benannte Buchse für lokale Verbindungen verwenden, wenn ich, dass es einfach nur von dem lokalen Host verwendet werden. Aber für diesen Zweck .... ja, es wird nicht wirklich wichtig sein. Nicht leistungsorientiert oder anders. Es ist einfach, später zu ändern, wenn Sie Ihre Meinung ändern. Stellen Sie nur sicher, den TCP-Port zu firewall, wenn Sie diese Option verwenden.

Und wieder ist ein TCP-Socket auch ein Socket.

+0

Hilfreiche, danke! –