操作系统:不支持Windows,支持以下类UNIX操作系统,首选 RHEL 6。
- SUSE Linux SLES 10.2 or higher;
- CentOS 5.0 or higher;
- RedHat Enterprise Linux 5.0 or higher;
- Solaris x86 v10 update 7
- 文件系统:
- Linux下建议使用 XFS 文件系统,Solaris下建议使用ZFS
- 对于Raid根据需求选择硬Raid或软Raid,若需更大空间,建议使用Raid,若对性能要求更高,可以选择Raid 1+0。
- CPU:
- 若仅有少量进程运行在单个处理器上,则可以考虑配备更快的CPU(Intel是单核运算速度方面的领导者)。相反,若有大量并发进程运行在所有处理器上,则考虑配备更多的核(AMD在多核处理技术方面表现优异)。
- 主机上CPU个数与Segment的对应关系:一个CPU配置一个主Segment。
- 内存:在GP中,内存主要用于在SQL执行过程汇总保存中间结果(如排序、HashJoin等),若内存不够,GP会选择使用磁盘缓存数据,大大降低SQL执行的性能。
- 网络: GP建议为Segment机器上的每一个主Segment配置一个千兆网卡,或者配置每台机器都有万兆网卡。
服务器系统参数配置
在下,一般需要修改三种类型参数以使GP性能达到最优:共享内存、网络、用户限制。
- 共享内存和网络参数配置
服务器参数 | 默认值 | 最佳值 |
---|---|---|
kernel.shmmax | 5000000000 | 5000000000(不建议修改) |
kernel.shmmni | 4096 | 4096(不建议修改) |
kernel.shmall | 40000000000 | 40000000000 (不建议修改) |
kernel.sem | 250 5120000 100 20480 | 250 5120000 100 20480 |
kernel.sysrq | 1 | 1 |
kernel.core_uses_pid | 1 | 1 |
kernel.msgmnb | 65536 | 65536 |
kernel.msgmax | 65536 | 65536 |
kernel.msgmni | 2048 | 2048 |
net.ipv4.tcp_syncookies | 1 | 1 |
net.ipv4.ip_forward | 0 | 0 |
net.ipv4.conf.default.accept_source_route | 0 | 0 |
net.ipv4.tcp_tw_recycle | 1 | 1 |
net.ipv4.tcp_max_syn_backlog | 4096 | 4096 |
net.ipv4.conf.default.rp_filter | 1 | 1 |
net.ipv4.conf.default.arp_filter | 1 | 1 |
net.ipv4.conf.all.arp_filter | 1 | 1 |
net.ipv4.ip_local_port_range | 1025 65535 | 1025 65535 |
net.core.netdev_max_backlog | 10000 | 10000 |
vm.overcommit_memory | 2 | 唯一建议值–>2 |
-
修改文件数限制
- soft nofile 65536
- hard nofile 65536
- soft nproc 131072
- hard nproc 131072
-
I/O参数配置
-
包含数据目录的设备的预读大小应设为 16384
/sbin/blockdev --getra /dev/sdb16384
-
包含数据目录的设备的 I/O 调度设置为 deadline。
# cat /sys/block/sdb/queue/schedulernoop anticipatory [deadline] cfq
-
通过 /etc/security/limits.conf 增大文件数和进程数。
* soft nofile 65536* hard nofile 65536* soft nproc 131072* hard nproc 131072
-
启用core文件转储,并保存到已知位置。确保limits.conf中允许的core转储文件。
kernel.core_pattern = /var/core/core.%h.%t# grep core /etc/security/limits.conf* soft core unlimited
-
-
端口配置
ip_local_port_range 的设置不要和 Greenplum 的端口范围有冲突,例如:net.ipv4.ip_local_port_range = 300065535PORT_BASE=2000MIRROR_PORT_BASE=2100REPLICATION_PORT_BASE=2200MIRROR_REPLICATION_PORT_BASE=2300
备份节点分配技巧
如果配置了mirror节点,其会分布在所有Segment上,默认情况下同一台服务器上主节点对应的所有备节点会分配在一个服务器上,这样一旦一台计算节点死机,所有备节点会在同一台服务器上,致使性能降低50%。在初始化数据库时,可以指定-S参数,将统一服务器上主节点对应的备节点打散指集群不同服务器上。