在多线程 Web 应用程序pool_size
的调用中,合理的默认值是什么?ZODB.DB
即使我是唯一一个浏览 db-interacting 处理程序的人,保留实际的默认值也会7
给我一些 connection 。WARNING
是否可以设置一个过高的数字?哪些因素会影响决定将其设置为什么?
在多线程 Web 应用程序pool_size
的调用中,合理的默认值是什么?ZODB.DB
即使我是唯一一个浏览 db-interacting 处理程序的人,保留实际的默认值也会7
给我一些 connection 。WARNING
是否可以设置一个过高的数字?哪些因素会影响决定将其设置为什么?
池大小只是一个“准则”;当您超过该大小时,将记录警告;如果您要使用双倍的连接数,CRITICAL
则会注册一条日志消息。这些表明您可能在应用程序中使用了太多连接。
当您关闭连接时,池将尝试将保留的连接数减少到池大小。
您需要将其设置为应用程序中的最大线程数。对于 Tornado,我认为它使用异步事件而不是几乎完全使用线程,这可能更难确定;如果在 Tornado 中配置了最大并发连接数,则需要将池大小设置为该数字。
不过,我不确定当您的应用程序扩展到数百或数千个并发连接时 ZODB 将如何执行。到目前为止,我只将它与分布在多个进程甚至机器上的最多 100 个左右的并发连接一起使用(使用 ZEO 或 RelStorage 跨这些进程为 ZODB 提供服务)。
我会说,如果这些连接中的大多数只读取,你应该没问题;就可扩展性而言,它同时在同一个对象上写入,这是 ZODB 的弱点。