166
社区成员




各位大佬,请帮分析个问题。
环境:2台服务器(24线程+256G内存) 一台装有master +一组segment+mirror,一台装有segment+mirror。在这两台服务器上分别部署gpfdist服务。有一个按日期分区的分区表A
测试:两台服务器上均有一个A表入库文件大概都为900M(一千六百万行数据),数据日期均为12月5日,A表12月5日分区表已创建。通过gpfdist创建外表同时入库
问题描述:入库期间通过查询pg_stat_activity发现,只要有commit的时候,查询gp相关表的接口就会卡死,或者长时间没有反应(查询的不一定是A表)。整个入库过程大概在2800秒左右。整个入库期间 磁盘io占用逐渐增加到90%-100%左右,持续到入库完成。
请问,假设系统必须要在入库期间使用,如何解决或优化入库时长和卡死的问题?
sysctl.conf:
kernel.shmmax = 135240355840
kernel.shmmni = 4096
kernel.shmall = 33017665
kernel.sem = 50100 128256000 50100 2560
kernel.sysrq = 1
kernel.core_uses_pid = 1
kernel.msgmnb = 65536
kernel.msgmax = 65536
kernel.msgmni = 2048
net.ipv4.tcp_syncookies = 1
net.ipv4.ip_forward = 0
net.ipv4.conf.default.accept_source_route = 0
net.ipv4.tcp_tw_recycle = 1
net.ipv4.tcp_max_syn_backlog = 4096
net.ipv4.conf.default.rp_filter = 1
net.ipv4.conf.default.arp_filter = 1
net.ipv4.conf.all.arp_filter = 1
net.ipv4.ip_local_port_range = 10000 65535
net.core.netdev_max_backlog = 10000
vm.overcommit_memory = 2
vm.overcommit_ratio=90
postgres.conf:
log_statement=all
checkpoint_segments=3
temp_buffers=4096
#shared_buffers=2000MB
max_connections=300
gp_resqueue_priority_cpucores_per_segment=11
effective_cache_size=147000MB
work_mem=7680MB
maintenance_work_mem=1024MB
#max_statement_mem=25600
gp_vmem_protect_limit=50000
max_statement_mem=25000MB
statement_mem=2300MB
shared_buffers=1024MB