Python3 ifxPy 内存泄漏

Python3 ifxPy memory leak

我使用 systemd 创建了一个 linux 服务。我的服务调用 Python 脚本。该脚本每 30 秒在无限循环中调用一个函数,我使用 time.sleep(30) 每 30 秒循环一次。我的脚本在 Informix 数据库上打开一个连接,读取数据,在本地插入数据 MongoDB,调用 Web 服务。

但是服务内存不会减少。内存每次都增加。如果我重新启动我的服务,内存将完全释放。服务开始时为 19MB,14 小时后为 555MB。

这是我的代码:

def populate_app():
    ifx_connection = IfxPy.connect(ifx_param, "", "")
    stmt = IfxPy.exec_immediate(ifx_connection, sql)
    dictionary = IfxPy.fetch_assoc(stmt) # Get data key / value

    ...

    IfxPy.close(ifx_connection)

while True:
    populate_app()
    time.sleep(30)

内存泄漏是否可能是由于 requestifxPypymongo 库造成的?

我在循环中注释了我的所有代码,我只在 populate_app 函数中添加了这两行:

ifx_connection = IfxPy.connect(ifx_param, "", "")
stmt = IfxPy.exec_immediate(ifx_connection, sql)

所以内存并没有增加。然后我把这一行:

dictionary = IfxPy.fetch_assoc(stmt) # Get data key / value

内存泄漏又来了。所以我猜 ifxPy 有问题

您可以尝试释放结果集内存调用 free_result() 吗?

类似于:

....
....
# Bulk insert
if new_users:
    user.insert_many(new_users)
if error_user_data:
    user_error.insert_many(error_user_data)

IfxPy.free_result(stmt)
IfxPy.close(ifx_connection)