zoukankan      html  css  js  c++  java
  • 静态化HttpClient

    实现方法:

    public class HttpClientHelper
        {
            private static HttpClient _client;
    
            public static HttpClient GetClient()
            {
                try
                {
                    if (_client == null)
                    {
                        _client = new HttpClient();
                        _client.DefaultRequestHeaders.Connection.Add("keep-alive");
                        return _client;
                    }
                    return _client;
                }
                catch (Exception)
                {
                    return new HttpClient();
                    //throw;
                }
            }
        }

    调用:

    var http = HttpClientHelper.GetClient();

    替换掉:

    using (var http = new HttpClient())

    原因:

    大量请求发出会占用服务器端口,当服务器端口被耗尽一般情况下代码会报错,提示:通常每个套接字地址(协议/网络地址/端口)只允许使用一次

    其他:

    增大服务器端口数量方法:

    修改注册表:

     1、增加动态分配到客户端 TCP/IP 套接字连接的临时端口的上限

    HKEY_LOCAL_MACHINESYSTEMCurrentControlSetServicesTcpipParameters

    在“编辑”菜单中单击“新建”、“DWORD 值”,然后添加以下注册表值

    值名称:MaxUserPort

    值数据:<在此输入一个 5000 到 65534 之间的十进制值>

    2:降低客户端 TCP/IP 套接字连接的超时值(默认值为 240 秒)

    HKEY_LOCAL_MACHINESYSTEMCurrentControlSetServicesTcpipParameters

    在“编辑”菜单中单击“新建”、“DWORD 值”,然后添加以下注册表值

    值名称:TcpTimedWaitDelay

    值数据:<在此输入一个 30 到 240 之间的十进制值。>

    网商有人说修改完后需要重启服务器,有的说不需要。本人windows2012公网亲测,不需要重启。

     端口利用查询方法:

    cmd  netstat -an

    CloseWait  标识的端口标识在占用中,如果有大量这种标识的端口,表示有大量请求堆积(另外一种方法:可以在iis的工作进程查看)。

    工作进程:

    进入工作进程,如果有大量请求堆积,会显示出来请求的信息(没有最好)

  • 相关阅读:
    最近比较忙
    堆栈的实现
    推荐一款开源优秀Javascript编辑器Aptana Studio
    OOJ面向对象编程的三大特点封装,继承,多态分析与实例
    ASP.NET设计模式之单体模式Singleton
    OOJ面向对象的JAVASCRIPT(一)
    【转】性能优化关于Asp.net性能的技巧
    性能优化关于JQuery的性能优化
    学习javascript的动态this指针与动态绑定 call与apply函数的应用
    OOJ面向对象的JAVASCRIPT(二)
  • 原文地址:https://www.cnblogs.com/fuyujian/p/5546561.html
Copyright © 2011-2022 走看看