Apache Timeout
来源:互联网 发布:中国国际储备数据 编辑:程序博客网 时间:2024/06/05 23:01
timeout官方解析
http://httpd.apache.org/docs/2.2/mod/core.html#timeout
我的理解是这个超时参数只是前后两次tcp传输包的间隔,如果大于这个间隔,apache就主动关闭tcp连接.
(中文文档翻译有出入,被坑爹了)
-------------------------------------------------------------------------
httpd.conf设置:
Timeout 10
(1)测试原理:写个脚本与apache三次握手建立tcp连接之后,发送一个不完整的http GET请求,也就是最后的一个"\r\n"不传送,然后每隔5秒发送一个垃圾包.
测试结果:该apache线程一直被这个连接hold住,在大致过了2分钟才返回400错误(Size of a request header field exceeds server limit),断开tcp连接.
注意:这儿返回400是 LimitRequestFieldSize 这个参数的作用,这个参数默认为 8k,表示最多能接收的request header的大小,因为我一直在发垃圾包,所以最终导致request header大于了这个默认值,apache返回了400.(这儿的响应时间跟包的流量有关)
(2)测试方法同(1),不过间隔时间改为 15s 发送一个包,大于timetout的设置.
测试结果:该apache线程10s后就返回了400错误,断开tcp连接. 响应时间与设置的timeout值相同.
结论:
(1)timeout并不是接受一个GET请求耗费的总时间,而只是指两个tcp包之间的超时时间.
(2)如果客户端以小于timeout的时间间隔一直发错误包,这个apache线程将被一直hold住,直到LimitRequestFieldSize所指大小.
http://httpd.apache.org/docs/2.2/mod/core.html#timeout
我的理解是这个超时参数只是前后两次tcp传输包的间隔,如果大于这个间隔,apache就主动关闭tcp连接.
(中文文档翻译有出入,被坑爹了)
-------------------------------------------------------------------------
httpd.conf设置:
Timeout 10
(1)测试原理:写个脚本与apache三次握手建立tcp连接之后,发送一个不完整的http GET请求,也就是最后的一个"\r\n"不传送,然后每隔5秒发送一个垃圾包.
测试结果:该apache线程一直被这个连接hold住,在大致过了2分钟才返回400错误(Size of a request header field exceeds server limit),断开tcp连接.
注意:这儿返回400是 LimitRequestFieldSize 这个参数的作用,这个参数默认为 8k,表示最多能接收的request header的大小,因为我一直在发垃圾包,所以最终导致request header大于了这个默认值,apache返回了400.(这儿的响应时间跟包的流量有关)
(2)测试方法同(1),不过间隔时间改为 15s 发送一个包,大于timetout的设置.
测试结果:该apache线程10s后就返回了400错误,断开tcp连接. 响应时间与设置的timeout值相同.
结论:
(1)timeout并不是接受一个GET请求耗费的总时间,而只是指两个tcp包之间的超时时间.
(2)如果客户端以小于timeout的时间间隔一直发错误包,这个apache线程将被一直hold住,直到LimitRequestFieldSize所指大小.
测试代码
- #!/usr/bin/perl -w
- use strict;
- use Socket;
- use IO::Handle;
- use threads;
- sub connect {
- my $host = '172.23.181.160';
- my $port = '80';
- my $protocol = getprotobyname('TCP');
- $host = inet_aton($host);
- socket(SOCK, AF_INET, SOCK_STREAM, $protocol) or die ;
- my $dest_addr = sockaddr_in($port, $host);
- connect(SOCK, $dest_addr) or die;
- SOCK->autoflush(1);
- # print SOCK "POST /member/login.jhtml HTTP/1.1\r\nHost:login.taobao.com\r\nContent-Length: 100\r\n\r\n";
- print SOCK "GET /member/login.jhtml HTTP/1.1\r\nHost:login.taobao.com\r\n";
- while (1) {
- print SOCK "hello world!";
- sleep(5);
- }
- close SOCK;
- }
- my $child = 0;
- for ( my $i = 0; $i< 1; $i++) {
- $child = threads->new(\&connect);
- }
- $child->join;
转载:http://blog.chinaunix.net/uid-20767124-id-3013076.html
0 0
- Apache Timeout
- Apache Gateway Timeout
- 关于Apache 的timeout 误解
- timeout
- timeout
- timeout
- Timeout
- timeout
- org.apache.axis2.AxisFault: Timeout waiting for connection
- org.apache.axis2.AxisFault: Timeout waiting for connection
- Axis2 Exception: org.apache.axis2.AxisFault: Timeout waiting for connection Solution
- org.apache.commons.httpclient.ConnectionPoolTimeoutException: Timeout waiting for connection异常解决方案
- org.apache.tomcat.dbcp.dbcp.SQLNestedException: Cannot get a connection, pool error Timeout waiting
- apache配置中的Timeout和KeepAliveTimeout的解释(未完待续)
- org.apache.tomcat.dbcp.dbcp.SQLNestedException: Cannot get a connection, pool error Timeout waiting
- org.apache.commons.dbcp.SQLNestedException: Cannot get a connection, pool exhausted和java.util.NoSuchElementException: Timeout wa
- org.apache.tomcat.dbcp.dbcp.SQLNestedException: Cannot get a connection, pool error Timeout waiting for idle object异常原因
- apache benchmark(ab)对Nodejs服压测POST请求时出现: apr_poll: The timeout specified has expired (70007) 问题的解决办法
- 绿色版MySQL5.6配置
- 转一大一孩子的c++实现的flappy bird(应用sdl库)
- Yii框架开发商城(三)
- RAD Studio 2010/XE/XE2/XE3/XE4/XE5官网下载
- 获取spring容器的方法
- Apache Timeout
- Pascal's Triangle
- PostgreSQL special sql 1 - list all the columns and primary key
- vc 线程创建关闭
- Maximum Subarray
- Web Service通过service.xml发布时抛出异常
- Remove Element
- 使用web.xml方式加载Spring时,获取Spring context的两种方式
- VoLTE, SIP/MSRP