PGAgent:捕获未处理的未知异常;终止

问题描述:

在Postgre DB上不断运行的作业的麻烦,永远不会完成。PGAgent:捕获未处理的未知异常;终止

我曾尝试以下操作来解决它:

  • apt-get的更新升级&(PostgreSQL的被更新为最新的)
  • /etc/init.d/postgresql的重新启动

    postgresql.service - PostgreSQL RDBMS 
        Loaded: loaded (/lib/systemd/system/postgresql.service; enabled) 
        Active: active (exited) since Fri 2015-10-16 10:06:04 UTC; 9s ago 
        Process: 6787 ExecStart=/bin/true (code=exited, status=0/SUCCESS) 
        Main PID: 6787 (code=exited, status=0/SUCCESS) 
        CGroup: /system.slice/postgresql.service 
    
  • /etc/init.d/pgagent重启

    pgagent.service - Postgres Job Agent Daemon 
        Loaded: loaded (/lib/systemd/system/pgagent.service; enabled) 
        Active: active (running) since Fri 2015-10-16 10:06:04 UTC; 1min 48s ago 
        Main PID: 6793 (pgagent) 
        CGroup: /system.slice/pgagent.service 
         └─6793 /usr/bin/pgagent -f -l 2 -s /var/log/pgagent hostaddr=localhost dbname=postgres user=postgresext 
    
    Oct 16 10:07:00 m-t-db-01 pgagent[6793]: *** Caught unhandled unknown exception; terminating 
    Oct 16 10:07:50 m-t-db-01 pgagent[6793]: *** Caught unhandled unknown exception; terminating 
    
  • 试图启用pgagent调试模式vim /etc/default/pgagent

    EXTRA_OPTS="-f -l 2 -s /var/log/pgagent hostaddr=localhost dbname=postgres user=postgresext" 
    
  • 试图重新启动机器
  • /var/log/pgagent日志中我看到的只是:

    ERROR: Failed to query jobs table! 
    DEBUG: Creating primary connection 
    DEBUG: Connection Information: 
    DEBUG:  user   : postgresext 
    DEBUG:  port   : 0 
    DEBUG:  host   : localhost 
    DEBUG:  dbname  : postgres 
    DEBUG:  password  : 
    DEBUG:  conn timeout : 0 
    DEBUG: Connection Information: 
    DEBUG:  user   : postgresext 
    DEBUG:  port   : 0 
    DEBUG:  host   : localhost 
    DEBUG:  dbname  : postgres 
    DEBUG:  password  : 
    DEBUG:  conn timeout : 0 
    DEBUG: Creating DB connection: user=postgresext host=localhost dbname=postgres 
    DEBUG: Database sanity check 
    DEBUG: Clearing zombies 
    DEBUG: Checking for jobs to run 
    DEBUG: Sleeping... 
    DEBUG: Clearing inactive connections 
    DEBUG: Connection stats: total - 1, free - 0, deleted - 0 
    DEBUG: Checking for jobs to run 
    DEBUG: Sleeping... 
    DEBUG: Creating primary connection 
    DEBUG: Connection Information: 
    DEBUG:  user   : postgresext 
    DEBUG:  port   : 0 
    DEBUG:  host   : localhost 
    DEBUG:  dbname  : postgres 
    DEBUG:  password  : 
    DEBUG:  conn timeout : 0 
    DEBUG: Connection Information: 
    DEBUG:  user   : postgresext 
    DEBUG:  port   : 0 
    DEBUG:  host   : localhost 
    DEBUG:  dbname  : postgres 
    DEBUG:  password  : 
    DEBUG:  conn timeout : 0 
    DEBUG: Creating DB connection: user=postgresext host=localhost dbname=postgres 
    DEBUG: Database sanity check 
    DEBUG: Clearing zombies 
    DEBUG: Checking for jobs to run 
    DEBUG: Sleeping... 
    DEBUG: Clearing inactive connections 
    DEBUG: Connection stats: total - 1, free - 0, deleted - 0 
    DEBUG: Checking for jobs to run 
    DEBUG: Sleeping... 
    DEBUG: Clearing inactive connections 
    DEBUG: Connection stats: total - 1, free - 0, deleted - 0 
    DEBUG: Checking for jobs to run 
    DEBUG: Creating job thread for job 8 
    DEBUG: Creating DB connection: user=postgresext host=localhost dbname=postgres 
    DEBUG: Allocating new connection to database postgres 
    DEBUG: Starting job: 8 
    DEBUG: Creating job thread for job 5 
    DEBUG: Creating DB connection: user=postgresext host=localhost dbname=postgres 
    DEBUG: Allocating new connection to database postgres 
    DEBUG: Starting job: 5 
    DEBUG: Creating DB connection: user=postgresext host=localhost dbname=postgres dbname=testdb 
    DEBUG: Sleeping... 
    DEBUG: Allocating new connection to database testdb 
    DEBUG: Executing SQL step 23 (part of job 8) 
    DEBUG: Creating DB connection: user=postgresext host=localhost dbname=postgres dbname=testdb 
    DEBUG: Allocating new connection to database testdb 
    DEBUG: Executing SQL step 15 (part of job 5) 
    DEBUG: Checking for jobs to run 
    DEBUG: Sleeping... 
    DEBUG: Clearing inactive connections 
    DEBUG: Connection stats: total - 5, free - 0, deleted - 0 
    DEBUG: Checking for jobs to run 
    DEBUG: Sleeping... 
    DEBUG: Destroying job thread for job 8 
    DEBUG: Clearing inactive connections 
    DEBUG: Connection stats: total - 5, free - 0, deleted - 0 
    DEBUG: Checking for jobs to run 
    DEBUG: Sleeping... 
    DEBUG: Clearing inactive connections 
    DEBUG: Connection stats: total - 5, free - 0, deleted - 0 
    DEBUG: Checking for jobs to run 
    DEBUG: Sleeping... 
    DEBUG: Clearing inactive connections 
    DEBUG: Connection stats: total - 5, free - 0, deleted - 0 
    DEBUG: Checking for jobs to run 
    DEBUG: Sleeping... 
    DEBUG: Clearing inactive connections 
    DEBUG: Connection stats: total - 5, free - 0, deleted - 0 
    DEBUG: Checking for jobs to run 
    DEBUG: Sleeping... 
    
  • vim /var/log/postgresql/postgresql-9.4-main.log我只看到:

    [unknown]@[unknown] LOG: incomplete startup packet 
    LOG: MultiXact member wraparound protections are now enabled 
    LOG: database system is ready to accept connections 
    LOG: autovacuum launcher started 
    [email protected] LOG: could not receive data from client: Connection reset by peer 
    [email protected] LOG: could not receive data from client: Connection reset by peer 
    [email protected] LOG: could not receive data from client: Connection reset by peer 
    [email protected] LOG: could not receive data from client: Connection reset by peer 
    [email protected] LOG: could not receive data from client: Connection reset by peer 
    [email protected] LOG: could not receive data from client: Connection reset by peer 
    [email protected] LOG: could not receive data from client: Connection reset by peer 
    [email protected] LOG: could not receive data from client: Connection reset by peer 
    [email protected] LOG: could not receive data from client: Connection reset by peer 
    [email protected] LOG: could not receive data from client: Connection reset by peer 
    [email protected] LOG: could not receive data from client: Connection reset by peer 
    

我不明白什么是实际问题以及如何解决它实际?

我已经调查一件事是,pgagent[6793]: *** Caught unhandled unknown exception; terminating可以由不正确的连接终止调用...

有点晚来回答这个问题,但我遇到同样的问题,使用pgAgent时,和它造成什么但沮丧。我甚至试图挖掘源代码来解决它,但只是试图让它在我的服务器上编译是一个完全的噩梦,因为它需要的依赖(没有很好的理由)。

因此,考虑到这一点,我决定为Postgres编写一个新的作业调度程序,作为pgAgent的替代品。这叫做jpgAgent,我一直在我的公司使用它几个月,现在没有任何问题。现在我们使用jpgAgent更加稳定,不必担心代理会随机停下来,并且工作不会按照原样运行,因为之前这是一个常见问题。

无论如何,希望它可以帮助你。