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的工作进程查看)。

    工作进程:

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

  • 相关阅读:
    透视投影矩阵的推导
    选择排序
    递归运动函数的实现
    插入排序
    基本光照模型
    顶点法向量从物体坐标系变换到世界坐标系
    Phong和BlinnPhong光照模型
    unity3d使用脚本保存屏幕截图
    【转】C++11常用特性的使用经验总结
    右手坐标系下LookAt视图矩阵的推导
  • 原文地址:https://www.cnblogs.com/fuyujian/p/5546561.html
Copyright © 2011-2022 走看看