有些时候,GAE App引擎实例无法成功响应,因为显然不会导致Django应用程序出现异常的请求。
然后我检查MySQL实例中的进程列表,看到localhost打开了许多不必要的进程,可能服务器应用程序正在尝试打开新连接并达到进程限制。
为什么服务器会创建新进程但却无法在最后关闭连接?如何以编程方式关闭这些连接?
如果我重新启动App引擎实例,则500错误(和mysql线程)消失。
| 7422 | root | localhost | prova2 | Sleep | 1278 | | NULL
| 7436 | root | localhost | prova2 | Sleep | 703 | | NULL
| 7440 | root | localhost | prova2 | Sleep | 699 | | NUL
| 7442 | root | localhost | prova2 | Sleep | 697 | | NULL
| 7446 | root | localhost | prova2 | Sleep | 694 | | NULL
| 7448 | root | localhost | prova2 | Sleep | 694 | | NULL
| 7450 | root | localhost | prova2 | Sleep | 693 | | NULL
答案 0 :(得分:0)
实际上,有问题的代码是中间件,它存储查询并生成一些请求的摘要数据。当我在appengine_config.py中删除此部分时,睡眠连接的问题就消失了:
def webapp_add_wsgi_middleware(app):
from google.appengine.ext.appstats import recording
app = recording.appstats_wsgi_middleware(app)
return app