问题标签 [keep-alive]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
2 回答
2144 浏览

apache - apache2忽略MaxKeepAliveRequests,任意关闭连接

我们有一个 Tomcat 前端服务器,它代理我们的 Apache 2.2.11 应用服务器,在 64 位 Fedora 2.6.21.7 EC2 2xlarge 实例 (AKI aki-b51cf9dc) 上运行。Apache 正在运行 mod_perl 并且没有线程化。

我们试图让在另一个 EC2 实例上运行的 Tomcat 和 Apache 服务器之间的连接保持很长时间,而不是保持来自外部客户端直接进入 Apache 服务器的连接。我们的配置如下所示:

我们已经尝试了 MaxKeepAliveRequests 和 KeepAliveTimeout 的各种值,服务器肯定会与 Tomcat 保持一段时间的连接,但它总是在几秒钟内关闭它,当时只处理了几十个请求。可能很重要的是,我从未见过一个进程在使用 mod_status 观察时在套接字上维护 100 个或更多连接。

与非 Tomcat 客户端永远不会有任何持久连接,因此我们知道那里存在一些差异,并且在这两种情况下肯定都应用了 VirtualHost 配置。

我应该提到,来自 Tomcat 的请求都是 POST,而其他请求是 POST 和 GET 的混合。

当我使用 tcpdump 查看给定端口上的流量时,我可以清楚地看到许多 POST 正在正确处理,然后在返回一个好的回复(200,数据看起来不错)后的某个时刻,Apache 服务器立即关闭连接,发送一个FIN 到 Tomcat。这种情况发生在最后一个请求和倒数第二个请求或回复之间绝对没有区别的情况下,除了像真实客户端的 IP 这样的次要数据之外,因此在处理请求时没有迹象表明服务器在呕吐。当然,错误日志中没有任何可疑之处,而且 httpd 进程本身也没有死。

从 netstat 我们可以看到与 Tomcat 服务器的连接保持打开状态几秒钟,但在远程端口范围内快速循环,验证了我们在其他地方看到的情况。这几乎就像 Apache 试图公平分配连接以防止持久连接使其他连接挨饿——但它不会那样做,不是吗?!

我只想被告知我们在这里做了一些愚蠢的事情!拜托,请告诉我我是个白痴,或者至少是近视...

0 投票
1 回答
4573 浏览

.net - 如何通过 keepalive postgreSQL 中断 TCP/IP 连接而不更改寄存器中的任何内容?

我有一个使用客户端-服务器结构和 PostgreSQL 8.4 的系统。我的问题是,如果客户端正在编辑记录并失去与服务器的连接,仍然会考虑 TCPIP 连接!因此,记录保留在我的数据库中为客户分配。我需要在几分钟内免费编辑这些记录。因此,我在“postgresql.conf”中设置了 KEEPALIVE 配置:

进行这些设置并重新启动服务器后,系统继续以相同的方式运行:两小时后断开 TCPIP 连接,然后释放 PostgreSQL 中的记录。我需要一种高效且安全的方式让 PostgreSQL 了解它必须按照配置断开这些连接!

0 投票
1 回答
2902 浏览

apache - 用于高页面查看、长会话用户的 Apache Config - KeepAlive 和 MaxRequest 变量

我目前正在运行一个 Web 应用程序,该应用程序会看到几个(约 15 个)用户每天登录一次,然后将 Web 应用程序保持打开状态,它每 5 分钟自动刷新一次新内容。每个用户倾向于将其打开大约 15-18 小时。

然而,当用户达到临界质量(~30-40)时,一切都开始显着减慢,并且 HTTPD 进程开始在内存使用中膨胀。我添加了一个每小时重新启动一次 apache 的 cron 作业,但这只会有所帮助。所有内容都是动态生成的和新的观看时间,因此缓存页面不是一种选择。

我已经开始尝试使用 Timeout、MaxRequest 和 KeepAlive 选项,但任何指导都将不胜感激,因为我过去总是将这些设置为默认值。

这就是我所拥有的。任何 apache 天才都对如何针对上述情况优化此配置有想法?我认为长时间超时很好,因为加载时间有时会变得非常高。

0 投票
2 回答
1469 浏览

apache - Firefox 的网站非常慢,在所有其他浏览器上都是即时的:KeepAlive 问题?

我有一个网站,用 Firefox 加载一个页面需要 10 秒,而加载图像需要 10 秒。这是一个在 apache 上运行的 php 页面。图像只是静态图像。

