文档首页> 技术教程> 定时任务引发的周期性卡顿

定时任务引发的周期性卡顿

发布时间:2026-01-12 19:24        更新时间:2026-01-12 20:24
每天固定时刻卡一下、节奏分毫不差,这种卡顿十有八九出自定时任务。整点或整分对齐的规律,是它区别于其他性能问题的指纹。 怎么确认是定时任务? 卡顿时间点对齐分钟是第一个信号。crontab -l 加上 ls /etc/cron.d/ /etc/cron.daily/ 把任务列全;系统级的一次性任务用 atq 也要查一遍,同样会造成尖峰。/var/log/cron(Ubuntu 在 syslog 里 grep CRON)记录每次触发;sar -q -f /var/log/sa/sa15 回看当天 load 历史,尖峰时刻与任务时间吻合即可坐实。找到嫌疑任务后,看它的输出日志与执行耗时,很多任务跑一次要几十分钟,自己都不知道。问题也可能出在别人机器上:A 机的卡顿来自 B 机定时来拉数据,别只盯一台。 为什么会造成卡顿? 常见三类:整点全员备份把 IO 打满;任务不带 nice 直接抢 CPU;数据库大查询与业务高峰重叠。每分钟一次的轻量任务单独无感,叠加起来也会垒出整分尖峰。卡顿在整点后几分钟才出现,多半是任务耗时累积所致,触发时间不等于峰值时间。找出凶手最直接的办法是在尖峰时刻执行 ps aux --sort=-%cpu | head,当场抓现行。 怎么错峰? 同一台机器上的重任务分摊到不同分钟:备份放 05 分,日志切割放 17 分;资源消耗型加 nice -n 19 与 ionice -c3 降级;数据库备份压缩挪到业务低峰,并用限速参数控制读取;高频任务在脚本内部做限流。错峰不是只错开分钟,跨机器也要错开,避免同时压一个共享存储。错峰的对照面是业务流量曲线,先弄清自己的高峰在几点。改完观察一两天的曲线,尖峰消失即生效。 怎么预防? 变更清单里加一条:新增任务避开整点整分。日志切割这类系统自带的周期任务也有默认时间,一并纳入清单。多机环境用统一的任务登记表管理,避免两台机器各跑一份全量备份。这一条纪律能消灭大半周期性卡顿投诉。