更具互动性的ZODB包装

时间:2011-03-02 19:50:47

标签: plone zope packing zodb

当前的ZMI管理“包数据库”功能有点粗糙。

1)是否可以为Web UI设置某种进度指示器?例如。一个人知道剩下多少分钟/小时至少给出某种估计

2)ZODB包装如何影响网站的响应度?所有交易都被阻止了吗?

3)任何带有进度指示器的命令行脚本都可用,这样您就可以从ZEO命令行客户端执行此操作了吗?

4)至少某种日志标记注销输出... [INFO] 30%完成... 3:15去

4 个答案:

答案 0 :(得分:7)

包装解剖

ZODB FileStorage打包是将数据从一个文件选择性地复制到另一个文件的过程(只有“年轻”然后指定年龄的事务)。在此复制开始之前,一些软索引构建在内存中以帮助处理。因此,整个ZODB包装包含以下步骤:

  1. 构建包索引
  2. 将交易复制到临时文件
  3. 附加打包后执行的交易
  4. 用打包的文件替换原始的FileStorage,然后以读/写模式重新打开它
  5. 我通常会通过topvmstat / dstatwatch ls -la var/filestorage的组合来监控流程。

    正如Geir所说,您可以拥有专门用于包装的独立ZEO客户端。这是合理的,因为你调用的封装从封锁到打包完成。现在没有必要使用ZEO。 ZEO服务器提供直接连接到ZEO的zeopack实用程序(不需要专用的ZEO客户端)并启动FileStorage打包。其中一个好处是不需要密码,只需要适当的权限来访问ZEO控件套接字。

    包装进度

    由于ZEO服务器(甚至不是服务器而不是FileStorage本身)执行打包,因此限制了向ZEO客户端正确通信进度的可能性。 ZEO协议并非旨在传达此类信息。

    IMHO FileStorage本身在通过日志文件进行通信时可能会更加冗长。可以建立一些进展。如果你觉得需要进度指示器,那么你可以通过记录模块设计某种反馈通道回ZEO-client / Zope-in​​stance回传给浏览器。

    包装时的表现

    由于FileStorage打包是非常密集的磁盘操作,因此会降低磁盘子系统的吞吐量。此外,它还会清除磁盘缓存(在FileStorage较大的情况下),即使在打包完成后也会影响磁盘性能,因为缓存应该再次预热。可能的改进导致更长的打包时间,但对FileStorage中的系统影响较小的是:

    • 恢复O_DIRECT次操作(不触及文件缓存)
    • 减少执行打包的线程的磁盘调度优先级(Linux上为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)没有

相关问题