问题
greenplum version is 5.3.0 centos 7
As title, The following is result of gplogfilter
SELECT pg_catalog.quote_ident(n.nspname) || '.' FROM pg_catalog.pg_namespace n WHERE substring(pg_catalog.quote_ident(n.nspname) || '.',1,7)='test_vb' AND (SELECT pg_catalog.count(*) FROM pg_catalog.pg_namespace WHERE substring(pg_catalog.quote_ident(nspname) || '.',1,7) = substring('test_vb',1,pg_catalog.length(pg_catalog.quote_ident(nspname))+1)) > 1
UNION
SELECT pg_catalog.quote_ident(n.nspname) || '.' || pg_catalog.quote_ident(c.relname) FROM pg_catalog.pg_class c, pg_catalog.pg_namespace n WHERE c.relnamespace = n.oid AND c.relkind IN ('r', 'S', 'v' , 'x') AND substring(pg_catalog.quote_ident(n.nspname) || '.' || pg_catalog.quote_ident(c.relname),1,7)='test_vb' AND substring(pg_catalog.quote_ident(n.nspname) || '.',1,7) = substring('test_vb',1,pg_catalog.length(pg_catalog.quote_ident(n.nspname))+1) AND (SELECT pg_catalog.count(*) FROM pg_catalog.pg_namespace WHERE substring(pg_catalog.quote_ident(nspname) || '.',1,7) = substring('test_vb',1,pg_catalog.length(pg_catalog.quote_ident(nspname))+1)) = 1
LIMIT 1000|0||postgres.c|1629|
2018-01-02 12:21:20.685964 UTC|||p20871|th-636074112||||0|||seg-1|||||LOG: |00000|3rd party error log:
Unexpected exception reached top of execution stack: major=200 minor=14 file=CTranslatorUtils.cpp line=162||||||||SysLoggerMain|syslogger.c|633|
2018-01-02 12:21:20.686005 UTC|gpadmin|testdb|p21604|th-636074112|[local]||2018-01-02 12:13:41 UTC|0|con8|cmd4|seg-1||dx22||sx1|LOG: |00000|Planner produced plan :0||||||SELECT pg_catalog.quote_ident(c.relname) FROM pg_catalog.pg_class c WHERE c.relkind IN ('r', 'S', 'v' , 'x') AND substring(pg_catalog.quote_ident(c.relname),1,7)='test_vb' AND pg_catalog.pg_table_is_visible(c.oid) AND c.relnamespace <> (SELECT oid FROM pg_catalog.pg_namespace WHERE nspname = 'pg_catalog')
UNION
SELECT pg_catalog.quote_ident(n.nspname) || '.' FROM pg_catalog.pg_namespace n WHERE substring(pg_catalog.quote_ident(n.nspname) || '.',1,7)='test_vb' AND (SELECT pg_catalog.count(*) FROM pg_catalog.pg_namespace WHERE substring(pg_catalog.quote_ident(nspname) || '.',1,7) = substring('test_vb',1,pg_catalog.length(pg_catalog.quote_ident(nspname))+1)) > 1
UNION
SELECT pg_catalog.quote_ident(n.nspname) || '.' || pg_catalog.quote_ident(c.relname) FROM pg_catalog.pg_class c, pg_catalog.pg_namespace n WHERE c.relnamespace = n.oid AND c.relkind IN ('r', 'S', 'v' , 'x') AND substring(pg_catalog.quote_ident(n.nspname) || '.' || pg_catalog.quote_ident(c.relname),1,7)='test_vb' AND substring(pg_catalog.quote_ident(n.nspname) || '.',1,7) = substring('test_vb',1,pg_catalog.length(pg_catalog.quote_ident(n.nspname))+1) AND (SELECT pg_catalog.count(*) FROM pg_catalog.pg_namespace WHERE substring(pg_catalog.quote_ident(nspname) || '.',1,7) = substring('test_vb',1,pg_catalog.length(pg_catalog.quote_ident(nspname))+1)) = 1
LIMIT 1000|0||orca.c|60|
2018-01-02 12:21:22.351554 UTC|gpadmin|testdb|p21604|th-636074112|[local]||2018-01-02 12:13:41 UTC|0|con8|cmd6|seg-1||dx23||sx1|LOG: |00000|statement: SELECT * FROM test_vb;||||||SELECT * FROM test_vb;|0||postgres.c|1629|
in: 77 lines; timestamps from 2018-01-02 11:31:19.698317 to 2018-01-02 12:21:22.351554
out: 77 lines; timestamps from 2018-01-02 11:31:19.698317 to 2018-01-02 12:21:22.351554
---------- /data/master/gpseg-1/pg_log/gp_era ----------
# Greenplum Database era.
# Do not change the contents of this file.
era = 27c9a01176c70c2c_180102113109
in: 3 lines; no timestamps found
out: 3 lines
回答1:
Which version of CentOS 7 are you using? There are known problems with RHEL/CentOS 7.0-7.2 (see Greenplum release notes). You should be using 7.3 or 7.4 - there were kernel problems in the early version 7 of the OS that were fixed in 7.3/4.
Jim McCann Pivotal
回答2:
Greenplum uses TCP connection when starting to active database and tell Segments the address of Master and other operations on database are with UDP connection and master address is got from prior TCP connection. The problem is that the segment only get the modified address of master and try to send messages to modified address if master uses NAT method. Then one of the solve method is to tell segment the address when master send queries by modifying the value of proc->listenerAddr in source code.
回答3:
I was also facing same issue while selecting and inserting but Teddy's last comment worked for me i.e. enable UDP protocol for all hosts (master as well segment). So for greenplum few protocol needs to be enable TCP, UDP, SSH, ICMP.
来源:https://stackoverflow.com/questions/48061128/greenplum-hang-forever-when-doing-any-search-or-insert-actions-with-psql-and-cen