wordpress数据库导出工具/网站优化检测

wordpress数据库导出工具,网站优化检测,棕色网站,电子工程建设网引言:ASP.NET Core2.1 中出现了一个新的 HttpClientFactory 功能, 它有助于解决开发人员在使用 HttpClient 实例从其应用程序中访问外部 web 资源时可能遇到的一些常见问题。关于HttpClientFactory 到底解决了那些HttpClient的严重问题,下面是我罗列出来…

引言:

  ASP.NET Core2.1 中出现了一个新的 HttpClientFactory 功能, 它有助于解决开发人员在使用 HttpClient 实例从其应用程序中访问外部 web 资源时可能遇到的一些常见问题。关于HttpClientFactory 到底解决了那些HttpClient的严重问题,下面是我罗列出来的(原文来自于:https://www.infoq.com/news/2016/09/HttpClient)

  (1)在处理HttpClient对象的时候不会立即关闭socket。

  (2)太多的实例影响性能

  (3)单例的HttpClient或者共享HttpClient实例,不遵守DNS 生存时间 (TTL) 设置。(这个问题我也不太明白,具体怎么重现这个问题,我下去再研究研究。)

HttpClientFactory这个小可爱,解决了上面的所有问题,他也是ASP.NET Core2.1最新特点之一,下面详细聊聊HttpClient存在的这些问题。

 

一、HttpClient存在的问题

  由于设计错误、bug 和文档不正确等因素, 导致在.Net中正确使用HttpClient 出奇的难。因此, 在生产环境中看起来正常工作的应用程序可能会在负载大的情况下产生性能和运行时故障的问题。

  为了理解我们为什么遇到这种情况, 我们首先要看另一个面向连接的类: SqlConnection。 这个类实现了IDisposable接口,所以绝大多数开发人员都是这样写的,实例如下:

  using (var con = new SqlConnection(connectionString)) {
    
con.open();
    
//use the connection here
  } //this closes the connection  

虽然,这个例子在解释HttpClient存在的问题不是很到位,但是使用这种方式,来写上面的代码,是没错的。如果你尝试这把这种模式应用到实现了IDisposable接口的HttpClient,则会遇到一些很奇怪的问题。具体的说,它会打开比实际需要更多的socket,加重了服务器的负载。此外使用using语句是不会关闭这些套接字的,相反,在应用程序停止使用它们时,会关闭几分钟。 

Connection Pooling

回到 SqlConnection 示例中, 大多数面向连接的资源都是有连接池的。当您 "打开 " 数据库连接时, 它首先检查池中是否有可用的、未使用的连接。如果它找到一个, 将重用它, 而不是创建一个新的连接。

同样, 当您 "关闭 " SqlConnection 它只是将连接释放到链接池中。最终, 一个单独的进程可能会关闭长时间未使用的连接。

HttpClient 不这样做。当您处理它时, 它将启动关闭它所控制的套接字的过程。这意味着下次有请求时, 您必须经过一个全新的连接周期。如果您的网络有很高的延迟或您的连接是安全的, 则这会特别痛苦, 因为后者需要新一轮的 SSL/TLS 协商。 

Closing a Socket Takes Four Minutes 

如上所述,关闭套接字不是一个快速的过程。 当你“关闭”套接字时,你真正在做的是将它置于TIME_WAIT状态。 Windows将在此状态下保持连接240秒,以防万一剩余的数据包仍在传输中。

这使您更有可能耗尽可用套接字的数量,从而导致运行时错误,例如“无法连接到远程服务器.System.Net.Sockets.SocketException:每个套接字地址只有一种用法(协议/ 网络地址/端口通常是允许的“。

下面我们来实践一下,看看真相: 

示例演示:(注意使用的是.Net Core 1.0)

640?wx_fmt=png

这将会打开10个请求,并以get的方式,去请求博客园,我们只打印出状态码。

输出结果:

640?wx_fmt=png

到这个地步,可能我们就会很高兴,搞定!闪人!,真的搞定了吗?我的小可爱,下面我们使用netstat 工具并查看运行它的机器上的套接字状态,我们将看到:

640?wx_fmt=png

640?wx_fmt=jpeg

看到没,我的应用程序已经执行完了,但是,仍然有很多链接在打开上面图示中的主机,它们都处于TIME_WAIT状态,这意味这我们在应用程序这边已经把链接关闭了,但是我们仍然在等待查看,是否有额外的数据包进来,使用这些链接。因为它们可能在网络的某个地方已经被延迟,下面我们来看一张TCT/IP图,该图引自(https://www4.cs.fau.de/Projects/JX/Projects/TCP/tcpstate.html)

640?wx_fmt=png

 

Windows将在此状态下保持连接240秒(由[HKEY_LOCAL_MACHINE \ SYSTEM \ CurrentControlSet \ Services \ Tcpip \ Parameters \ TcpTimedWaitDelay]设置)。 Windows可以快速打开新套接字的速度有限,因此如果您耗尽连接池,那么您可能会看到如下错误:

Unable to connect to the remote server
System.Net.Sockets.SocketException: Only one usage of each socket address (protocol/network address/port) is normally permitted.

在谷歌搜索会给你一些关于减少连接超时的可怕建议。 事实上,当在服务器上运行着正确使用HttpClient或类似构造的应用程序时,减少超时可能会导致其他不利后果。 我们需要了解“正确”意味着什么,并去修复底层的问题而不是去修补机器级的变量。

如果我们共享一个HttpClient实例,那么我们可以通过重用它们来减少套接字的浪费:

640?wx_fmt=png

请注意,我们只为整个应用程序共享了一个HttpClient实例。 仍然可以正常工作(实际上由于套接字重用而快一点)。 Netstat现在只显示:

 640?wx_fmt=jpeg

好了,总结一下:在.Net Core 1.0之前的版本,使用的时候需要注意下面的两点:

(1)确保你的HttpClient 是 static

(2)不要丢弃或包装HttpClient 在一个using块中。

小弟我才疏学浅,有不对的地方可以指出来,共同探讨。其实,我们一直使用using把它包起来,也是没错的,是因为HttpClient实现了IDisposable ,但是HttpClient就比较特殊,这不怪我们,文档就是错误的。

 

二、HttpClientFactory in ASP.NET Core 2.1就解决了上面所有的问题

HttpClientFactory 这个小可爱,就解决了上面的所有问题,她也是ASP.NET Core 2.1中最新特点之一,有了她我们就不用关心如何创建HttpClient,又如何释放它。关于如何使用它,博客园中的有介绍的,我这里就不再讲述了。 

具体请参考:https://www.cnblogs.com/willick/p/9640589.html 

三、总结

到这里该系列文章的第一篇就讲完了,有不对的地方,还请大佬们能指出来,共同探讨,好了,希望对你有所帮助,该系列文章,每周末更新,爱看不看,哈哈哈~~~~~~ 

参考文章:

(翻译)https://www.infoq.com/news/2016/09/HttpClient

(翻译)https://aspnetmonsters.com/2016/08/2016-08-27-httpclientwrong/

原文地址:https://www.cnblogs.com/runningsmallguo/p/9649601.html


.NET社区新闻,深度好文,欢迎访问公众号文章汇总 http://www.csharpkit.com

640?wx_fmt=jpeg

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/319911.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

最大子矩阵(普通和01)

文章目录普通矩阵(单个矩阵值为任何数)最大子段和扩展到二维情况01矩阵(单个矩阵值为0或1)代码:普通矩阵(单个矩阵值为任何数) 例题:POJ 1074 求出其中最大的子矩阵 答案是&#x…

自动化流程开源框架BotSharp

BotSharp是一款为方便构建智能对话机器人平台而开发的开源框架,最大的特点是所有模型算法都是基于.NET Core开发实现,甚至最基本的Penn Treebank分词标准,都重新用C#实现了。在机器学习python占绝对优势的时代算是不可多得的项目。该项目涉及…

积极参与开源项目,促进.NET Core生态社区发展

今天早上在微信群里聊天聊到百度的SDK 已经支持.NET Core, 百度已经在3月份就支持了,想起当时还是我在他们的github上提的issue: https://github.com/Baidu-AIP/dotnet-sdk/issues/3。.NET Core生态社区的发展已经四年多时间,日趋完善&#x…

Service Fabric 与Ocelot 的集成

概要云应用程序通常都需要使用前端网关,为用户、设备或其他应用程序提供同一个入口点。 在 Service Fabric 中,网关可以是任意无状态服务(如 ASP.NET Core 应用程序) 。本文介绍了如何将Ocelot用作 Service Fabric 应用程序的网关…

图论复习——最短路

知识点 最短路径算法 最短路径树 每个点uuu的父亲为使uuu得到最短距离的前驱节点,若有多个,则取任意一个。 题目 CF449B Jzzhu and Cities Blog CF464E The Classic Problem Blog [XSY3888] 传送门 对每个点uuu,记d(u)d(u)d(u)表示uuu…

T-Dongle-S3开发笔记——创建工程

创建Hello world工程 打开命令面板 方法1:查看->命令面板 方法2:按F1 选择ESP-IDF:展示示例项目 创建helloworld 选择串口 选择芯片 至此可以编译下载运行了 运行后打印的信息显示flash只有2M。但是板子上电flash是W25Q32 4MB的吗 16M-bit

hdu 1576 A/B

文章目录题目:题解:代码:hdu 1576题目: 要求(A/B)%9973,但由于A很大,我们只给出n(nA%9973)(我们给定的A必能被B整除,且gcd(B,9973) 1)。 Input 数据的第一行是一个T,表示有T组数据。…

ASP.NET Core 中断请求了解一下(翻译)

本文所讲方式仅适用于托管在Kestrel Server中的应用。如果托管在IIS和IIS Express上时,ASP.NET Core Module(ANCM)并不会告诉ASP.NET Core在客户端断开连接时中止请求。但可喜的是,ANCM预计在.NET Core 2.2中会完善这一机制。1. 引言假设有一个耗时的Act…

.net core实践系列之短信服务-架构优化

前言通过前面的几篇文章,讲解了一个短信服务的架构设计与实现。然而初始方案并非100%完美的,我们仍可以对该架构做一些优化与调整。同时我也希望通过这篇文章与大家分享一下,我的架构设计理念。源码地址:https://github.com/SkyCh…

游戏 (博弈论)

https://blog.csdn.net/Mys_C_K/article/details/91443390

.NET Core中Object Pool的简单使用

前言复用,是一个重要的话题,也是我们日常开发中经常遇到的,不可避免的问题。举个最为简单,大家最为熟悉的例子,数据库连接池,就是复用数据库连接。那么复用的意义在那里呢?简单来说就是减少不必…

.Net Core应用框架Util介绍(三)

上篇.Net Core应用框架Util介绍(二)介绍了Util的开发环境,并让你把Demo运行起来。本文将介绍该Demo的前端Angular运行机制以及目录结构。目录结构在VS上打开Util Demo,会看见如下的目录结构。现代前端通常采用VS Code开发&#xf…

Ocelot简易教程(三)之主要特性及路由详解

作者:依乐祝原文地址:https://www.cnblogs.com/yilezhu/p/9664977.html上篇《Ocelot简易教程(二)之快速开始2》教大家如何快速跑起来一个ocelot实例项目,也只是简单的对Ocelot进行了配置,这篇文章会给大家详…

Poj 3070 Fibonacci

Time Limit: 1000MS Memory Limit: 65536K Total Submissions: 26063 Accepted: 17394文章目录Description题意:题解:代码:Poj 3070 FibonacciDescription In the Fibonacci integer sequence, F0 0, F1 1, and Fn Fn − 1 Fn − 2 for…

生成函数化简技巧

一些重要式子 ∑i0∞xi11−x\sum_{i0}^{\infty}x^i\frac{1}{1-x}∑i0∞​xi1−x1​ 推论: 11−ax∑i0∞aixi\frac{1}{1-ax}\sum_{i0}^{\infty}a^ix^i1−ax1​∑i0∞​aixi 11−xk∑i0∞xik\frac{1}{1-x^k}\sum_{i0}^{\infty}x^{ik}1−xk1​∑i0∞​xik 11−cxk∑i0∞…

.NET西安社区 [拥抱开源,又见 .NET] 活动简报

拥抱开源, 又见 .NET」随着 .NET Core的发布和开源,.NET又重新回到了人们的视野。除了开源、跨平台、高性能以及优秀的语言特性,越来越多的第三方开源库也出现在了Github上——包括ML.NET机器学习、Xamarin移动开发平台、基于Actor模型的分布式框架Orlea…

dotnet core高吞吐Http api服务组件FastHttpApi

简介是dotNet core下基于Beetlex实现的一个高度精简化和高吞吐的HTTP API服务开源组件,它并没有完全实现HTTP SERVER的所有功能,而是只实现了在APP和WEB中提供数据服务最常用两个指令GET/SET,满足在应用实现JSON,PROTOBUF和MSGPACK等基于HTTP…

ASP.NET Core 中的中间件

前言由于是第一次写博客,如果您看到此文章,希望大家抱着找错误、批判的心态来看。 sky!何为中间件?在 ASP.NET Framework 中应该都知道请求管道。可参考:浅谈 ASP.NET 的内部机制 系列,个人感觉超详细。题外话:说到请求管道,就想…

.NET Core中的性能测试工具BenchmarkDotnet

背景介绍之前一篇博客中,我们讲解.NET Core中的CSV解析库,在文章的最后,作者使用了性能基准测试工具BenchmarkDotNet测试了2个不同CSV解析库的性能,本篇我们来详细介绍一下BenchmarkDotNet。原文链接:https://dotnetco…

some useful tricks

异或题思考方向&#xff1a;01trie树&#xff0c;分治 2. 二分图最大匹配&#xff0c;最大独立集互相转换 3. Snow 4. Code 5. Code 6. Code 7. 题目 #include<iostream> #include<cstdio> using namespace std; const int N100010; int n,p,nxt[N],no[200]…