ASP.NET Core Kernel gRPC服务在.NET不同版本部署中线程池切换下的性能差异如何?

摘要:分析基于ASP.NET Core Kernel的gRPC服务在不同.NET版本的不同部署方式的不同线程池下的性能表现 使用默认的 gRPC 项目模板创建,垃圾回收器类型为 ServerGC(Server garbage collection
分析基于ASP.NET Core Kernel的gRPC服务在不同.NET版本的不同部署方式的不同线程池下的性能表现 使用默认的 gRPC 项目模板创建,垃圾回收器类型为 ServerGC(Server garbage collection)。 使用 ghz 工具在不同的请求总数、连接数、并发数的参数下,进行压力测试,接口为 /greet.Greeter/SayHello。 ghz工具和gRPC服务都是在同一台电脑上运行。 操作系统:Windows 11 24H2 电脑硬件配置 主板:ASUS TUF-GAMING-B660M-PLUS-D4 处理器:Intel i7-12700K 内存条:Kingston Fury DDR4 3200MHz 64GB(32GBx2套条) 固态硬盘:Samsung SSD 980 PRO 2TB 由于 9 份实验数据篇幅较长,因此放在最后,先写分析和总结。 实验数据列表 .NET 6.0-Runtime-DefaultThreadPool .NET 8.0-Runtime-PortableThreadPool .NET 8.0-Runtime-WindowsThreadPool .NET 8.0-NativeAOT-PortableThreadPool .NET 8.0-NativeAOT-WindowsThreadPool .NET 9.0-Runtime-PortableThreadPool .NET 9.0-Runtime-WindowsThreadPool .NET 9.0-NativeAOT-PortableThreadPool .NET 9.0-NativeAOT-WindowsThreadPool PS:.NET 7.0 不是LTS,且生命周期已结束,因此不在本文的实验范围。 而 .NET 6.0 虽然生命周期也刚结束不久,但用户较多,因此纳入实验范围。 由于时间关系,本次实验仅在 Windows 平台进行,如各位看官需要 Linux 平台的实验数据,请留言,我将根据留言人数多少决定是否抽空继续实验。 需要注意的是,WindowsThreadPool 仅限于 Windows 平台。 免责声明 本文所有测试均基于当前特定环境、硬件、系统、网络等条件下所得,结果仅能代表在这些条件下的相对表现。 实验数据会存在不可避免的测试误差(包括但不限于系统负载、网络波动、工具采样、环境差异等)。在不同的环境、不同硬件上,性能数据可能会有较大差异。 本文结论仅供参考,不构成对任一产品或技术的绝对保证。实际生产环境中的选择应结合自身业务场景和更多实测数据来综合评估。
阅读全文