gpt4 book ai didi

plone - 更具交互性的 ZODB 打包

转载 作者:行者123 更新时间:2023-12-04 16:49:14 25 4
gpt4 key购买 nike

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

1) 是否有可能为 Web UI 提供某种进度指示器?例如。一个告诉你还剩多少分钟/小时,至少给出某种估计

2) ZODB 打包如何影响站点的响应性?所有交易都被阻止了吗?

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

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

最佳答案

包装解剖

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

  • 积木索引
  • 将事务复制到临时文件
  • 打包开始后执行的附加事务
  • 用打包的文件替换原始文件存储并以读/写模式重新打开它

  • 我通常通过 top 的组合来监控过程, vmstat/ dstat , watch ls -la var/filestorage .

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

    包装进度

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

    恕我直言,FileStorage 本身在通过日志文件进行通信时可能会更加冗长,它现在正在做什么。可以内置某种进度。如果您觉得需要进度指示器,那么您可以设计某种反馈 channel ,通过日志模块返回到 ZEO-client/Zope-in​​stance 以传达回浏览器。

    包装时的性能

    由于 FileStorage 打包是相当密集的磁盘操作,它减少了磁盘子系统的吞吐量。此外,它会清除磁盘缓存(在较大的 FileStorage 的情况下),即使在打包完成后也会影响磁盘性能,因为缓存应该再次预热。在 FileStorage 中导致打包时间更长但对系统影响更小的可能改进是:
  • 恢复到 O_DIRECT操作(不接触文件缓存)
  • 为执行打包的线程降低磁盘调度优先级(ionice 在 Linux 上)
  • 节流打包速度
  • 关于plone - 更具交互性的 ZODB 打包,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5172595/

    25 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com