标签: keepalive

如何在 curl 中禁用 keepalive

我试图弄清楚如何在通过curl.

这是我的目标服务器:

- Ubuntu 18.04.2 LTS
- 4.15.0-47-generic
- HA-Proxy version 1.8.19-1ppa1~bionic 2019/02/12
Run Code Online (Sandbox Code Playgroud)

这是我发布的客户端 1 curl(香草安装):

- Ubuntu 16.04.3 LTS
- 4.4.0-62-generic
- curl 7.47.0 (x86_64-pc-linux-gnu) libcurl/7.47.0 GnuTLS/3.4.10 zlib/1.2.8 libidn/1.32 librtmp/2.3
Run Code Online (Sandbox Code Playgroud)

这是我发布的客户端 2 curl(香草安装):

- Ubuntu 18.04 LTS
- 4.15.0-20-generic
- curl 7.58.0 (x86_64-pc-linux-gnu) libcurl/7.58.0 OpenSSL/1.1.0g zlib/1.2.11 libidn2/2.0.4 libpsl/0.19.1 (+libidn2/2.0.4) nghttp2/1.30.0 librtmp/2.3
Run Code Online (Sandbox Code Playgroud)

要关闭 keepalive,我尝试使用-H "Connection: close"--no-keepalive并且--keepalive-time 1只有第一个选项似乎有效,但只能从客户端 1 使用。

在客户端 1 (Ubuntu 16) 上,连接没有保持打开状态,但在客户端 2 (Ubuntu 18) 上,连接保持打开状态,直到超时。我通过查看目标服务器watch -n …

networking http keepalive curl

5
推荐指数
2
解决办法
1万
查看次数

启用 nginx 上游 keepalive 的风险

使用 nginx 作为带有 PHP 后端的 Apache 的 HTTP 反向代理(我需要为网站管理员提供 .htaccess 灵活性)。看到 Apache 日志中使用的 http/1.0 让我了解如何启用保持活动连接。

在我的搜索中,我发现了 Nginx 的这篇博客文章https://www.nginx.com/blog/avoiding-top-10-nginx-configuration-mistakes/#no-keepalives

默认情况下,NGINX 为每个新的传入请求打开一个到上游(后端)服务器的新连接。这是安全但效率低下的,[...]

如果默认行为是安全的,那么启用上游 keepalive 的风险是什么?

http nginx reverse-proxy keepalive

5
推荐指数
1
解决办法
1万
查看次数

Windows 上不同浏览器之间的保持活动和超时行为

精简版

为什么 chrome 会发出 keep-alive,而 IE 和 FF 不会?

长版

最初,我认为这是服务器端问题。

我有一个 apache 服务器,它是 tomcat webapp 的前端代理。此应用程序上的其中一个页面需要 15-20 分钟才能返回结果。我观察到在通过 IE 或 FF 访问时,使用此页面会超时。它转到标准的“无法访问”页面,就像您在尝试访问网络时查看网络电缆是否断开一样。然而,在 Chrome 上,它工作得很好。

这让我很好奇,所以我在服务器上用 tcpdump 监视了流量,我注意到了很大的不同。虽然 IE 和 FF 在超时之前一直保持沉默,但 chrome 会定期向服务器发送 ACK 数据包(并且正在收到响应 ACK)。另外值得注意的是,IE/FF 似乎都发送了 TCP 断开连接,而不是从服务器接收任何超时。

是的,为什么 IE/FF 断开连接,而 Chrome 没有断开连接?为什么 Chrome 会发送 keep-alives 而 IE/FF 不会?

我已尝试更改此知识库文章中MS 推荐的注册表设置。它似乎没有改变任何行为。

来自 IE 的流量示例(FF 几乎相同)

23:25:56.814732 IP InternetExplorer.27378 > Server.https: . 83070:84430(1360) ack 154 win 65382
23:25:56.814976 IP InternetExplorer.27378 > Server.https: . 84430:85790(1360) ack 154 win …
Run Code Online (Sandbox Code Playgroud)

internet-explorer timeout firefox google-chrome keepalive

4
推荐指数
1
解决办法
9958
查看次数

试图了解 keep-alive 的工作原理

今天我们在服务器上遇到了一个问题,文件/脚本的加载时间超过了 3 秒。解决方案很简单 - 只需将 MaxClients 增加到估计的内存限制即可。但我担心该解决方案的可扩展性,它似乎不太可靠——如果负载稍微增加,问题会再次出现。

我们正在开发的网络服务的性质——小型在线游戏——要求我们嵌入 AJAX 机制,该机制每 15 秒发送一个信标,指示客户端在线。

让我们想象以下设置。Apache 2 (mpm_prefork), MaxClients = 150, KeepAlive = on, KeepAliveTimeout = 5. 有300个用户在线。我的理解是否正确 - 如果所有 300 个用户将同时发送一个信标(仅通过使用 POST 检索信标.php 脚本) - 前 150 个客户端将几乎立即得到答案,而其他 150 个客户端将不得不等待 5 秒才能得到一个回答?

还有第二个问题。在我的情况下,最好的解决方案是什么?完全禁用保持活动?

keepalive mpm-prefork apache-2.2

4
推荐指数
1
解决办法
3051
查看次数

apache2.conf 和 ProxyPass 中 keepalive 的区别

我在用 Apache 2.2.22

