日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程语言 > asp.net >内容正文

asp.net

.NET 云原生技术使用调查

發布時間:2023/12/4 asp.net 40 豆豆
生活随笔 收集整理的這篇文章主要介紹了 .NET 云原生技术使用调查 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

.NET Core 3.0?即將發布RC,.NET Core 3.0默認更好的支持Docker資源限制,官方團隊也在努力讓.NET Core成為真正的容器運行時,使其在低內存環境中具有容器感知功能并高效運行。

GC堆限制

.NET Core減少了CoreCLR默認使用的內存,如G0代內存分配預算,以更好地與現代處理器緩存大小和緩存層次結構保持一致。

在新的創建的GC堆數量的策略里,GC保留了一個內存片段,每個堆最小是16M,在低內存限制的機器上也可以很好的運行。在多核CPU的機器上運行時,系統并沒有設置CPU的核數限制。例如,如果在48核計算機上設置160 MB內存限制,則不需要創建48個GC堆。也就是說如果設置160 MB限制,則只會創建10個GC堆。如果未設置CPU限制,應用程序可以利用計算機上的所有核心。

有了這樣的新策略,可以不需要啟用Docker環境下的.NET Core應用的工作站GC的工作負載。

支持Docker內存限制

Docker資源限制建立在cgroup之上,而cgroup是Linux的內核功能。從運行時的角度來看,我們需要定位cgroup原語。

設置cgroup限制時的.NET Core 3.0內存使用規則:

  • 默認GC堆大小:容器上cgroup內存限制的最大值20MB或最大值的75%

  • 每個GC堆的最小保留段大小16MB,這將減少在具有大量內核和小內存限制的計算機上創建的堆數

為了支持容器方案,添加了2個HardLimit配置:

  • GCHeapHardLimit - 指定GC堆的硬限制

  • GCHeapHardLimitPercent - 指定允許此進程使用的物理內存的百分比

如果同時指定了兩者,則首先檢查GCHeapHardLimit,并且只有在未指定GCHeapHardLimit時才檢查GCHeapHardLimitPercent。

如果兩者都未指定,但進程正在有內存限制的容器中運行,則默認是使用如下設置:

max(20mb,容器內存限制的75%)

如果指定了hardlimit配置,并且程序在有內存限制的容器中使用,GC堆的使用不會超過hardlimit限制,但總內存仍然受容器的內存限制。所以當我們統計內存消耗時,基于容器內存限制得出的數據。

舉例:

進程在設置了200MB限制的容器中運行,用戶還將GCHeapHardLimit配置為100MB。

如果把GC限制中100MB限制中的50MB用于GC,而容器限制中剩余的100MB用于其他用途,那么內存消耗即為(50+100)/200=75%。

GC將更積極地執行資源回收與釋放,因為GC堆越接近GCHeapHardLimit限制,就越能實現提供更多可用內存的目標,也越能使得應用程序可以繼續而又安全地運行。如果算法計算出的結果認為此時的GC效率低下,那么將避免持續執行完全阻塞的GC。

即使GC堆完全壓縮,GC依然會拋出一個OutOfMemoryException異常出來,這是因為所分配的堆大小超過了GCHeapHardLimit的限制。

由此可見,.NET Core 3.0的設計是要穩定運行于有資源限制的容器中。

支持DockerCPU限制

在CPU限制的情況下,Docker上設置的值將向上舍入為下一個整數值。此值是CoreCLR使用的最大有效CPU核數。

默認情況下,ASP.NET Core應用程序啟用了服務器GC(它不適用于控制臺應用程序),因為它可以實現高吞吐量并減少跨核心的爭用。當進程僅限于單個處理器時,運行時會自動切換到工作站GC。即使您明確指定使用服務器GC,工作站GC也將始終用于單核環境。

通過計算CPU繁忙時間,設置CPU限制,我們避免了線程池的各種推導性競爭:

  • 嘗試分配更多的線程以增加CPU繁忙時間

  • 嘗試分配更少的線程,因為添加更多的線程不會提高吞吐量


你應該會看到很多關于KubernetesDocker的消息,以至于你可能想知道哪個更好。事實上,沒有“更好”一說,因為它們所解決的問題是不一樣的。Docker就像飛機,而Kubernetes就像飛機場。就像你不可能說“我應該基于哪個去旅行——飛機或者飛機場?”,Docker和Kubernetes也是一樣的,你需要它們兩個。今天做一個調查。


相關文章:

  • 張善友:基于Kubernetes 構建.NET Core 技術中臺(附視頻回顧)

  • 面向 Kubernetes 編程: Kubernetes 是下一代操作系統

  • Kubernetes應用部署模型解析(部署篇)

  • Docker+ Kubernetes已成為云計算的主流(二十六)

  • .NET Core Run On Docker By Kubernetes 系列文章匯總


.NET社區新聞,深度好文,歡迎訪問公眾號文章匯總?http://www.csharpkit.com?

創作挑戰賽新人創作獎勵來咯,堅持創作打卡瓜分現金大獎

總結

以上是生活随笔為你收集整理的.NET 云原生技术使用调查的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。