美文网首页.Net性能调优
.Net性能调优——网络、I/O

.Net性能调优——网络、I/O

作者: SkylerSkr | 来源:发表于2019-02-02 21:37 被阅读0次

    前言

    在我们的经验中,有相当一部分的性能问题并不是由于未经优化的算法和大量的CPU占用造成的,而是由低效的I/O设备的使用造成的。
    1.应用程序由于低效的I/O操作造成大量的CPU开销
    2.进行大量小规模I/O传输,将降低I/O设备的使用率并造成资源浪费
    阅读本文,你将知道:
    1.I/O设备如何做异步的
    2.同步I/O导致的问题
    3..Net线程池有哪些部分组成,如何处理I/O
    4.有哪些高效利用网络容量并降低网络延迟的优化手段

    I/O设备如何做异步的

    几乎所有的现在硬件都天生异步的,不需要在传输时进行数据轮询,也不需要判断I/O何时结束。大多数硬件都依赖内存访问控制器,在没有CPU参与的情况下,在设备和计算机内存间进行数据传输。
    同步操作仅存于Windows应用层,而其内部实质是异步的。

    同步I/O导致的问题

    在同步I/O中,I/O传递函数在I/O操作完成前均保持堵塞状态。这并不高效,设备在连续的I/O访问的间隙有可能处于空闲状态,设备利用率可能较低。

    .Net线程池有哪些部分组成,如何处理I/O

    .Net线程池具备多种用途,不同的用途使用不同类型的线程
    1.工作线程
    2.I/O完成线程,用于处理全局的IOCP操作
    3.等待线程
    4.计时器线程,用于合并多个计时器的等待操作
    5.门线程,用于监视线程池中线程的CPU使用情况,并根据限定值增加或减少线程的数量,以达到最佳的性能。

    有哪些高效利用网络容量并降低网络延迟的优化手段
    应用层网络协议(第七层)的实现方式可以极大的影响性能,有以下这些优化手段:
    1.流水线。对于没有流水线的协议,客户端向服务器发送请求后,必须等待服务器返回响应才能发送下一个请求。因此,网络容量并没有得到有效利用,因为网络在往返时延中处于空闲状态。流水线可以在服务器返回先前的响应之前发送更多的请求。更有优势的时,可以对请求顺序重排,先处理快速响应的请求。
    2.流传输
    在流传输的支持下,应用程序可以在数据传输结束之前将其发送到网络上。例如视频,直播平台。
    3.消息分块
    每次传输少量的数据是对网络资源的浪费。这是因为以太网、IP和TCP/UDP的头部信息都不小,将网络容量大量消耗在头部信息上是非常大的浪费。若协议可以将多个请求进行合并,则可以减缓这种消耗。例如,DNS服务允许客户一次性解析多个域名。
    4.聊天式协议
    有时候,后一个请求是依赖前一个请求的响应的。例如,访问网页时,要先下载HTML,JS,CSS和图片等等。
    为了降低其影响,服务器可以提示客户端需要获得哪些URL,以便进行页面渲染。甚至,可以在客户端未请求的情况下发送所需的内容。

    相关文章

      网友评论

        本文标题:.Net性能调优——网络、I/O

        本文链接:https://www.haomeiwen.com/subject/hfresqtx.html