我正在build立一个服务器与以下规格:
* 4个处理器(每个12核的AMD Opteron)
* 32 GB的内存
* 8 HDD(15K SAS双端口)
* CentOS 5.5
* JBoss
* PostgreSQL
很可能稍后我会将应用程序从数据库中分离出来,但是现在他们将会在同一台机器上。 我已经读过PostgreSQL的性能好处:
* RAID 10
*独立的OS分区
*单独的xlog分区
*单独的pgdata分区
由于我的单个RAID 10卷似乎总共有559808 MB可用,这是当前的分区计划:
*操作系统为337856 MB
* 102400 MB为pgdata
* xlog为51200 MB
*交换68352 MB
这里有一些问题:
*我的分区计划看起来如何?
*安装CentOS时,当我进入磁盘设置步骤时,我需要定义挂载点 – 我应该为pgdata分区input什么内容? (例如参考这个例子setup mount points / pgdata1 )
*我应该input什么作为xlog分区的挂载点?
*对于文件系统types,避免损坏比完美的性能更重要,因此计划是使用'noatime',但为分区挂载选项保留'data = ordered' – 您怎么看?
*任何其他的考虑?
注意:在未来几年,pgdata分区中所有数据库的总大小可能不会超过20GB。
好吧,让我们变得真实。 正在使用的数据库+应用程序服务器不应该交换。 现在,我明白“换掉不使用像内核的部分等东西”,但64GB的交换空间是荒谬的。 计算机可以以合理的速度以合理的方式使用它。 花太长的时间。 把它切下来 重大。 非常重要。 喜欢8GB左右。 也许12或16。但是,根本无法远程使用您当前分配的64GB。
您的服务器希望有很多计算明智,因为虽然不可悲,它不是一个高性能的数据库服务器。 坏消息。 真是坏消息。 所有事情共享一个突袭10 – 不是一个好主意。 但6张光盘不是高性能的15k或不是。 我有一个较小的数据库服务器,这里只有6个磁盘在RAID 10中用于数据。 不pipe你做什么,事务上明智的是,除非你做OLAP,否则你将受到光盘性能的限制。 光盘子系统无法推动ONE 12核心教授,其中4人是绝对不可能的。 在大多数情况下,单个4核心会使光盘过载。 真的,最好在计算方面做一些事情。
build议:
确保你需要你买的东西。 我知道Java可以是一个资源猪,但在这些维度? 你真的需要48核心吗? Centos处理得体吗? Linux DID有太多内核的问题。 现在,我知道这些时间已经过去了,但是48核心可以相当推动。 我真的很喜欢function强大的服务器,但是当我正常使用数据库时,它们的大小是4位数(1000 + gb),光盘子系统至less有10个,通常是1000多个光盘,以便为所需的IO预算提供这个怪物。 OR服务器用于虚拟化。
可能增加更多的RAM。 32GB的声音令人印象深刻,但是对于48个内核来说,这是我喜欢的偏低一点。 我更喜欢用至less1-2千兆字节的PER CORE。
有一本书, PostgreSQL 9.0高性能 ,覆盖高性能PostgreSQL的来龙去脉做了相当不错的工作。
将一个大的RAID10卷分割成多个分区并没有什么用处。 OS,WAL和数据库驱动器的磁盘使用模式是不同的,将它们放在不同的磁盘上使得PostgreSQL更快。 例如,WAL是所有的顺序写入,所以有一个专用的驱动器可以帮助许多事情。 同一个大驱动器上的单独分区不会以同样的方式提高性能。
但是,当你的数据集相对于服务器上RAM的数量是非常小的时候,最终它并不重要。 实际上,实际上并不需要高性能的磁盘设置,只需要快速的CPU和RAM。
你没有提到的一件事是你使用的RAID控制器,以及你是否有一个电池提供备份到caching。 这比划分琐事更重要。 请参阅Reliable Writes链接到更多的背景。
数据库通常是I / O绑定的。 不知道你的特定应用程序的任何事情,我会掉落3个处理器,并看看为pgdata分区获得一个Fusion IO卡(或者一个SSD)。
我也设置RAID有点不同。 xlog(顺序)的使用模式通常与pgdata(随机)分区不同。 出于这个原因,我build议把它们放在不同的物理设备上。
标准的性能答案是“testing和看”。 所以,如果你可以在负载下尝试几种不同的configuration,看看哪一个configuration最适合你的数据 ,那就是“正确的”configuration。
使用20GB的数据库,您几乎可以将所有数据库放入文件系统caching和/或Postgresql缓冲区caching中。 一旦服务器变热,你甚至可能没有那么多的物理IO。
也许一个好的起点是为操作系统创build一个2磁盘RAID 1镜像,并使用RAID 10arrays中的其他6个磁盘来实现pgdata + swap。 在你有数据备份之前,我没有看到需要分开xlogs和pgdata。 如果你真的需要这个设置,至less可以让你把日志移动到镜像驱动器。
挂载选项也是如此。 noatime几乎总是一个好主意,但除此之外,我会一个人留下,直到你需要它。
在CentOS / RHEL中要注意的一件事是LVM。 这可能是值得的另一个问题,但我从来不使用LVM,而是创build普通的ext3分区。 (我真的希望你的意思是硬盘RAID,而不是LVM RAID)