docker容器资源限制
使用docker-compose管理容器
所以yml文件配置可以 增加
deploy:
resources:
limits:
cpus: "8"
memory: 4096M
reservations:
cpus: "0.05"
memory: 500M
- limits=> cpus: “8” //cpu利用率最大限制:建议设置成实际cpu核数的一半以上,如果单核时,设置0.5即可
- limits=> memory: “4096M” // 内存分配最大限制:按实际应用分配
dotnet程序线程限制
#应用编译目录下文件设置:xxx.runtimeconfig.json
{
"runtimeOptions": {
"tfm": "net5.0",
"framework": {
"name": "Microsoft.AspNetCore.App",
"version": "5.0.0"
},
"configProperties": {
"System.Threading.ThreadPool.MinThreads": 8
}
}
}
configProperties=>最小线程数:因为使用了容器,不便修改此文件 ,考虑到服务器一般是8核心上,默认写上8核。
对性能的影响
1.通过容器启动时:由于对yml文件中的配置,limits理解错误,设置了0.5,以为是cpu利用率的50%,没发现是针对单核需要这样设置,导致dotnet后台程序线程数多了后,redis的一个使用场景经常报timeout;
2.本地调试时:不会报redis的timeout,也就是线程数可用,资源可用
- 如此描述:https://stackexchange.github.io/StackExchange.Redis/Timeouts