最近在做一个从某方获取数据的接口,在本地调试通的过程中也算顺利,可是布置到服务器上,超时非常频繁,一度怀疑是不是服务器网络有问题,阿里云的应该不至于呀,于似乎找到接口对接人员,询问有没有什么特殊的设置,后来实在也找不出什么原因,就抱着试一试的态度,度娘一下,碰到这种问题的还不少,超时超时超时如何解决,不一定全行 但是我使用过后 目前不在超时,方案如下:

对于GetResponse或GetRequestStream超时死掉的原因,可能是:

1.DefaultConnectionLimit是默认的2,而当前的Http的connection用完了,导致后续的GetResponse或GetRequestStream超时死掉

==>>
默认系统只支持同时存在2个http的connection

==>>
使用HttpWebRequest之后如果没有close,则会占用1个http的connection,所以如果超过2次使用
HttpWebRequest而没有close,那么就用完系统的http的connection,之后再去使用
HttpWebRequest,GetResponse就会死掉

解决办法:

办法1:

每次使用完HttpWebRequest,使用

1
2
req.Close();
req=null;
 

去关闭对应的http connection

最好对应的HttpWebResponse也要close:

1
2
resp.Close();
resp =null;
 

方法2:

修改DefaultConnectionLimit的值,改为足够大,比如:

1 System.Net.ServicePointManager.DefaultConnectionLimit =
200;
 

2.系统中Http相关的资源没有正确释放,导致后续GetResponse或GetRequestStream超时死掉

就像我此处遇到的,可能是之前调用http相关函数,没有正确完全释放资源,导致虽然DefaultConnectionLimit给了足够大,但是还是
会死掉,此时在http请求代码之前去做一次垃圾回收,则后续http的GetResponse或GetRequestStream就正常了,就不会超时
死掉了。

参考代码如下:

1
2
3
4
5
System.GC.Collect();
  
req =
(HttpWebRequest)WebRequest.Create(constSkydriveUrl);
setCommonHttpReqPara(ref
req);
resp = (HttpWebResponse)req.GetResponse();
 

3.Http的GET请求时,不要手动设置ContentLength的值

即Http的GET请求,不要添加类似如下的代码:

1
2
if(m_contentLength >
0)
    httpWebRequest.ContentLength
= m_contentLength;
 

不要去手动修改对应的ContentLength的值,C#的http相关库函数,会自动帮你计算的。

注:POST方法中,的确是要手动填充数据和算出数据大小,然后手动给ContentLength赋值的。

4.其他可能的一些原因

(1)关于KeepAlive的问题

如果Http的请求,是设置了KeepAlive=true的话,那么对应的http的connection会和服务器保持连接的。

所以如果上述办法都不能解决超时的问题,可以尝试将keepAlive设置为false试试,看看能否解决。

(2)关于Sleep

有些人好像是通过在http请求前,加了对应的Sleep,结果解决了此问题。需要的人,也可以试试。

(3)HttpWebRequest的Timeout

一般来说,既然超时了,往往是由于错误使用函数或者网络有问题导致的,所以实际上此处对于有些人去把HttpWebRequest的Timeout的值改的更大,往往都是没用的。

只不过,万一是由于网络响应慢而导致超时,那么倒是可以尝试,将HttpWebRequest的Timeout的值改为更大。

(其中HttpWebRequest的Timeout默认的值是100,000 milliseconds ==100
seconds)

参考代码:

1 req.Timeout = 5 * 60 * 1000;// 5
minutes

转载的地址http://www.sufeinet.com/thread-11652-1-1.html  多谢楼主

后来在翻翻自己的博客 原来好早之前自己已经用这个方法解决过 唉 太久没有用这东西 就容易忘记。

