精简版
为什么 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) 我有一个默认的 Apache 2.2 系统设置,其中有一个 Perl CGI 脚本目录,配置如下:
ScriptAlias /jarvis/ "/opt/jarvis/cgi-bin/"
Run Code Online (Sandbox Code Playgroud)
除了我的一个脚本需要 10 多分钟来处理之外,这里没有什么特别的,并且由于各种原因,在此期间没有打印任何内容。
Apache 似乎有 10 分钟(600 秒)的时间范围来运行 CGI 脚本 - 如果在此时间范围内脚本没有出现任何输出,则脚本将被终止,并向浏览器/客户端发送 500 响应。
消息:
[Thu Apr 23 13:57:53 2009] [warn] [client 127.0.0.1] Timeout waiting for output from CGI script /opt/jarvis/cgi-bin/jarvis.pl
Run Code Online (Sandbox Code Playgroud)
出现在一个系统(Ubuntu,通过 apt-get 安装)的日志中,但不会出现在另一个系统(Windows,通过包下载安装)上。
我的问题是 - Apache 2.2 中是否有任何配置可以让我运行脚本超过 10 分钟而不会被杀死?
编辑
定期写入日志消息可以避免此错误 - 因此每隔几分钟写入一次日志消息可确保长时间运行的进程不会被终止。我最终通过在客户端上实现一个进度条并让我的脚本编写一个“.”来解决我的问题。每隔一段时间更新另一端的栏。
谢谢,杰米
在具有此硬件的服务器的 kickstart 安装 (Centos 6.0) 期间:
我按下ctrl+ alt+ del,因为我想重新开始kickstart安装。以前用这种方式重新启动kickstart 安装是行得通的,所以我很惊讶Areca 1880i 卡的初始化在下次启动时失败。首先计算机显示此消息几秒钟
AMIBIOS(C)2009 American Megatrends, Inc.
Supermicro X8DTN+-F BIOS Date: 03/17/11 16:42:32 Ver 2.1
CPU : Intel(R) Xeon(R) CPU E5620 @ 2.40GHz
Speed : 2.40 GHz Count : 2
Press DEL to run Setup (F4 on Remote Keyboard)
Press F12 if you want to boot from the network
Press …Run Code Online (Sandbox Code Playgroud) 所以我的HAProxy配置和这个类似。
listen webaustin 0.0.0.0:80
mode http
timeout connect 12000
timeout server 60000
timeout queue 120000
balance roundrobin
option httpchk GET /index.html
log global
option httplog
option dontlog-normal
server web1 10.10.10.101:80 maxconn 600 check fall 10
server web2 10.10.10.102:80 maxconn 600 check fall 10
server web3 10.10.10.103:80 maxconn 600 check fall 10
server web4 10.10.10.104:80 maxconn 600 check fall 10
Run Code Online (Sandbox Code Playgroud)
这对我们的系统非常有效,四个后端网络服务器,一个前端网络服务器,超时设置合理。
我的问题是,我有一个 URL,我需要更长的超时时间。这是一项非常繁重的任务,在后端需要很长时间。
无论如何要更改单个 URL 的超时变量?
我在使用 Nginx 时遇到了奇怪的行为。就我而言,Nginx 充当 Jetty 的代理。配置如下:
server {
listen 80;
client_header_timeout 3m;
client_body_timeout 3m;
send_timeout 3m;
client_max_body_size 5M;
server_name test.com www.test.com
location / {
auth_basic "Restricted area";
auth_basic_user_file /etc/nginx/htpasswd;
proxy_pass http://localhost:8080;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-Forwarded-Proto http;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header Host $http_host;
gzip on;
}
}
Run Code Online (Sandbox Code Playgroud)
上传大小大于 5M 的文件时,出现“网关超时”。CPU 使用率为 0%。我不知道出了什么问题。它与网络速度无关,因为我正在本地测试。
如果我跳过代理并尝试直接将文件上传到应用程序服务器(我的意思是:在端口 8080 上),一切都像魅力一样。
任何的想法 ??问候!
我使用下面的教程在 Digital Ocean 服务器上设置 postfix 和 dovecot。但是当 postfix/smtp 尝试将电子邮件发送到 gmail 或 yahoo 等远程主机时,我收到了“连接超时”的消息。
https://www.digitalocean.com/community/articles/how-to-set-up-a-postfix-e-mail-server-with-dovecot
接收新消息 /var/log/mail.log
Feb 2 22:33:38 localhost dovecot:auth-worker:调试:从目录加载模块:/usr/lib/dovecot/modules/auth
Feb 2 22:33:38 localhost dovecot: auth-worker: Debug: pam(app,189.63.49.XXX): 查找服务=dovecot
Feb 2 22:33:38 localhost dovecot: auth-worker: Debug: pam(app,189.63.49.XXX): #1/1 style=1 msg=Password:
Feb 2 22:33:38 localhost dovecot: auth: Debug: client out: OK#0111#011user=app
Feb 2 22:33:40 localhost postfix/submission/smtpd[1045]: E9AA724264: client=unknown[189.63.49.XXX], sasl_method=PLAIN, sasl_username=app
2 月 2 日 22:33:43 本地主机后缀/清理 [1052]:E9AA724264:消息 ID=
Feb 2 22:33:43 localhost postfix/qmgr[32661]: E9AA724264: from=, size=485, nrcpt=1 (queue active)
2 …
我遇到了使用 DNS 循环进行故障转移的站点的问题。
有两个网络服务器。当我在一个盒子上关闭 apache 时,一切都很好。当浏览器尝试在 apache 关闭的情况下访问网络服务器时,它会拒绝连接并自动尝试另一个连接。
但是,重新启动时,我遇到了问题。当我重新启动服务器时,而不是连接被拒绝,浏览器现在等待超时导致站点非常慢,直到服务器恢复。
有没有办法设置网络(或 CentOS),以便在重新启动期间,该 IP 继续拒绝而不是花费很长时间超时?
数周以来,我一直在为这个问题而苦苦挣扎,但我的想法已经不多了。我运行 HAProxy 以根据请求的路径/标头在 3 个后端之间代理请求。
我的后端是:
最后一个后端 (prerender.io) 似乎有零问题(尽管它的流量很少)。另外两个随机向客户端返回 504 错误(根据日志大约每分钟一次,但没有明确的模式)。
这是我的(消毒)配置:
defaults
log global
mode http
option httplog
option dontlognull
timeout connect 5s
timeout client 120s
timeout server 120s
frontend foobar
mode http
bind *:80
bind *:443 ssl crt /etc/ssl/certs/foobar.com.pem
redirect scheme https code 301 if !{ ssl_fc }
default_backend s3
acl api path_beg -i /api/
use_backend node if api
acl user-agent-bot hdr_sub(User-Agent) -i baiduspider twitterbot facebookexternalhit
use_backend …Run Code Online (Sandbox Code Playgroud) 这看起来像是 Nginx+uWSGI 超时的一个众所周知的问题,但我的设置不同,我找不到有关它的信息。
我在 uWSGI 上运行 Flask 应用程序,使用 http 协议(不是套接字)。当我查询 API 时,有时会收到错误消息:
uwsgi_response_write_body_do() TIMEOUT !!!
IOError: : write error
Run Code Online (Sandbox Code Playgroud)
我在“工作时间”收到它的频率更高,即在晚上不那么频繁。我正在查询长 JSON 数据(地理坐标,最多 50 MB),有时我根本没有得到响应,有时我得到了部分响应。这些是来自 Pythonrequests请求的错误:
requests.exceptions.ConnectionError: ('Connection aborted.', error(104, 'Connection reset by peer'))
requests.exceptions.ChunkedEncodingError: ('Connection broken: IncompleteRead(0 bytes read)', IncompleteRead(0 bytes read))
ValueError: Expecting object: line 1 column 5590371 (char 5590370)
ValueError: Unterminated string starting at: line 1 column 20998536 (char 20998535)
ValueError: end is out of bounds
# when I set `timeout=None` in Python
requests.exceptions.ReadTimeout: HTTPConnectionPool(host='mydomain.com', port=80): …Run Code Online (Sandbox Code Playgroud) 在 CentOS 7 Linux 上,我在通过 FastCGI 为 Wordpress 站点提供服务的Jetty 9前面成功使用了 HAProxy 1.5.14 。
它工作得非常好,但是对于同一网站上的 HTML5/WebSocket 游戏,WebSocket 连接到/ws/URL 的客户端和服务器超时需要更高的时间。
所以我将/etc/haproxy/haproxy.cfg文件修改为以下内容:
global
chroot /var/lib/haproxy
pidfile /var/run/haproxy.pid
maxconn 4000
user haproxy
group haproxy
daemon
tune.ssl.default-dh-param 2048
defaults
mode http
log global
option httplog
option dontlognull
option http-server-close
option forwardfor except 127.0.0.0/8
option redispatch
retries 3
timeout http-request 10s
timeout queue 1m
timeout connect 10s
timeout client 1m # HOW TO INCREASE FOR /ws/ ?
timeout …Run Code Online (Sandbox Code Playgroud)