我不时从CKAN服务器收到超时错误。日志文件显示以下错误消息:
TimeoutError:达到大小为5溢出10的QueuePool限制。
知道造成这种情况的原因以及如何解决这个问题?
PK
答案 0 :(得分:0)
我认为QueuePool是指数据库连接限制。您是在关闭分机中的连接还是获取大量流量?
答案 1 :(得分:0)
这是CKAN的SQLAlchemy用完了与数据库的连接。 当apache看到几个同时发出的请求时,您会看到它 有点负荷。您可以使用类似' ab'至 提供同时负载。
SQLAlchemy连接池在。中的线程之间共享 相同的CKAN流程,但每个CKAN流程都有自己的池。
您可以增加池中的连接数,但是 请记住,默认情况下,postgres的连接数限制为100。所以 通过多个流程,您可以快速达到极限。或者您 可以限制CKAN进程的数量。我相信伊恩注意到了一些 几天前,一个不是线程安全的CKAN依赖,所以最好坚持 只是暂时的过程。
如果使用Apache,您可以在守护进程模式下运行mod_wsgi并指定 进程/线程的限制。如果你在nginx / uwsgi上,那么这个 自然会限制进程的数量,这是更好的。
最好的解决方案是使用单独的应用程序来保存 连接池。这具有跨CKAN工作的优势 线程。 PGPool是一个选项,但我们去了pgbouncer,我 相信更快,我们对它非常满意。