在 Ubuntu 上使用 Python 的 Azure WebApp 中的连接泄漏
Connection Leak in Azure WebApp Using Python on Ubuntu
我在 Azure 上的 Ubuntu WebApp 上有一个 Flask 应用 运行ning。每天早上我对应用程序的查询都会失败,并出现以下错误:
sqlalchemy.exc.OperationalError: (pyodbc.OperationalError) ('08S01', '[08S01] [Microsoft][ODBC Driver 17 for SQL Server]TCP Provider: Error code 0x68 (104) (SQLExecDirectW)')
我正在使用 SQLAlchemy ORM 查询我的 Azure SQL 服务器实例。我认为我的联系因以下原因而变得陈旧。
- 每天早上在没有人使用该应用程序后都会发生这种情况
- 在 X 次失败后 returns,它开始工作,直到第二天早上。
然而,让事情变得更奇怪的是,当我在 sql 服务器上检查 sys.dm_exec_sessions
时,它没有显示任何活动连接(在我正在执行检查的连接之外)。
此外,当我 运行 在我本地的 dockerized 应用程序连接到数据库时,我没有收到这样的错误。
如果有人遇到过类似的问题,我希望能提供一些见解,或者至少提供有关深入研究的建议。
这 link 帮助了我,但解决方案仅适用于 Windows 应用程序,不适用于 Linux。
在@snakecharmerb 的帮助下:
应用程序 in-fact 一直在死连接池中,设置 pool_recycle 更长的时间解决了这个问题。
engine = create_engine(
key, echo=False, future=True,
echo_pool=True,
# connection pool will log informational output such as when connections are invalidated.
pool_recycle=3600
# causes the pool to recycle connections after the given number of seconds has passed.
)
我在 Azure 上的 Ubuntu WebApp 上有一个 Flask 应用 运行ning。每天早上我对应用程序的查询都会失败,并出现以下错误:
sqlalchemy.exc.OperationalError: (pyodbc.OperationalError) ('08S01', '[08S01] [Microsoft][ODBC Driver 17 for SQL Server]TCP Provider: Error code 0x68 (104) (SQLExecDirectW)')
我正在使用 SQLAlchemy ORM 查询我的 Azure SQL 服务器实例。我认为我的联系因以下原因而变得陈旧。
- 每天早上在没有人使用该应用程序后都会发生这种情况
- 在 X 次失败后 returns,它开始工作,直到第二天早上。
然而,让事情变得更奇怪的是,当我在 sql 服务器上检查 sys.dm_exec_sessions
时,它没有显示任何活动连接(在我正在执行检查的连接之外)。
此外,当我 运行 在我本地的 dockerized 应用程序连接到数据库时,我没有收到这样的错误。
如果有人遇到过类似的问题,我希望能提供一些见解,或者至少提供有关深入研究的建议。
这 link 帮助了我,但解决方案仅适用于 Windows 应用程序,不适用于 Linux。
在@snakecharmerb 的帮助下:
应用程序 in-fact 一直在死连接池中,设置 pool_recycle 更长的时间解决了这个问题。
engine = create_engine(
key, echo=False, future=True,
echo_pool=True,
# connection pool will log informational output such as when connections are invalidated.
pool_recycle=3600
# causes the pool to recycle connections after the given number of seconds has passed.
)