首页 > 解决方案 > Mysql连接太多:Django sqlAlchemy

问题描述

我有Django RestFrameWork我们正在使用sqlalchemy库进行MySql连接的应用程序。

engine = create_engine('mysql+mysqldb://username:password@hostaddress/'
                       'DBname', pool_recycle=1800,
                        connect_args={'connect_timeout': 1800}, pool_size=10, max_overflow=10, pool_pre_ping=True)

connection = engine.connect()

随着 API 使用量的增加,Mysql 正在创建新的连接并且数量threads_connected不断增长。达到最大值后抛出Too many connections错误。在show processList许多过程中都会处于sleep模式中。如果我们重新启动应用程序,所有连接都将被重置。下图表示no.of connections v/s time。如何解决这个问题。

在此处输入图像描述

标签: mysqldjango-rest-frameworksqlalchemy

解决方案


您必须在使用完连接后关闭它们,因为如果您不这样做,连接会保持打开状态,直到网络服务器关闭它,这可能需要很长时间。最佳做法是使用连接池。因为打开和关闭连接太重并且会降低性能。即使您使用的是连接池,您也必须在使用后释放连接。


推荐阅读