Greenplum優化--系統配置篇
阿新 • • 發佈:2019-02-04
目錄
硬體選型
- 作業系統:不支援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配置一個千兆網絡卡,或者配置每臺機器都有萬兆網絡卡。
伺服器系統引數配置
在Linux下,一般需要修改三種類型引數以使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 = 3000 65535PORT_BASE=2000MIRROR_PORT_BASE=2100REPLICATION_PORT_BASE=2200MIRROR_REPLICATION_PORT_BASE=2300
備份節點分配技巧
如果配置了mirror節點,其會分佈在所有Segment上,預設情況下同一臺伺服器上主節點對應的所有備節點會分配在一個伺服器上,這樣一旦一臺計算節點宕機,所有備節點會在同一臺伺服器上,致使效能降低50%。在初始化資料庫時,可以指定-S引數,將統一伺服器上主節點對應的備節點打散指叢集不同伺服器上。