none
频繁的网络请求错误,造成网络堵塞? RRS feed

  • 问题

  • 大家好,情况是这样的:


    【服务器A】跑的是Asp.Net开发的Web Api程序,主要用于接收客户端提交的数据,这个客户端提交的数据量比较大,【服务器A】1分钟可以接收1万条左右的提交数据,并发连接在4万上下,吞吐量每秒300个请求。


    【服务器A】在接收到数据后,会将数据经过一定的处理后,转发到【服务器B】和【服务器C】,【服务器B】和【服务器C】同样采用Web Api的方式接收【服务器A】提交的数据。


    一切都正常运行,直到上个星期,【服务器A】挂了:
    1.无法远程连接到【服务器A】。
    2.【服务器A】的Web Api报503错误。
    3.打开【服务器A】物理机,发现IIS并发量达到9.9万,吞吐量每秒0个请求,CPU在5%左右,内存也占用不多(60%)。
    4.【服务器A】无法上网(例如百度)。


    也就是说:【服务器A】网络堵死了!


    经过多次测试终于发现问题:原因是【服务器B】或【服务器C】其中有一台瘫痪,就会导致【服务器A】发送数据给【服务器B/C】时失败,失败大概会在30秒左右才能体现出来,也就是说【服务器A】发送HTTP请求后30秒才得知失败,从而导致:
    1.IIS直接卡死,在性能检测器中看到并发连接已经9.9万。
    2.网络堵塞,例如【服务器A】无法打开百度,我们也无法访问【服务器A】的Web Api,无法远程连接【服务器A】。


    大概总结出来:由于【服务器A】频繁的网络请求错误,导致网络堵塞?


    具体原因是什么,还请大神帮我看看,该怎么解决?
    2018年7月5日 4:11

全部回复

  • 你好,

    根据你的描述我觉得你的服务器A的反应是正常的。

    因为正常而言,我的默认http request的execution timeout就是30秒,也就是说在这30秒内,我这边是会等待response的。

    然而这边请求很多,所以很多请求都在等待,到最后就是503service unavailable错误。

    其实根本原因是服务器B或者C里面的服务器瘫痪的问题,所以我建议你可以做一个服务器集群。

    然后把瘫痪的服务器撤下去,修复了再进行使用,这样才是根本的解决办法。

    另外如果你不想让服务器A等待30秒,你可以修改execution timeout。

    如何修改你可以参照如下文章

    https://blog.csdn.net/kwmxw/article/details/2739629


    MSDN Community Support
    Please remember to click "Mark as Answer" the responses that resolved your issue, and to click "Unmark as Answer" if not. This can be beneficial to other community members reading this thread. If you have any compliments or complaints to MSDN Support, feel free to contact MSDNFSF@microsoft.com.

    2018年7月10日 7:50
  • 您好,多谢您的回答,

    【服务器A】是我们公司的程序,【服务器B/C】是别人的服务器,我们公司的服务器并不想因为别人家的服务器瘫痪而受影响,

    集群做不了,资源就这么多,超时时间30秒我也改成5秒了,但还是偶尔会并发特别高,

    不知还有没有别的办法?

    2018年7月10日 8:12
  • 你好,

    这个其实并没有什么好的办法,因为请求多。

    如果你觉得并发高的话,其实就是你的服务器资源不够充足。这个其实在代码层面是没什么号的办法的。

    要么你就是去要求服务器B/C让他们做集群,或者直接就做好错误的回发,节省你们服务器的响应时间。


    MSDN Community Support
    Please remember to click "Mark as Answer" the responses that resolved your issue, and to click "Unmark as Answer" if not. This can be beneficial to other community members reading this thread. If you have any compliments or complaints to MSDN Support, feel free to contact MSDNFSF@microsoft.com.

    2018年7月18日 5:16
  • 把Web API 寄宿(host)到Windows Services或Console程序中试下,X64程序可以占用更多的内存和单一任务(处理API请求)


    专注于.NET ERP/CRM开发框架,C/S架构,SQL Server + ORM(LLBL Gen Pro) + Infragistics WinForms

    2018年7月19日 0:21