当前的ZMI管理“包数据库”功能有点粗糙。
1)是否可以为Web UI设置某种进度指示器?例如。一个人知道剩下多少分钟/小时至少给出某种估计
2)ZODB包装如何影响网站的响应度?所有交易都被阻止了吗?
3)任何带有进度指示器的命令行脚本都可用,这样您就可以从ZEO命令行客户端执行此操作了吗?
4)至少某种日志标记注销输出... [INFO] 30%完成... 3:15去
答案 0 :(得分:7)
ZODB FileStorage打包是将数据从一个文件选择性地复制到另一个文件的过程(只有“年轻”然后指定年龄的事务)。在此复制开始之前,一些软索引构建在内存中以帮助处理。因此,整个ZODB包装包含以下步骤:
我通常会通过top
,vmstat
/ dstat
,watch ls -la var/filestorage
的组合来监控流程。
正如Geir所说,您可以拥有专门用于包装的独立ZEO客户端。这是合理的,因为你调用的封装从封锁到打包完成。现在没有必要使用ZEO。 ZEO服务器提供直接连接到ZEO的zeopack
实用程序(不需要专用的ZEO客户端)并启动FileStorage打包。其中一个好处是不需要密码,只需要适当的权限来访问ZEO控件套接字。
由于ZEO服务器(甚至不是服务器而不是FileStorage本身)执行打包,因此限制了向ZEO客户端正确通信进度的可能性。 ZEO协议并非旨在传达此类信息。
IMHO FileStorage本身在通过日志文件进行通信时可能会更加冗长。可以建立一些进展。如果你觉得需要进度指示器,那么你可以通过记录模块设计某种反馈通道回ZEO-client / Zope-instance回传给浏览器。
由于FileStorage打包是非常密集的磁盘操作,因此会降低磁盘子系统的吞吐量。此外,它还会清除磁盘缓存(在FileStorage较大的情况下),即使在打包完成后也会影响磁盘性能,因为缓存应该再次预热。可能的改进导致更长的打包时间,但对FileStorage中的系统影响较小的是:
O_DIRECT
次操作(不触及文件缓存)ionice
)答案 1 :(得分:3)
为大型站点进行打包的推荐方法是在专用于此类任务的单独ZEO实例上运行它 - 并且根本不监听http请求。
这也将消除对所要求的任何特征的需要。
答案 2 :(得分:2)
这不是一个问题,而是功能请求。它应该在http://plone.uservoice.com/输入,或者在https://bugs.launchpad.net/zope2更好,因为ZMI是Zope 2的特定功能。
答案 3 :(得分:2)
1)没有这样的指标,可能很难实现(我希望通过Zope日志系统至少看到一些进度指示器)
2)未被阻止,但根据打包阶段,您可能会看到高IO和CPU使用率
3)没有
4)没有