MSSQL-Server 2017 Express Edition 在我的 Linux 服务器上运行。
服务器有4GB RAM。
DB 的总大小为300MB。
我的网站和 sqlserver 在同一台服务器上,这是一个小型网站,每天最多有 400-300 名访问者。linux 中的内存使用看起来不错,mssql 只占用 20% 的内存:
最大服务器内存设置为2147483647
我猜的默认值。
我得到的错误:
重新启动 mssql-service 后 2 天没有问题,然后它会自我重复。
我很乐意得到一个可以为我解决这个问题的答案,但我也想获得一个资源,我可以在其中了解与 sql server 相关的内存分配/缓存/页面/,因为我不是 sql 专家,我是程序员.
您正在显示一些相互矛盾的信息。4 GB 服务器上 20% 的内存利用率约为 820 MB,但是,您的屏幕截图表明 SQL Server 目前消耗了 3.8 到 4 GB 之间的某个位置。
这些错误清楚地表明 SQL Server 没有足够的内存来处理请求。虽然您可以并且应该将最大服务器内存设置设置为 2147483647 以外的值,但这不会改变 SQL Server 需要额外内存的事实。
您需要考虑优化服务器和工作负载,对实例应用最佳实践以确保它以最佳方式运行,调整您的 SQL 代码以确保它没有使用过多的内存,并且您可能需要为服务器分配额外的内存.
这是因为 SQL Server 在重新启动时会刷新其所有缓存,并且考虑到您指出的低利用率,它需要一段时间才能再次填满。将最大服务器内存设置设置为 2 到 3 GB 应该有助于缓解其中一些错误,因为 SQL Server 管理内存的方式与将设置配置为简单地消耗尽可能多的内存不同,但是,您最终可能会遇到这些错误再次因为 4 GB 对于 Web & SQL Server 非常低。