Sockets 端口上的FastCGI与套接字上的FastCGI

Sockets 端口上的FastCGI与套接字上的FastCGI,sockets,fastcgi,scgi,Sockets,Fastcgi,Scgi,我今天在Cherokee上设置Django(使用SCGI),我注意到您可以使用主机/端口组合或套接字在Web服务器和Django之间进行通信 在这件事上他们唯一要说的是 你选择的是一种偏好方式;由于权限问题,TCP套接字通常更容易使用 (顺便说一句,我在使用套接字执行此操作时遇到了权限问题,但在主机上却没有:)) 我模模糊糊地记得在我的系统编程课上套接字是如何工作的,但我真的很好奇这两者之间的有效区别是什么。任何时候有选择的时候,都会有人对这件事有意见,所以我希望得到这个。特别是,是否存在性能差

我今天在Cherokee上设置Django(使用SCGI),我注意到您可以使用主机/端口组合或套接字在Web服务器和Django之间进行通信

在这件事上他们唯一要说的是

你选择的是一种偏好方式;由于权限问题,TCP套接字通常更容易使用

(顺便说一句,我在使用套接字执行此操作时遇到了权限问题,但在主机上却没有:))

我模模糊糊地记得在我的系统编程课上套接字是如何工作的,但我真的很好奇这两者之间的有效区别是什么。任何时候有选择的时候,都会有人对这件事有意见,所以我希望得到这个。特别是,是否存在性能差异


或者,如果这真的不重要,我只想得到一些确认,这样我就可以继续编程,忽略sysadmin-y的内容。

UNIX套接字作为文件系统中的文件进行管理。您需要正确设置用户/组值和权限。它还必须位于您正在使用的任何jailroot中(使用postfix+mysql时的一个常见错误)

对于TCP套接字,只要绑定到>1000的端口,就不需要这样做


可以认为UNIX套接字的速度稍快一些,因为它没有网络协议,因此跳过了网络堆栈,但仅限于一台计算机。另一方面,TCP允许您连接到运行在不同主机上的服务。

我认为真正的区别在于,如果您的连接速率非常高,并且连接时间很短,那么您可能会耗尽端口,因为使用TCP时,已用端口会在一段时间内处于“等待”状态。命名套接字则不然

如果我知道只有本地主机才会使用命名套接字,那么我会将其用于本地连接。但对于这个用途。。。。是的,这并不重要。不是性能方面的。如果你改变主意,以后很容易改变。如果使用该选项,请确保对TCP端口设置防火墙


同样,TCP套接字也是套接字。

TCP套接字和unix命名套接字都是套接字。你对哪一个有问题?那是很久以前的事了,但我似乎记得必须将lighttpd指向文件系统中的.sock文件,这是一个命名套接字,对吗?呃,我需要多读一些这方面的东西。