0

在 postgre DB 上不断运行作业的麻烦,永远不会完成。

我尝试了以下操作来修复它:

  • apt-get update & upgrade(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
    postgresext@postgres LOG:  could not receive data from client: Connection reset by peer
    postgresext@testdb LOG:  could not receive data from client: Connection reset by peer
    postgresext@postgres LOG:  could not receive data from client: Connection reset by peer
    postgresext@postgres LOG:  could not receive data from client: Connection reset by peer
    postgresext@testdb LOG:  could not receive data from client: Connection reset by peer
    postgresext@postgres LOG:  could not receive data from client: Connection reset by peer
    postgresext@postgres LOG:  could not receive data from client: Connection reset by peer
    postgresext@testdb LOG:  could not receive data from client: Connection reset by peer
    postgresext@testdb LOG:  could not receive data from client: Connection reset by peer
    postgresext@testdb LOG:  could not receive data from client: Connection reset by peer
    postgresext@postgres LOG:  could not receive data from client: Connection reset by peer
    

我无法弄清楚实际问题是什么以及如何实际解决它?

我调查的另一件事是pgagent[6793]: *** Caught unhandled unknown exception; terminating可以通过不正确的连接终止来调用......

4

1 回答 1

0

回答这个问题有点晚了,但我在使用 pgAgent 时遇到了同样的问题,除了沮丧之外什么也没有。我什至试图深入研究源代码来修复它,但只是试图让它在我的服务器上编译完全是一场噩梦,因为它需要依赖项(没有充分的理由)。

因此,考虑到这一点,我决定为 Postgres 编写一个新的作业调度程序,作为 pgAgent 的替代品。它被称为jpgAgent,我已经在我的公司使用它几个月了,完全没有问题。现在我们使用 jpgAgent 更加稳定,不必担心代理会随机停止我们并且作业无法正常运行,而以前这是一个常见问题。

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

于 2016-04-25T16:04:50.290 回答