Plone 更具交互性的ZODB打包

Plone 更具交互性的ZODB打包,plone,zope,packing,zodb,Plone,Zope,Packing,Zodb,当前的ZMI管理“包数据库”功能有点粗糙 1) 是否有可能为web UI提供某种进度指示器?例如,告知剩余多少分钟/小时,至少给出某种估算 2) ZODB包装如何影响现场的响应度?是否所有交易都被阻止 3) 是否有任何带有进度指示器的命令行脚本可用,以便您可以从ZEO命令行客户端执行此操作 4) 至少要注销输出的某种日志标记。。。[信息]完成30%。。。3:15出发这不是一个问题,而是一个功能请求。由于ZMI是Zope 2特有的功能,因此应该在输入,或者更好,因为ZMI是Zope 2特有的功能。

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

1) 是否有可能为web UI提供某种进度指示器?例如,告知剩余多少分钟/小时,至少给出某种估算

2) ZODB包装如何影响现场的响应度?是否所有交易都被阻止

3) 是否有任何带有进度指示器的命令行脚本可用,以便您可以从ZEO命令行客户端执行此操作


4) 至少要注销输出的某种日志标记。。。[信息]完成30%。。。3:15出发

这不是一个问题,而是一个功能请求。由于ZMI是Zope 2特有的功能,因此应该在输入,或者更好,因为ZMI是Zope 2特有的功能。

1)没有这样的指标,可能很难实现(我希望通过Zope日志系统至少看到一些进度指标)

2) 未阻塞,但根据打包阶段,您可能会看到高IO和CPU使用率

3) 没有


4) 否

建议对大型站点进行打包的方法是在专用于此类任务的单独ZEO实例上运行它,而这根本不侦听http请求

这也将消除对所需任何功能的需求。

ZODB文件存储打包是将数据从一个文件选择性复制到另一个文件的过程(仅限于比指定时间“年轻”的事务)。在开始复制之前,内存中会建立一些软索引,以帮助进行复制。因此,整个ZODB包装包含以下步骤:

  • 建筑群索引
  • 将事务复制到临时文件
  • 追加打包开始后执行的事务
  • 将原始文件存储替换为打包文件存储,并以读/写模式重新打开
  • 我通常通过组合
    top
    vmstat
    /
    dstat
    监视ls-la var/filestorage
    来监视流程

    正如Geir所提到的,您可以拥有专门用于打包的单独ZEO客户端。这是合理的,因为在打包完成之前,您从阻塞调用打包的线程。现在,如果您使用ZEO,就没有必要这样做。ZEO服务器提供了直接连接到ZEO(无需专用ZEO客户端)并启动文件存储打包的
    zeopack
    实用程序。好处之一是不需要密码,只需要适当的权限即可访问ZEO控制套接字

    包装进度 由于打包是由ZEO服务器(甚至不是服务器而是文件存储本身)执行的,所以将进度正确地传递给ZEO客户端的可能性是有限的。ZEO协议的设计目的不是传递这种类型的信息

    IMHO文件存储本身在通过日志文件进行通信时可能会更加详细。我们可以在这方面取得一些进展。如果您觉得需要进度指示器,那么您可以设计某种反馈通道,通过日志记录模块返回到ZEO client/Zope实例,以便与浏览器通信

    包装时的性能 由于文件存储打包是相当密集的磁盘操作,它减少了磁盘子系统的吞吐量。此外,它还可以删除磁盘缓存(在文件存储较大的情况下),即使在打包完成后也会影响磁盘性能,因为缓存应该重新预热。可能会延长打包时间但对文件存储中的系统影响较小的改进包括:

    • 恢复到直接操作(不接触文件缓存)
    • 减少执行打包的线程的磁盘调度优先级(
      ionice
      Linux上)
    • 节流填料速度

    是否有关于如何将一个ZEO实例用于包装的说明?你能通过这种方式获得状态报告吗?在我得到答案“没有这样的功能”之前,这是一个问题:)这是一个非常基本的功能,用户可以假设它就在那里:)