psycopg2.errors.ConnectionFailure:SSL SYSCALL 错误:检测到 EOF

Posted

技术标签:

【中文标题】psycopg2.errors.ConnectionFailure:SSL SYSCALL 错误:检测到 EOF【英文标题】:psycopg2.errors.ConnectionFailure: SSL SYSCALL error: EOF detected 【发布时间】:2019-07-24 07:28:15 【问题描述】:

我有一个 Jenkins 作业(每 3 小时运行一次),它将数据从远程服务器传输到我的数据仓库,通常需要大约 2 小时才能完成,最近我收到以下错误。

Jenkins 作业通过 SSH 连接远程服务器,并通过 Python 脚本 (sql_runner_procedure) 调用 PostgreSQL 过程 (load_foreign_schema_postgresql)。

我创建了另一个 Jenkins 作业(每 2 分钟运行一次)用于移植特定表,因为我们希望该表非常频繁地更新,因此对该作业的调用也是相同的,并且上述作业连续运行了几次并且在某些时间表上因上述错误而失败,所以任何人都可以帮助我弄清楚为什么会发生这种情况以及我该如何解决?

错误:

+ python -u sql_runner_procedure.py /home/etl/bi/datawrapper/data_loader.sql
##################Executing############################## 

CALL load_foreign_schema_postgresql('odoo_server', 'public', 'dl', 'ft', log_table_schema_name := 'log',
                                    log_table_name := 'fr_table'
--     ,recreate_indices := FALSE
    );
Traceback (most recent call last):
  File "sql_runner_procedure.py", line 23, in <module>
    pg_cur.execute(sql)
psycopg2.errors.ConnectionFailure: SSL SYSCALL error: EOF detected
CONTEXT:  remote SQL command: START TRANSACTION ISOLATION LEVEL REPEATABLE READ
SQL statement "CREATE TABLE dl.account_account_type AS
                    SELECT *
                    FROM ft.account_account_type;"
PL/pgSQL function load_foreign_schema_postgresql(text,text,text,text,boolean,boolean,text,text) line 151 at EXECUTE

Process leaked file descriptors. See https://jenkins.io/redirect/troubleshooting/process-leaked-file-descriptors for more information
Build step 'Execute shell' marked build as failure
Finished: FAILURE

我正在运行 Jenkins Job,里面的构建脚本是这样的,

First connect the server with SSH then,

        export PYTHONPATH=/home/etl/bi/
        cd /home/etl/bi/
            python -u sql_runner_procedure.py /home/etl/bi/datawrapper/data_loader.sql

        kill $(ps -ef | grep [m]ysql_tunnel | awk 'print $2')

【问题讨论】:

【参考方案1】:

主要根据描述,我想这一定是由于作业的重叠。您应该检查作业是否使用相同的端口运行,如果您正在使用端口转发。您应该更改端口或创建时间表比如这些工作不会重叠。

【讨论】:

以上是关于psycopg2.errors.ConnectionFailure:SSL SYSCALL 错误:检测到 EOF的主要内容,如果未能解决你的问题,请参考以下文章