news 2026/6/23 1:36:58

【压测数据分享】C#的 `ThreadPool.SetMaxThreads()` 配置最大线程数到底对性能有多大影响

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
【压测数据分享】C#的 `ThreadPool.SetMaxThreads()` 配置最大线程数到底对性能有多大影响

结论

先说结论:

以 async 的方法 + kestrel 库来提供 http 服务,性能非常强悍。直观感受上,性能不输 golang.

物理线程的数量必然影响性能:

ThreadPool.SetMinThreads( 4,4) ThreadPool.SetMaxThreads(4,4) 线程池的线程数与核数一致时,性能最好。(CPU 占用达到 360%)

不限制线程池的最大和最小线程数,性能下降约 1.37%。猜测在任务更复杂的情况下,下降的比例会更明显。(CPU 占用达到 360%)

ThreadPool.SetMinThreads( 2,2) ThreadPool.SetMaxThreads(2,2) 当线程池最大值只有核数的一半时,性能下降 51.07% (CPU 占用达到 215%)

程序中宜限制线程池最大线程数不要超过核数,否则一定产生劣化影响。

从稳定性考虑:线程池最大值 = 核数 - 1 是个好主意。

某些特定任务可以开额外的线程来运行

负责处理请求的线程数稳定,不至于在过载的时候完全卡死整个应用。

最重要的:kestrel 的处理路径上完全 async,没有阻塞!

实验方法

使用 DotNet 的 Kestrel 库开发一个 http 1.1 的 echo 服务器(请求后,把请求头作为输出)

使用了自定义的 metrics 统计方式

往 stdout 输出了 json 格式的请求流水日志

编译为 linux 下的二进制程序

编译参数如下:

dotnet publish $(PROJECT) -c Release -r linux-x64 -p:PublishAot=true --self-contained true -o $(PUBLISH_DIR)

在基础镜像 mcr.microsoft.com/dotnet/aspnet:8.0 中运行

docker 运行时绑定到固定的 cpu 上:

使用 4 个 cpu 核

docker run \

-d \

--name=kestrel_exp_0 \

--rm \

--cpuset-cpus="8,9,10,11" \

-m 1G \

-p 8081:8081 \

kestrel-server:latest \

/app/KestrelServer -addr=0.0.0.0:8081 -threadpool.min=4 -threadpool.max=4

关键实验代码如下:

if (minThreads > 0)

{

ThreadPool.SetMinThreads(minThreads, minThreads);

}

if (maxThreads > 0)

{

ThreadPool.SetMaxThreads(maxThreads, maxThreads);

}

实验数据:

qps CPU

Threadpool.MaxThread = 核数 88594.4 / core / s 360%

Threadpool.MaxThread 不限制 87164.7 / core / s 360%

Threadpool.MaxThread = 核数 / 2 58645.8 / core / s 215.70%

Threadpool.MaxThread = 核数 * 2 81888.8 / core / s 315%

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/6/21 18:23:59

LobeChat是否支持Service Worker?离线访问能力构建

LobeChat 与离线能力:Service Worker 的实践路径 在移动设备普及、网络环境复杂多变的今天,用户对 Web 应用的期待早已超越“能打开”这一基本要求。他们希望应用加载迅速、响应及时,即便在地铁隧道或电梯间这类弱网甚至断网场景下&#xff0…

作者头像 李华
网站建设 2026/6/21 5:54:56

重学计算机基础013:减法运算的底层逻辑——为什么没有“减法器”?

上一章我们拆解了加法运算的完整链路,知道高级语言里的“”号最终会落地为全加器的晶体管通断动作。但随之而来的是一个更有意思的疑问:既然有加法就必然有减法(比如a - b),为什么计算机硬件里从来没有“减法器”这个部…

作者头像 李华
网站建设 2026/6/23 14:05:21

apk pure安全性争议下,本地大模型成新趋势

apk pure安全性争议下,本地大模型成新趋势 在智能应用生态快速扩张的今天,一个不容忽视的问题正日益凸显:用户数据到底去了哪里?当我们在第三方安卓市场如APK Pure下载一款“AI助手”类应用时,看似便捷的服务背后&…

作者头像 李华
网站建设 2026/6/23 15:44:59

LobeChat能否支持NFT头像展示?个性化形象设定

LobeChat 与 NFT 头像:如何为 AI 聊天界面注入数字身份灵魂? 在今天的数字世界里,用户不再满足于“匿名对话”或千篇一律的默认头像。随着 Web3 概念深入人心,越来越多的人开始用 NFT 来表达自己的数字身份——一张 CryptoPunk 是…

作者头像 李华
网站建设 2026/6/23 15:45:43

LobeChat + Kubernetes:大规模部署AI前端界面的可行路径

LobeChat Kubernetes:大规模部署AI前端界面的可行路径 在企业加速拥抱大模型的今天,一个普遍却容易被忽视的问题浮出水面:我们有了强大的AI引擎,但用户“看得见、摸得着”的入口却依然粗糙。 命令行交互对普通员工不友好&#xf…

作者头像 李华
网站建设 2026/6/23 15:45:42

20万以内家用新能源SUV怎么选?纯电动车型主动安全系统深度对比

在 20 万元以内的纯电 SUV 市场中,家庭用户在选择车型时,关注点不仅仅是价格和续航,还包括主动安全系统性能、空间布局、驾驶便利性以及乘坐舒适度。主动刹车、车道保持、车道偏离预警以及自动紧急制动(AEB)在城市通勤…

作者头像 李华