用技巧] Http请求偶尔超时+总结各种超时死掉的可能和相应的解决办法相关推荐

  1. C# Http请求偶尔超时+总结各种超时死掉的可能和相应的解决办法

    [问题] 用C#模拟网页登陆,其中去请求几个页面,会发起对应的http的请求request,其中keepAlive设置为true,提交请求后,然后会有对应的response: resp = (Http ...

  2. afn访问本地html,请求接口AFN报错1016,failed:unacceptablecontent-type:text/html解决办法...

    通常导致这种情况,是因为你和后台请求或者返回参数返回格式不一致导致.比如,后台要求你请求的头和请求体格式都为Json格式,但是后台返回给你的header格式为text/html格式. 返回错误信息如图 ...

  3. Spring拦截器获取request请求体中的json数据,并转换成Java对象的解决办法

    1.要被拦截的Controller接口 我们需要一个更新用户信息接口,请求方式为POST,参数类型为对象类型(UserInfo),代码如下: @Resource private UserService ...

  4. python2.7web代码用python3.6运行时,浏览器发送请求报错TypeError: Object of type 'bytes' is not JSON serializable的解决办法

    浏览器的Cookie由Python 2代码设置.Python 3将cookie内容解释为字节字符串.只要清除浏览器cookie就好了.

  5. HTTP请求偶尔失败(21秒后超时) - 问题排查

    目录 背景 架构及请求模式 专线网络变更 排查分析 问题1:请求后,立刻就会响应,但无reponse 问题2:请求后,21秒后打印日志,但无reponse 问题3:主机不可达(No route to ...

  6. c# http请求执行超时,解决办法(给某个方法设定超时时间)

    c# http请求执行超时,解决办法(给某个方法设定超时时间) 参考文章: (1)c# http请求执行超时,解决办法(给某个方法设定超时时间) (2)https://www.cnblogs.com/ ...

  7. nginx post请求超时_Nginx 的超时 timeout 配置详解

    本文介绍 Nginx 的 超时(timeout)配置.分享给大家,具体如下: Nginx 处理的每个请求均有相应的超时设置.如果做好这些超时时间的限定,判定超时后资源被释放,用来处理其他的请求,以此提 ...

  8. Ajax请求session超时解决办法

    Ajax请求session超时解决办法 问题描述 通过ajax发送请求,被后台过滤器或者拦截器拦截的时候,如果session超时,不会直接跳转到登录页面. 解决方案 在过滤器或者拦截器中设置respo ...

  9. <转载>主机ping虚拟机ip请求超时解决办法

    虚拟机ping主机可以通,但主机ping虚拟机就请求超时 解决办法 打开电脑的设置,找到网络 VMware Network Adapter VMnet1和 VMware Network Adapter ...

最新文章

  1. filter,map,reduce,apply函数
  2. Nginx源码分析-内存池
  3. Android Cursor类的概念和用法
  4. 监控最佳实践--redis及业务接口
  5. python 下载图片到内存卡_python - 获取图像大小而不将图像加载到内存中
  6. 编程语言分类 -- 强类型与弱类型、动态类型与静态类型
  7. wps怎么投递简历发到boss直聘_BOSS直聘角逐招聘季:装机量、下载增量、增长率三料冠军...
  8. 南方周末:阿里巴巴的大数据梦
  9. 读贾志鹏线性筛有感 (莫比乌斯函数的应用)
  10. net执行oracle的存储过程
  11. vue-style,vue-style-scoped
  12. SQL Server Storage
  13. 12864与24C04的原理和使用方法——以电子密码锁为例(上篇)
  14. SAP中物料质检视图中检验设置和QM采购的应用区别
  15. 矩阵特征值的求解例子
  16. 【NOIP2015】洛谷2668 斗地主
  17. Material Design 之Style(三)
  18. 微信扫码---进入小程序指定页面(传参)
  19. 阿里巴巴离职DBA_35岁总结的职业生涯
  20. missing ios distribution signing identity xxx, xcode can request one for you

热门文章

  1. bootsect.s 解读——Linux-0.11 剖析笔记(二)
  2. 漫谈程序员系列:伤心小箭,你中了几枝
  3. css合格证,2016年汽车修理厂进出厂登记、检验、竣工出厂合格证管理制度.doc
  4. 2022年龙岩市高新技术企业奖励补贴,高企网上申报流程是什么?
  5. 信息学奥赛一本通1244 和为给定数
  6. MySQL鲜为人知的排序方式
  7. codeforces B. Calendar 解题报告
  8. 仿腾讯手机管家火箭发射案例
  9. android studio 内部存储(将数据储存到文件中)
  10. Scala之case class