船说 CMS 采集速度怎么限制
学会给船说 CMS 的采集任务限速,你就能让采集器慢慢跑、不把目标站和自己服务器搞崩。下面按顺序做,五步就能把速度压下来。
第一步:先弄清「速度」是哪个参数在管
船说 CMS 的采集速度不是某一个开关,而是几个参数叠加的结果:同时发起的请求数(并发/线程数)、每轮抓取的条数、两次请求之间的间隔时间、单次请求超时时间、以及计划任务的触发频率。任何一个放大,整体速度都会跟着涨。所以限速前先登录后台,把采集任务的配置页打开看清楚现在填的是什么值。
入口一般是:后台左侧菜单 → 采集管理 → 采集任务(有的版本叫「采集节点」或「采集规则」),在列表里点某条任务右侧的 编辑。
注意:不同版本菜单和字段名会有出入。找不到就用浏览器
Ctrl+F在当前页面搜「间隔」「条数」「线程」「延时」这几个词,基本能定位。
第二步:改任务级的限速参数
这一步做完,采集就从「疯狂刷」变成「慢慢爬」。在任务编辑页找到 采集设置 或 高级设置 标签页,重点改这几个值:
- 每次采集条数:从默认的 50~100 改成 5~10;
- 请求间隔/延时:填 1000~3000(单位通常是毫秒,也就是 1~3 秒一次);
- 超时时间:填 10~15 秒,别填 60;
- 并发数/线程数:如果能改,直接设成 1。
改完点 保存,然后回到任务列表点一次 清空缓存(或「更新缓存」),让新参数生效。
注意:间隔时间填太大会导致一轮跑不完就被 PHP 超时掐断。如果你把间隔设到 5 秒以上,配合第三步把
max_execution_time一起调大。
第三步:给运行环境加一层兜底
任务参数是「软限制」,PHP 和 Nginx 才是「硬限制」。宝塔面板用户这样操作:软件商店 → 找到正在用的 PHP 版本(如 PHP-7.4)→ 点 设置 → 配置修改,把 max_execution_time 设为 300;再进 性能调整 页确认没有开太激进的并发。
Nginx 侧可以直接限流,编辑站点配置:网站 → 点站点名 → 设置 → 配置文件,在 server {} 里加:
location / {
limit_req zone=one burst=5 nodelay;
limit_req_status 503;
}
并在 http {} 段加一行 limit_req_zone $binary_remote_addr zone=one:10m rate=2r/s;。这样就算后台参数被调高,请求速率也被压在每秒 2 次。
注意:改完配置一定要点 重载配置,直接保存不重载是不生效的。
第四步:把并发改成串行
很多人限速失败,是因为同时挂了好几个采集任务。进 计划任务(宝塔面板:左侧 计划任务),把每个采集任务的执行周期拉开:任务 A 每小时的 0 分跑,任务 B 每小时的 30 分跑,不要都设成「每 5 分钟」。
注意:别用浏览器同时开好几个标签页手动点「开始采集」,那等于把前面所有限制都绕过去了。
第五步:验证限速有没有真的生效
跑一轮,看三个地方:服务器负载(宝塔首页的负载曲线)、Nginx 访问日志的行数增长速度、以及目标站有没有返回 403 或验证码。日志每秒新增几行,基本就等于你的实际请求速率。如果还是几百行地涨,说明参数没保存成功或被别的任务覆盖了。
小结
- 采集速度 = 并发数 × 条数 ÷ 间隔,四个参数一起调才有效;
- 后台任务页改「每次条数 5~10、间隔 1000~3000 毫秒、并发 1」是第一步;
- PHP 的
max_execution_time和 Nginx 的limit_req是硬兜底; - 多个采集任务要错开计划任务时间,别同时跑;
- 改完必须验证:看访问日志增速和服务器负载,别只看后台提示「保存成功」。
原文链接:https://www.gj0.com/thread-1206.html
转载请注明出处并保留本声明;内容仅代表作者观点,与本站立场无关。若本文涉嫌侵权,请联系本站处理。