【问题标题】:FastCGI on port vs. on socket端口上的 FastCGI 与套接字上的 FastCGI
【发布时间】:2010-11-15 05:41:12
【问题描述】:

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

他们唯一要说的就是

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

(顺便说一句,我在使用套接字时遇到了权限问题,但在使用主机时没有:)。 )

我依稀记得我的系统编程课上的套接字是如何工作的,但我真的很好奇两者之间的有效区别是什么。任何时候有选择的东西,都有某人对这件事有意见,所以我希望得到那个。特别是有什么性能差异吗?

或者,如果它真的无关紧要,我只是想要一些确认,这样我就可以继续我的编程并忽略这些系统管理员的东西。

【问题讨论】:

  • TCP 套接字和 unix 命名的套接字都是套接字。你遇到了哪一个问题?
  • 这是不久前的事了,但我似乎记得必须将一个 lighttpd 指向我的文件系统上的一个 .sock 文件,这是一个命名的套接字,对吧?呃,我需要阅读更多关于这些东西的内容。

标签: sockets fastcgi scgi


【解决方案1】:

我认为真正的区别是,如果你的连接率非常高,但连接时间很短,你可能会用完端口,因为使用 TCP 的端口会在一段时间内处于 TIME_WAIT 状态。命名套接字不是这样。

如果我知道它只会被本地主机使用,我会为本地连接使用命名套接字。但是对于这种用途....是的,这并不重要。不是性能明智或其他。如果您改变主意,以后很容易改变。如果您使用该选项,请确保为 TCP 端口设置防火墙。

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

【讨论】:

    【解决方案2】:

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

    只要绑定到大于 1000 的端口,就不需要对 TCP 套接字执行此操作。

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

    【讨论】:

      猜你喜欢
      • 2011-07-26
      • 2011-11-28
      • 1970-01-01
      • 2013-10-26
      • 1970-01-01
      • 1970-01-01
      • 2012-07-16
      • 2010-10-19
      • 2012-12-27
      相关资源
      最近更新 更多