它在 chrome 上运行得很漂亮......即时加载。

谷歌搜索的答案让我指出了一个可能的问题,即保持活动和缺乏内容长度使 Firefox 感到困惑,事实上,似乎服务器没有在静态或非静态内容上设置内容长度,而是禁用在服务器上保持活动会使加载时间加倍!

一些网站建议在浏览器上禁用保持活动,但我不愿意向所有查看该页面的人推荐!我可能是在吠叫错误的树吗?

浏览器是 Lucid Lynx 上的 firefox 3.6.8。服务器是 Apache 2.2.11。

apache.conf 已附加...我认为它是开箱即用的,尽管我将 KeepAlive 超时减少到 3 试图让页面加载是徒劳的。

我在吠叫错误的树吗?

0 投票
1 回答
7108 浏览

performance - 从 Web 服务器端保持活动的优点和缺点

HTTP 协议中的 Keep-Alive 连接功能旨在减少对 Web 服务器的 TCP 连接命中。它应该能够提高 Web 服务器的性能。但是,我发现一些 Web 服务器故意从服务器端禁用 KeepAlive 功能。

据我了解,一些反向代理,即HAProxy,会禁用HTTP keep-alive,以减少在某些情况下比CPU 使用更关键的内存使用。

Web 服务器禁用 Keep-Alive 还有其他原因吗?

0 投票
2 回答
317 浏览

performance - 在 Apache 前面安装 Lighttpd 的另一个好处

我在一个网站上读到,在 Apache 前面安装 Lighttpd 的另一个好处是子进程数量较少。Lighttpd 将处理保持活动和客户端请求,而 Apache 的子进程可以更快地为动态页面提供服务,因为 Lighttpd 和 Apache 之间的通信延迟非常低。我试图找到链接,但我很难。

鉴于我已经有一个专门的 Lighttpd 服务器用于我的静态内容(img、vid、css、js、html 等)和另一个专用的 Apache 服务器用于我的动态页面(php),如果它真的实现了,我想实现这个技术有一些性能提升。

1) 是否有人出于与上述相同的目的将 Lighttpd 放在 Apache 前面?
2)这真的有性能提升吗?多少钱?
3) Lighttpd 处理对 Apache 的请求的开销怎么样,真的值得吗?

谢谢!

0 投票
2 回答
3978 浏览

iphone - NSURLConnection 和保持活动状态

我的客户端应用程序中有一个使用 NSURLConnection 的小错误。我已将其追踪到一个意外的连接保持活动状态,这似乎使 Web 服务器感到困惑(可能是服务器端的错误)。解决方法是在某个点强制关闭所有未完成的连接。我可以用 NSURLConnection 以某种方式做到这一点吗,例如

[NSURLConnection closeAllIdleConnections];

0 投票
1 回答
211 浏览

wpf - PageFunction 未处理会导致崩溃

我有一个 WPF“向导”,我在其中使用 PageFunction 对象来显示向导中的各个页面。其中一些页面使用对应用程序内其他程序集中的对象的引用,因此用户可以选择他们想要包含在生成的输出中的“包”。在页面函数中,我将保持活动标志设置为 true,以便当用户在向导中按下取消或完成时,我可以捕获向导结果和用户选择的相应数据。

问题是即使在创建向导页面的范围已退出之后,向导页面也永远不会消失,因此,当我尝试从集合中删除向导数据绑定到的引用对象之一时,它会导致向导页面抛出异常。如果不将 KeepAlive 标志设置为 false,我似乎无法找到解决此问题的方法,但这会破坏从向导捕获用户数据的能力。

有任何想法吗?

谢谢!

0 投票
2 回答
1421 浏览

asp.net - 这是保持 asp.net 应用程序不被回收的安全方法吗?

我已经启动了一个计时器,每 20 分钟访问一次我的应用Applicaiton_start程序global.asax

这是一种安全的方式还是其他方式。我这样做是为了使用quartz.net 执行计划作业...

0 投票
2 回答
2319 浏览

c - UNIX C BSD Sockets TCP_KEEPALIVE how to check if socket is marked as broken

I have been trying to implement the TCP_KEEPALIVE parameter for a C server socket and I can't seem to figure out how to check if the socket is marked as broken. I followed this tutorial for configuring the socket to do the keep alive but it says that "If no ACK response is received for nine consecutive times, the connection is marked as broken". My question is, how do I know the socket is marked as broken?

Tutorial: http://tldp.org/HOWTO/html_single/TCP-Keepalive-HOWTO/