ARTICLE DETAIL

资讯详情

深耕郑州网站建设与运营推广的一线实战洞察。

listmonk 管理后台统计页加载很慢怎么办:开启慢查询缓存并配置 crontab 周期

listmonk 管理后台统计页加载很慢怎么办:开启慢查询缓存并配置 crontab 周期 listmonk 管理后台统计页加载很慢怎么办开启慢查询缓存并配置 crontab 周期【免费下载链接】listmonkHigh performance, self-hosted, newsletter and mailing list manager with a modern dashboard. Single binary app.项目地址: https://gitcode.com/GitHub_Trending/li/listmonklistmonk 的依赖只有一个 Postgres 数据库但当数据库里积累了几百万订阅者、大量活动浏览和点击记录后需要实时在数据库里做计数和聚合的页面会变得非常慢——官方文档明确说在数据量达到百万级时加载这些管理页面可能需要几十秒。受影响的主要是这三处落地 Dashboard 上的聚合计数、统计和图表Lists 页面每个列表旁边的订阅者数量Subscribers 页面的订阅者总数。这类安装下每次打开管理面板都去实时取精确数字基本没有必要。listmonk 提供的解决方式就是官方文档 performance.md 里的“Slow query caching”把这些数字改为周期性计算并缓存从而获得“massive performance boost”。适用条件只有大数据库才需要开启设置项的帮助文案写得很明确Only enable this on large databases that have slowed down significantly. Caches list subscriber counts, dashboard statistics etc.也就是说这是给“大数据库已经显著变慢”的情况准备的。小数据量的安装开启后只会让统计数字不再实时没有必要。判断方法就是文档描述的现象上面列出的页面不再秒开而是明显卡顿或加载很久。操作步骤在 Settings → Performance 页面开启缓存登录 listmonk 管理后台进入Settings - Performance页面对应前端页面 performance.vue。打开Cache slow database queries开关设置键app.cache_slow_queries。该开关默认是关闭的默认值定义在 schema.sql 和迁移文件 v3.0.0.go 中均为false。在开关旁边的 cron 输入框中配置刷新周期设置键app.cache_slow_queries_interval输入框为标准的 crontab 表达式默认值为0 3 * * *即每天凌晨 3 点刷新一次。文档建议使用 crontab.guru 一类的工具来生成想要的 cron 表达式。注意这个输入框在开关关闭时是禁用的必须先把开关打开。保存设置。保存后无需重启服务。服务启动时读取这两个配置并注册定时任务见 init.go如果app.cache_slow_queries为truelistmonk 会按app.cache_slow_queries_interval的 crontab 表达式创建定时任务到期时调用RefreshMatViews刷新物化视图即“refreshing slow query cache”。因此如果服务已经在运行改完设置后按文档的方式重启一次服务使 cron 任务重新注册即可。如何确认已生效界面提示开启后Dashboard 和 Lists 页面会显示一条灰色说明文字“Slow queries are being cached. Some numbers on this page will not be up-to-date.”慢查询正在被缓存本页部分数字不是实时的。这是最直接的生效标志对应 Dashboard.vue 和 Lists.vue 中根据app.cache_slow_queries条件渲染的提示。服务日志cron 任务注册成功时日志会输出IMPORTANT: database slow query caching is enabled. Aggregate numbers and stats will not be realtime. Next refresh at: 时间其中给出了下次刷新时间可以据此核对 cron 表达式是否符合预期。开启后的效果Lists、Subscribers 页面的订阅者计数以及 Dashboard 统计不再每次访问都实时查库而是读取上次定时刷新缓存的结果页面加载速度大幅提升代价是这些数字最多滞后一个刷新周期所以周期设得过长会牺牲数字的及时程度可按需要调整。限制与可选的辅助优化这是缓存而非实时统计官方帮助文案提示只在数据库确实大且明显变慢时开启对实时数字有依赖的场景应保持默认关闭。数据库本身持续膨胀时文档另外建议定期例如每周一次对大 Postgres 库执行VACUUM ANALYZE可以回收磁盘空间并提升查询性能。注意这是阻塞操作在大库上执行期间所有数据库查询可能停顿通常只有几秒。listmonk 也内置了对应的 vacuum 定时任务配置maintenance.db.vacuum/maintenance.db.vacuum_cron_interval见 init.go可在 Maintenance 设置中按同样方式配置。如果 cron 表达式配置无效日志会输出error: invalid cron interval string for slow query cache此时缓存任务不会注册需要修正表达式后重试。【免费下载链接】listmonkHigh performance, self-hosted, newsletter and mailing list manager with a modern dashboard. Single binary app.项目地址: https://gitcode.com/GitHub_Trending/li/listmonk创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考
返回列表