sql-server - 优化 Docker 容器中的 SQL Server 性能
问题描述
我们遇到了dockerized SQL server 的启动非常慢(而且性能通常很差)的问题。有时需要 5 分钟以上才能启动一个新容器。
在 CI 构建期间,我们在 docker 中使用 SQL Server 进行集成测试,并且一切都在 Kubernetes 集群中运行。
我认为根本原因是 SQL 服务器检测到“裸机”CPU 并且不尊重它在资源受限的容器中运行的事实:
2020-09-22 13:41:39.90 Server SQL Server detected 12 sockets with 2 cores per socket and 2 logical processors per socket, 24 total logical processors; using 24 logical processors based on SQL Server licensing. This is an informational message; no user action is required
然而,这是不正确的。我们只允许一小部分 CPU(目前是 2.5 CPU)。我读到逻辑处理器的数量对工作线程的数量有影响。
我没有找到任何参数如何更改工作线程的数量或专用于 SQL 服务器的逻辑处理器的数量。我找到的唯一参数是内存(MSSQL_MEMORY_LIMIT_MB
)。我想为 CPU 做类似的事情。
有谁知道如何在资源有限的 Docker 中运行 SQL 服务器?假设最大 2 Gi 的 RAM 和 2 个 CPU(我们需要扩展我们的构建)?甚至可能吗?
感谢您的任何想法!
解决方案
推荐阅读
- ionic-framework - 离子科尔多瓦本地通知听起来不起作用
- python - 在 Python 中创建新列并根据条件和日期计算值
- python - 尝试使用 pyaudio 运行代码时出现错误
- context-free-grammar - 为正则表达式 r=(a+b)*aa(a+b)* 写一个 cfg
- snapshot - Flutter:未处理的异常:错误状态:DocumentSnapshotPlatform中不存在字段,无法正常工作
- php - 从 Eloquent 集合中删除不匹配的条件记录
- java - 在简单的多租户应用程序中将休眠从 5.3 降级到 4.3.10 时出现问题
- azure - 我们可以使用 sonarqube 使用 azure devops ci/cd 管道从 Terraform 扫描(基础设施即代码)IaC 吗?
- python - 将实时网络摄像头条码阅读器流式传输到 HTML 网页(GUI)
- java - 有没有办法在 Stream() 中使用 Stream()?