【问题标题】:does http:keep-alive keep the php resources open or does it free all the resources?http:keep-alive 是保持 php 资源打开还是释放所有资源?
【发布时间】:2011-06-26 23:12:17
【问题描述】:

我在 apache 服务器上使用 http keep-alive,
假设我要求它保持连接打开最多 2 分钟...
现在,如果连接创建并空闲一分钟,php 所持有的资源会不会,
像 mysql 连接、文件句柄等,会被释放还是会继续存在?

【问题讨论】:

  • 问题是,您无法在新请求中识别您的保留资源。我猜它只是指示 appache 不要退出已开始处理您的请求的进程。但与在 HTTP 1.1 中一样,不再使用此 keep-alive 选项。 B/c 没有启动单独的进程来处理不同的请求。有趣的问题。希望有人能给出明确的答案。因为快速搜索没有找到“简单”的答案。
  • 这并不是说它不再使用了,它是默认设置的......所以 httpd.conf 文件中有一个选项可以启用它并告诉它保持打开的时间.. .是的,我希望有人给我一个真正的答案:)

标签: php apache apache2 keep-alive


【解决方案1】:

已确认。 Keep-Alive 是一种防止代价高昂的 TCP 连接协商的机制。您的 PHP 进程/线程正常启动,需要像往常一样分配所有资源。

对于高负载情况,即使保持活动周期不要太长也是明智之举:所有连接请求都会竞争服务器的空闲连接槽。如果所有插槽都被 keep-alive 连接占用,其他用户可能无法连接。

但是,像往常一样,最佳插槽数量和良好的保活期取决于您的具体负载情况。

【讨论】:

  • 哟 :) 确认 :) 第二天我也做了一些测试......我观察到了同样的......
  • 感谢您的确认!可以请您回答一个好吗?
【解决方案2】:

不,http keep-alive 保存 tcp 连接的资源。 php 和 mysql 甚至不会意识到连接是打开的,当你发出下一个请求时它会很快,因为时间花在解析 ip 地址上,并且打开新的 tcp 连接将被保存所有这些东西都保留在 apache 中。

【讨论】:

    猜你喜欢
    • 2012-05-04
    • 1970-01-01
    • 1970-01-01
    • 2012-07-27
    • 2021-12-20
    • 2012-01-08
    • 2013-08-11
    • 2018-11-08
    • 1970-01-01
    相关资源
    最近更新 更多