因此,每天晚上我都会运行一些 cron 作业。处理所有记录大概需要 20 分钟。我收集了脚本执行的 SQL 查询数量,大约为 10,000 条。
我认为这项任务非常繁重,需要时间才能完成,但我查看了 CPU 和内存使用情况,发现它非常低。CPU 使用率在 1-3% 之间,偶尔会在 2-3 秒内反弹到 50 左右。
此 VPS 运行的是 Windows 2003 服务器,带有 Apache 和 MySQL。听起来对吗?
答案1
多少内存您的机器上有哪些?如果太少,可能会阻塞并破坏交换。这可以解释低 CPU 使用率下速度缓慢的原因。
答案2
您确定您知道脚本所做的一切吗?也许该过程受磁盘限制。一些 Linux 机器makewhatis
每晚都会运行并更新 使用的数据库locate
。为此,它们会扫描整个磁盘并编译文件名列表。有大量 I/O 但 CPU 使用率不高。也许 Windows 会做类似的事情?通过解析网络日志来编译统计数据?
如果您确实执行了大量 SQL 查询,那么它们可能在大型表的非索引字段上运行,而 MySQL 必须扫描大量记录。我认为您需要仔细查看夜间进程所做的事情,以便找出它为何需要这么长时间。