net core响应时间超时的配置(netcore 开启内存释放)

技术.NET Core 配置对GC工作模式与内存的影响是什么这篇文章将为大家详细讲解有关.NET Core 配置对GC工作模式与内存的影响是什么,文章内容质量较高,因此小编分享给大家做个参考,希望大家阅读完这篇文章后对相

本文将详细解释。NET核心配置对垃圾收集工作模式和内存。这篇文章的内容质量很高,所以边肖会分享给大家参考。希望你看完这篇文章后有所了解。

00-1010默认情况下,ASP.NET Core程序在K8s的Docker中运行,内存利用率=600MB,这导致Docker容器频繁重启。设定组态系统的实验。ASP.NET核心项目服务器为假,内存小于=150MB的讨论和做。

主要说说什么是系统。服务器和两种垃圾收集模式。

引出问题: Asp.net core应用在 Kubernetes上内存使用率过高问题分析

复制

服务器GC/工作站GC

对GC工作模式的分类: .NET Core 两种GC模式:

主要用于多处理器系统,是ASP.NET Core主机的默认配置。它为每个处理器创建一个垃圾收集堆,并并行执行回收操作。这种模式的GC可以最大化吞吐量和更好的收缩。这种模式的特点是初始分配的内存大,内存没有尽可能回收,回收和整理内存需要很长时间。

00-1010主要用于单处理器系统,Workstation GC可以通过尽可能减少垃圾收集时程序暂停的次数来提高性能。具有低负载和不频繁后台任务(如服务)的应用程序可以在禁用并发垃圾收集的情况下使用工作站垃圾收集。特点是频繁回收,防止较长时间的回收。

Server GC :

是GC的一种工作模式。如果您是单处理器机器,即使“并发”选项配置为“真”,它也不会生效。服务器垃圾回收和工作站垃圾回收都可以打开并发垃圾回收,在垃圾回收过程中,用户线程可以大部分时间并发运行。但只能影响第二代对象的GC进程,因为0代和1代的时间太短。

00-1010 ASP.NET核心项目,GC模式由系统设置。GC.Server配置,创建项目的默认GC模式为: system.gc.server3360 true(服务器GC并发模式),为每个CPU分配GC;System.gc.server: false(工作站gc并发模式),Concurrent=1。

Workstation GC :

GC堆存储0、1、2代对象时,对系统应用的基本单位是Segment,系统会分配指定值的Segment来存储对象。GC将根据程序的实际执行情况动态调整这些值。因为有了Segment的概念,内存碎片问题再次出现,所以GC会在垃圾收集过程中组织内存,减少内存碎片,提高内存利用率。

段的大小取决于系统是32位还是64位,以及它运行的垃圾收集器的类型。下表列出了系统在分配过程中使用的默认值:

Gc32位64位工作站gc16mb256mb服务器gc64mb4gb服务器Gc带4个逻辑CPU s32mb2gb服务器gc带8个逻辑CPU s16mb1gb段包含第二代对象,将尽可能申请内存,并使用多个段进行内存存储。

从垃圾收集释放的内存量受限于段的大小。但是,由于Segment是按动态大小分配的,因此在发布后会占用大量内存,从而导致内存利用率低。如前所述,为了解决这个问题,GC应该整理内存碎片并中断所有线程的处理。

p>

.NET Core GC的几种配置模式:

Concurrent & Workstation GC

    
  
  
  

Copy

<ServerGarbageCollection>false</ServerGarbageCollection>
<ConcurrentGarbageCollection>true</ConcurrentGarbageCollection>

特点:在吞吐量和相应速度上寻找平衡点, GC Heap数量为1,GC threads在分配空间的线程,GC线程优先权和工作线程具有相同的优先权,工作线程(非GC线程)会因为GC工作过程中短暂多次挂起。

Background & Workstation GC

    
  
  
  

Copy

<ServerGarbageCollection>false</ServerGarbageCollection>
<ConcurrentGarbageCollection>false</ConcurrentGarbageCollection>

特点:最大化吞吐量并优化gen2 GC性能, GC Heap数量为1,background GC线程与工作线程有相同优先级,但都低于前台GC线程 ,工作线程(非GC线程)会因为GC工作过程中短暂多次挂起,较并发性能更加(针对Gen2的)。

Concurrent & Server GC

    
  
  
  

Copy

<ServerGarbageCollection>true</ServerGarbageCollection>
<ConcurrentGarbageCollection>true</ConcurrentGarbageCollection>

特点:多处理器机器上使用多线程处理相同类型的请求以便最大化服务程序吞吐量, GC Heap数量为每处理器1个,每个处理器都有一个专职的GC线程,GC线程拥有最高线程的优先级,工作线程(非GC线程)会因为GC工作过程中会被挂起。

Background & Server GC

    
  
  
  

Copy

<ServerGarbageCollection>true</ServerGarbageCollection>
<ConcurrentGarbageCollection>false</ConcurrentGarbageCollection>

特点:在Concurrent & Server GC基础上优化gen2 GC性能, GC Heap数量为每处理器1个,每个处理器都有一个专职的GC background线程,background GC线程与工作线程有相同优先级,但都低于前台GC线程,工作线程(非GC线程)会因为GC工作过程中短暂多次挂起,较并发性能更加(针对Gen2的)
ephemeral generation的前台GC工作时会挂起其他所有线程。

关于.NET Core 配置对GC工作模式与内存的影响是什么就分享到这里了,希望

内容来源网络,如有侵权,联系删除,本文地址:https://www.230890.com/zhan/147383.html

(0)

相关推荐

  • C++怎么将线程看作全局​容器

    技术C++怎么将线程看作全局​容器本篇内容主要讲解“C++怎么将线程看作全局容器”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“C++怎么将线程看作全局容器”吧!CP.24:将

    攻略 2021年11月25日
  • TiDB用什么保证备份的一致性

    技术TiDB用什么保证备份的一致性TiDB用什么保证备份的一致性,针对这个问题,这篇文章详细介绍了相对应的分析和解答,希望可以帮助更多想解决这个问题的小伙伴找到更简单易行的方法。背景作为一名MySQL DBA,就应该了解

    攻略 2021年11月30日
  • 如何安装Redis、Redis启动参数

    技术如何安装Redis、Redis启动参数这篇文章主要介绍如何安装Redis、Redis启动参数,文中介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们一定要看完!  Redis是一个key-value存储系统。和Me

    攻略 2021年12月4日
  • q函数,数学Q

    技术q函数,数学Qlog表示对数。如果a^n = b(a>0,且a≠1),那么数n叫做以a为底b的对数,记做n=log(a)b,【a是下标】其中,a叫做“底数”,b叫做“真数”。一般地,函数y=logax(a>0,且a≠

    生活 2021年10月29日
  • 将来时态的5种句型,写出五个将来时和过去时的句子

    技术将来时态的5种句型,写出五个将来时和过去时的句子首先厘清时态的概念将来时态的5种句型,时和态是分开的。时,分为现在,过去,将来,过去将来。一共四个时。态,分为一般,进行,完成,完成进行。一共四个态。
    虚拟语气的本质就

    生活 2021年10月20日
  • 分库分表与NewSQL怎么选择

    技术分库分表与NewSQL怎么选择本篇内容主要讲解“分库分表与NewSQL怎么选择”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“分库分表与NewSQL怎么选择”吧!NewSQ

    攻略 2021年11月12日