以自己应用的网络环境和业务发杂度自己斟酌就行了,没有一个固定的标准,HttpClient默认超时是60秒,其实一般应用设置在10秒内是没问题的。
设置过长带来什么影响还望下面的高人,我也想知道。
######
在客户端访问浏览器的时候,有时候可能会因为某种原因导致访问堵塞,如果不设置超时的话就会变成资源浪费甚至服务器挂起,
比如说我要看我的数据库内有多少条记录,在你访问服务器 有服务器再去访问数据库,当访问数据库的时候要是卡住了,如果不设置超时,服务器就会一直将线程保持,然后一条条线程堆积下来,对应的资源也一直被这些卡住的线程持有,不得释放。最后的结果可想而知
######服务器监听某端口,当客户端连上来,服务器处理客户端的请求,将结果响应给客户端,然后这个连接就该断了,这个断开的动作由谁来做,一般是客户端(原因可能是由于网络传输延时是不确定的,服务器端来断开无法保证在客户端收完数据之后才收到断开连接的请求,也可能是http协议里没有规定每次http请求必须新开一个连接,为了节约资源或加快速度,客户端可能在一个连接上发送多个请求,这时服务器无法知道客户端是否还有下一个请求,所以客户端
来断开比较合理),于是问题就来了,万一客户端没做断开连接的动作,则服务器就一直保持此连接,当有问题的客户端或恶意攻击的程序发送大量请求,服务器很快就耗尽资源,于是服务器为了保护自己,也设置了一
个读超时时间,当响应发出之后,客户端如果不断开此连接,则在此连接上一定时间时内没有收到数据服务器就主动断开,这个时间如果太长就和没设一样了。
######
@cys1357 回复
@cys1357 : 恩######回复
@554330833a :我理解错了,你说的是tomcat中的http连接器的 connectionTimeout属性,这个确实如你你所说,当处理请求的的线程耗时超过这个设置设的时间会被结束,所以出现无响应,可以参考下文http://blog.sina.com.cn/s/blog_64a52f2a0101g3sq.html######
@cys1357 回复
@cys1357 : 所以可以设置嘛,防止住了导致积累了多个线程没有释放,connectionTimeout="2000000"######回复
@554330833a : 服务器的响应时间不是设的,是请求的网络传输时间+请求处理时间+响应的网络传输时间######
@cys1357 回复
@cys1357 : 那就是这个意思啊,所以服务器设置的时间比客户端长