问题描述
死循环或者非常大的循环程序运行一段时间后发现占用CPU和内存巨大,两个程序占用8核16G阿里ECS机器中的60%内存和CPU。
程序作用
一个程序是从阿里redis中取zset数据然后消费删除。
一个程序是订阅redis中的一个消息,也是简单的消费。
主要代码
$redisQueue = new WechatFollowServices();
//3600 * 26小时
$time1 = 93600;
//3600 * 24小时
$time2 = 86400;
if (config('app.push_debug') == true) {
$time1 = 70;
$time2 = 60;
}
while (true) {
$now = time();
$queues = $redisQueue->getQueues(0, 100, true);
foreach ($queues as $member => $time) {
$queue = \GuzzleHttp\json_decode($member, true);
/**
* 计算时间差,>= 26小时的数据删除
*/
$timeDiff = $now - $time;
if ($timeDiff >= $time1) {
$redisQueue->deleteQueue($member);
}