我使用systemd创建了一个linux服务。我的服务调用Python脚本。这个脚本每30秒在无穷大循环中调用一个函数,我使用time.sleep(30)每30秒循环一次。我的脚本在Informix数据库上打开一个连接,读取数据,在本地MongoDB中插入数据,调用web服务。
但是服务内存永远不会减少。每次记忆都会增加。如果我重新启动服务,内存就会完全释放。服务开始时间为19 14,14小时后为555 14。
这是我的代码:
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)内存泄漏可能是由于request、ifxPy或pymongo库造成的吗?
我在循环中注释了我的所有代码,只允许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有个问题
发布于 2018-10-17 14:19:01
您能尝试释放调用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)https://stackoverflow.com/questions/52838748
复制相似问题