中的 Keepalive 指令之间有什么区别(如果有) /etc/apache2/apache2.conf

#
# KeepAlive: Whether or not to allow persistent connections (more than
# one request per connection). Set to "Off" to deactivate.
#
KeepAlive On
Run Code Online (Sandbox Code Playgroud)

以及/sites-enabled使用 ProxyPass 时配置中的指令

 ProxyPass / http://localhost:8080/app/ connectiontimeout=28800 timeout=28800 Keepalive=On
Run Code Online (Sandbox Code Playgroud)

proxy keepalive 502-error apache2

4
推荐指数
1
解决办法
9490
查看次数

mod_rewrite+proxy 关闭与后端的连接(keepalive)

我们有一个相当典型的设置:客户端 <-> apache2 (2.2.22) <-> 后端 (*)。

最初,我们以最简单的形式使用 mod_rewrite 和 [P] 标志:

<VirtualHost *:80>
  RewriteEngine On
  ProxyPreserveHost On
  RewriteRule ^(.*)$ http://localhost:8081$1 [P,L]
</VirtualHost>
Run Code Online (Sandbox Code Playgroud)

然而,使用此设置,即使客户端使用保持活动连接并使用一个 tcp 连接向 apache 发送多个 http 请求,apache 也会创建一个到后端的新 tcp 连接以获取请求。

我决定尝试直接使用 mod_proxy:

ProxyPreserveHost On
ProxyPass / http://localhost:8081/
Run Code Online (Sandbox Code Playgroud)

令我惊讶的是,现在 apache 和后端之间的 tcp 连接被重新使用(这是我最初的目标)。

这是为什么?mod_rewrite 中是否有某些内容可以配置以启用 keepalive 后端连接?

(*) 后端实际上是 haproxy <-> 多个应用程序服务器,但我认为这在这里并不重要。

mod-rewrite mod-proxy keepalive apache-2.2

3
推荐指数
1
解决办法
5422
查看次数

Nginx keepalive_requests - 无限制使用什么值?

我们在 nginx 代理后面使用 nginx 后端。

我们使用上游保活。

他们工作得很好。

我们想知道,我们应该keepalive_requests在后端设置什么值来将最大保活请求数设置为无限制?

谢谢!

nginx reverse-proxy keepalive

3
推荐指数
1
解决办法
7166
查看次数

tcp state TIME_WAIT &amp; HTTP keep-alive 的关系

HTTP 请求上的 keep-alive 和 TIME_WAIT 中的 tcp 套接字之间有什么关系 - 它们应该相关吗?

此外,系统和网络服务器设置是否应该保持一致,例如server.max-keep-alive-idle = 60?根据如何减少 TIME_WAIT 中的套接字数量?在 Linux 中,TIME_WAIT 状态被硬编码为 60 秒(至少对于 Linux 的 Ubuntu/Debain 值)。

在 lighttpd 中是默认值server.max-keep-alive-idle = 5,他们建议在高负载时甚至更低。如果 tcp 套接字可用,则在 5 秒后关闭 http 请求似乎是一种浪费——当然,假设设置按照net.ipv4.tcp_tw_reuse = 1它在锡上所说的进行。

这个相关的问题 - tcp 如何保持连接有效?[关闭]触及了这个问题,但没有为我完全回答。

http tcp keepalive time-wait

3
推荐指数
1
解决办法
7166
查看次数

如何在linux中找到连接超时值?

我正在使用 php-fpm 和 (d)dos deflate 设置一个 nginx 网络服务器以禁止攻击。

现在我的服务器根本没有流量,因为我正在测试。

使用此命令,我可以查看谁连接到我的服务器,以及他们打开了多少个连接:

netstat -ntu | awk '{print $5}' | 剪切 -d: -f1 | 排序 | uniq -c | 排序 -n

在测试期间,我注意到当我加载一个测试脚本时,它基本上<?php phpinfo(); ?>会启动 3 个连接。我猜 1 表示 HTML,2 表示该页面上的 2 张图像。到目前为止一切都很好...

但我注意到在关闭这 3 个连接之前花了一分钟多的时间。我一直在运行上面的 netstat 命令来查看这 3 个外部连接是否会关闭。

我的 nginx.conf 的保持活动超时为 4。

  keepalive_timeout       4;
Run Code Online (Sandbox Code Playgroud)

连接是通过默认设置的 Chrome 浏览器进行的。

这些连接怎么保持打开这么长时间,这正常吗?另外,有没有办法可以更快地关闭它们?

nginx timeout keepalive ddos

2
推荐指数
1
解决办法
3万
查看次数

是否存在套接字连接的保活?

预简报:

尽管我的问题很广泛,但我正在处理连接到 php-fpm (fcgi) 的 nginx,它通过本地套接字 (/tmp/somesocket.socket) 提供服务。

Nginx 有一个设置来保持与 fcgi 后端的连接(http://nginx.org/en/docs/http/ngx_http_fastcgi_module.html#fastcgi_keep_conn)。

这就是我的问题所涉及的。

题:

在linux中,当连接到本地套接字时,是否存在keepalives这样的东西?

保持连接是否会消除(甚至是一点点)与创建/拆除连接相关的一些开销?

谢谢。

linux tcpip nginx keepalive socket

1
推荐指数
1
解决办法
1897
查看次数