在本地开发机器上,我有一个 nginx 反向代理,如下所示:
server {
listen 80;
server_name myvirtualhost1.local;
location / {
proxy_pass http://127.0.0.1:8080;
}
server {
listen 80;
server_name myvirtualhost2.local;
location / {
proxy_pass http://127.0.0.1:9090;
}
Run Code Online (Sandbox Code Playgroud)
然而,如果我调试我的应用程序,响应可能会延迟无限长的时间,但在 30 秒后我得到:
504 Gateway Time-out
作为回应。
如何禁用超时并使我的反向代理永远等待响应?而且我喜欢全局设置,这样我就不必为每个代理设置它。
我正在尝试编写一个脚本,列出 LAN 上的所有主机(大约有 20 个)并在每个主机旁边写入 ping 状态。我有 DHCP 租约文件,所以我有所有的 IP(比如 10.0.0.1、10.0.0.2 等),我需要的只是每个主机的 ping 状态。
因此,我的脚本为每个主机启动一个 ping:
ping -c 1 10.0.0.1
Run Code Online (Sandbox Code Playgroud)
不幸的是,当主机离线时,ping 需要很长时间才能超时。我查了一下man ping
,似乎有两个选项可以设置超时延迟:-w deadline
和-W timeout
。我想我对后者感兴趣。
所以我试过这个:
ping -c 1 -W 1 10.0.0.1
Run Code Online (Sandbox Code Playgroud)
但是每个离线主机等待一秒钟仍然太长。我试图将其设置为低于一秒,但它似乎根本没有考虑该参数:
ping -c 1 -W 0.1 10.0.0.1 # timeout option is ignored, apparently
Run Code Online (Sandbox Code Playgroud)
有没有办法将超时设置为较低的值?如果没有,是否有其他选择?
编辑
ping -b
例如)。编辑 #2
我接受了fping
解决方案(感谢所有其他答案)。这个命令完全符合我的要求:
fping -c1 -t500 10.0.0.1 10.0.0.2 10.0.0.3 10.0.0.4
Run Code Online (Sandbox Code Playgroud)
此命令最多需要 500 毫秒才能完成,并一次为我提供所有主机的 ping …
调试 6 小时后 - 我放弃了:|
我们在 LAN 中有一个 nginx+php-fpm+mysql,有近 100 个 wordpress(由不同的设计人员/开发人员创建和使用,他们都在测试 wordpres 设置)
我们长期使用 nginx 没有任何问题。
今天,突然间——nginx开始突然返回“504网关超时”......
我检查了虚拟主机的 nginx 错误日志...
2010/09/06 21:24:24 [error] 12909#0: *349 upstream timed out (110: Connection timed out) while reading response header from upstream, client: 192.168.0.1, server: rahul286.rtcamp.info, request: "GET /favicon.ico HTTP/1.1", upstream: "fastcgi://127.0.0.1:9000", host: "rahul286.rtcamp.info"
2010/09/06 21:25:11 [error] 12909#0: *349 recv() failed (104: Connection reset by peer) while reading response header from upstream, client: 192.168.0.1, server: rahul286.rtcamp.info, request: "GET /favicon.ico HTTP/1.1", upstream: "fastcgi://127.0.0.1:9000", host: …
Run Code Online (Sandbox Code Playgroud) HTTP keepAlive 的 IIS7 默认时间是多少?
我已经开始使用 Nginx 作为一组提供某种服务的服务器的反向代理。
该服务有时可能相当慢(它在 Java 上运行,而 JVM 有时会陷入“完全垃圾收集”,这可能需要几秒钟),所以我将 设置proxy_connect_timeout
为 2 秒,这将使 Nginx 有足够的时间来计算出服务卡在 GC 上并且不会及时响应,它应该将请求传递到不同的服务器。
proxy_read_timeout
如果服务本身需要太多时间来计算响应,我还设置了防止反向代理卡住 - 同样,它应该将请求移动到另一个应该足够空闲以返回及时响应的服务器。
我已经运行了一些基准测试,我可以清楚地看到,proxy_connect_timeout
由于某些请求完全在为连接超时指定的时间返回,因此工作正常,因为服务卡住并且不接受传入连接(该服务使用 Jetty 作为嵌入式servlet 容器)。这proxy_read_timeout
也有效,因为我可以看到在那里指定的超时后返回的请求。
问题是proxy_read_timeout + proxy_connect_timeout
,如果服务被卡住并且在 Nginx 尝试访问它时不接受连接,但在 Nginx 可以超时之前 - 它被释放并开始处理,但速度太慢,Nginx 会因为读取超时而中止。我相信该服务有这样的情况,但是在运行了几个基准测试之后,总共有数百万个请求 - 我没有看到一个请求在上面的任何内容中返回proxy_read_timeout
(这是更大的超时)。
我很感激对此问题的任何评论,尽管我认为这可能是由于 Nginx 中的错误(我还没有查看代码,所以这只是一个假设)连接后超时计数器不会重置如果 Nginx 没有从上游服务器读取任何内容,则成功。
我在 AWS 上运行了这台 nginx 服务器,直到最近,当几个用户开始抱怨该网站在尝试访问 10 次后才打开,它一直运行良好。
我从来没有能够从我身边重现这个问题。我正在使用 google 的 dns,即 8.8.8.8,当我为其中一个用户更改相同的 dns 时,该站点运行良好。现在这可能是原因,也可能只是巧合。
我在错误日志中发现了这个 -
2014/05/29 13:46:15 [info] 6940#0: *150649 client timed out (110: Connection timed out) while waiting for request, client: xx.xxx.xxx.xx, server: 0.0.0.0:80
2014/05/29 13:46:20 [info] 6940#0: *150670 client closed connection while waiting for request, client: xx.xxx.xxx.xx, server: 0.0.0.0:80
2014/05/29 13:46:20 [info] 6940#0: *150653 client closed connection while waiting for request, client: xx.xxx.xxx.xx, server: 0.0.0.0:80
2014/05/29 13:46:20 [info] 6940#0: *150652 client closed connection while waiting for request, …
Run Code Online (Sandbox Code Playgroud) 我已经为我的域设置了 SSL,它从 Apache 的角度工作。
问题是通过 HTTPS 访问我的域有时会导致超时。当它不起作用时,通过 HTTP 访问我的网站需要一些时间,但它永远不会超时。
为什么 HTTPS 会发生这种情况,有没有办法控制 HTTPS 的超时时间?
我的配置:CentOS 5 上的 Apache 2.2.11
NameVirtualHost *:443
<VirtualHost *:443>
SuexecUserGroup foo
DocumentRoot /home/mydomain/www/
ServerName example.com
SSLEngine on
SSLProtocol -all +TLSv1 +SSLv3
SSLCipherSuite HIGH:MEDIUM:!aNULL:+SHA1:+MD5:+HIGH:+MEDIUM
SSLCertificateFile /path/example.com.com.crt
SSLCertificateKeyFile /path/example.com.key
SSLVerifyClient none
SSLProxyVerify none
SSLVerifyDepth 0
SSLProxyVerifyDepth 0
SSLProxyEngine off
SetEnvIf User-Agent ".*MSIE.*" nokeepalive ssl-unclean-shutdown downgrade-1.0 force-response-1.0
<Directory "/home/mydomain/www">
SSLRequireSSL
AllowOverride all
Options +FollowSymLinks +ExecCGI -Indexes
AddHandler php5-fastcgi .php
Action php5-fastcgi /cgi-bin/a.fcgi
Order allow,deny
Allow from all
</Directory>
<Directory …
Run Code Online (Sandbox Code Playgroud) 我们在 LAN 上遇到了令人沮丧的问题。定期对我们的 ISP 域名服务器进行 DNS 查询会导致 5 秒的延迟。即使我/etc/resolv.conf
通过直接挖掘我们的 DNS 服务器来绕过,我仍然会遇到问题。下面是一个例子:
mv-m-dmouratis:~ dmourati$ time dig www.google.com @209.81.9.1
; <<>> DiG 9.8.3-P1 <<>> www.google.com @209.81.9.1
;; global options: +cmd
;; Got answer:
;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 14473
;; flags: qr rd ra; QUERY: 1, ANSWER: 5, AUTHORITY: 4, ADDITIONAL: 4
;; QUESTION SECTION:
;www.google.com. IN A
;; ANSWER SECTION:
www.google.com. 174 IN A 74.125.239.148
www.google.com. 174 IN A 74.125.239.147
www.google.com. 174 IN A 74.125.239.146
www.google.com. 174 …
Run Code Online (Sandbox Code Playgroud) 我正在尝试使用 SSMS 向 SQL Server 2005 中包含大量数据的表中添加一列。
所以我浏览到表,选择修改,然后添加新列。然后,当我按保存时,我收到以下警告:
保存对包含大量数据的表的定义更改可能需要相当长的时间。保存更改时,将无法访问表数据
我没问题,数据库处于离线状态,而我一直在世界上,所以我按是。
但是,操作将在大约 30 秒后超时并显示以下消息:
无法修改表。超时已过。操作完成前超时时间已过或服务器未响应。
然后,当我按 OK 时:
用户取消保存对话框(MS Visual Database Tools)
我不明白。我已在 SSMS 连接对话框和工具 -> 选项 -> 查询执行 -> SQL Server 下将执行超时设置为 0(无限)。如果只是忽略它,设置执行超时有什么意义?
有谁知道这里使用了什么超时值,以及如何设置它?
我使用prefork
. Apache 每天收到大约 100k-200k 的请求,其中大约 100-200 个达到超时限制(所以大约千分之一),几乎所有其他请求都远低于超时。
我该怎么做才能找出发生这种情况的原因?或者所有请求的一些小部分超时是否正常?
这是我到目前为止所做的:
可以看出,在超时限制和更合理的请求之间的请求很少。目前超时限制设置为 50 秒,之前设置为 300 并且情况仍然相同,有一些超时,然后与其他请求存在巨大差距。
所有超时的AJAX
请求都是请求,但绝大多数都是请求,所以这可能更多是巧合。Apache 返回码为200
,但显然已达到超时限制。它们来自各种不同的 IP。
我查看了超时的请求,它们没有什么特别之处,如果我执行相同的请求,它们会在不到一秒钟的时间内完成。
我试图查看不同的资源,看看我是否能找到原因,但没有运气。总是有足够的空闲内存(最低大约 3GB 空闲),负载有时高达 1.4,CPU 利用率高达 40%,但许多超时发生在负载和 CPU 利用率低时。磁盘写入/读取在白天几乎保持不变。MySQL 慢查询日志中没有条目(设置为记录 1 秒以上的任何内容),无请求使用那么多数据库写入/读取。
蓝色是 CPU 利用率,峰值为 40%,栗色是负载,峰值为 1.4。所以我们可以看到,即使 CPU 利用率/负载较低,也会出现超时(十秒峰值与 CPU 利用率很好地对应,但这是另一个问题,我更有希望找出可能导致这些问题的原因)。
Apache 错误日志中没有错误,我还没有看到它达到超过 200 个活动的 Apache 进程。
Timeout 50
KeepAlive On
MaxKeepAliveRequests 100
KeepAliveTimeout 2
<IfModule mpm_prefork_module>
ServerLimit 350
StartServers 20
MinSpareServers 75
MaxSpareServers 150
MaxClients 320
MaxRequestsPerChild 5000
</IfModule>
Run Code Online (Sandbox Code Playgroud)
我更新到 Ubuntu 12.04.1,以防万一,没有变化。我添加了 mod_reqtimeout 设置: …