在专用数据库服务器上,要为操作系统保留多少内存?


38

假设您有专门用于数据库功能的专用服务器- 您应该为操作系统保留多少内存?

我意识到这可能会有所不同,具体取决于特定的OS,特定的数据库软件等。但是,由于内存对数据库性能非常重要,因此我希望数据库具有最大合理的内存级别,而又不会使主机OS饿死。

所以

  • 首先有什么好的经验法则?
  • 我们应该查看哪些计数器或性能指标来确定我们是否走得太远并且数据库是否因某种原因使主机操作系统处于饥饿状态?

你们曾经调整过这些设置吗?您的个人资料告诉了您什么?
jcolebrand

@jcole目前没有要添加的内容;我们通常会预留4 - 6 GB的是一点点比较保守的,比我想的OS
杰夫·阿特伍德

Answers:


30

假设Windows和SQL Server ...

有两种思想流派。

  1. 为Windows保留2-4 Gigs(取决于除SQL Server之外还安装了什么)。
  2. 保留10%的可用内存。当您获得超过64 Gigs时,这将成为疯狂的大量内存,留给OS,这可能是不需要的。

我个人是第一组的。Windows通常只需要2-4个演出,有时最多需要6个演出。


2
同意2 GB的RAM用于操作系统。
jcolebrand

我也同意。我通常为操作系统留出2GB的空间,并确保连续的页面文件空间。当然,您的里程可能会有所不同,最好的选择是配置设置,监视性能并根据需要进行谨慎的更改。
Matt M

2
@matt是正确的,但是在查看“我是否使操作系统内存不足时,最好监视什么?”
杰夫·阿特伍德

1
@Jeff我的评论并不像应有的那样精确。对于内存,我通常查看以下性能计数器:内存:页数/秒和内存:可用字节。请查看这些页面以获取更多信息: sql-server-performance.com/articles/audit/…technet.microsoft.com/en-us/library/cc966540.aspx(特别是“内存瓶颈”部分)
Matt M

6
@Jeff Denny的答案是正确的,对于Perfmon计数器,请注意“内存:可用字节”。如果它降到了例如512MB以下,则您有饿死操作系统的危险。然而,也知道在64位系统中,仍然显示为可用的文件缓存的,即使它不是:blogs.msdn.com/b/ntdebugging/archive/2007/11/27/...
布伦特奥扎尔

16

假设使用Linux,如果您关闭交换功能并且内核由于内存不足而继续杀死您的DB进程,则这很好地表明您正在使OS缺少内存。退缩直到停止发生。几百兆通常足够。


配置文件配置文件配置文件+
1〜

1
但是,@ jcolebrand也知道它是@jeff,您会知道他没有说,这意味着他有意将其开放给所有平台和数据库。
xenoterracide 2011年

2
而且,仍然知道它是@jeff ...为什么他不应该学会停止担心并热爱Linux?;-)
于尔根A.艾哈德

8

您可以在这里利用Amazon在运行数千个客户的数据库服务器上的经验:在Amazon Relational Database Service上,他们将MySQL的innodb缓冲池设置为系统内存的3/4,而不管它有多少内存。每个连接最多添加几个兆,以用于各种查询缓冲区,它们可能会将10-20%的内存留给操作系统。


5

您应该阅读布伦特·奥扎(Brent Ozar)的记忆。对于为什么您应该查看内存以及为什么更多的内存等于更好的性能,他有一些相当标准的答案。一般来说,为操作系统保留4 GB或10%的空间。

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.