我正在使用Flask + SQL Alchemy + MySQL编写多线程应用程序。
SQL Alchemy设置:
SQLALCHEMY_TRACK_MODIFICATIONS = True
SQLALCHEMY_POOL_SIZE = 200
SQLALCHEMY_MAX_OVERFLOW = 50
SQLALCHEMY_POOL_RECYCLE = 5
我的应用程序可以同时运行多达300个线程。在每个线程中都有一些数据库用法,如:
# task == my model
db.session.add(task)
task.progress += 1
db.session.commit()
还有一些更复杂的代码
经过3-5分钟的工作后,由于连接太多,我的MySQL将会消失。我在每个线程完成他的工作后尝试过db.session.close()和db.session.bind.dispose()。但它没有帮助,在3-5分钟内将有200多个连接,MySQL将死亡。
如何正确管理这种连接?
你可以用这种方式。
首先转到mysql服务器并更改max_connections选项。
设置全局max_connections = 1000;