CPU正在使用100%资源,因此队列失败

时间:2017-03-26 17:16:47

标签: laravel laravel-5.3 laravel-5.4

我的代码如下所示。

for($i = 0; $i <= 100; $i++) {
    $objUser = [
        "UserName"      =>  $request["UserName"] . $i,
        "EmailAddress"  =>  $request["EmailAddress"] . $i,
        "RoleID"        =>  RoleEnum::ProjectManager,
        "Password"      =>  $request["Password"],
    ];
    $RegisterResponse = $this->Register->Register($objUser);
    $Data = $RegisterResponse["Data"];                
    $job = (new AccountActivationJob($Data));
    dispatch($job);
}

上面的代码创建了100个用户,每次创建一个队列来发送电子邮件通知。我正在使用数据库默认队列。

我在GoDaddy上有共享主机帐户。由于某些原因,CPU使用率达到100.这是截图。

enter image description here

最后循环在两者之间停止。以下是5分钟后的截图。

enter image description here

在这里,我的问题是:它无法继续创建100个用户。我这样做是为了测试多个用户发送注册请求的示例队列实现。我做错了吗?

3 个答案:

答案 0 :(得分:5)

如上所述,GoDaddy有很多资源限制。你只能每小时发一封100封电子邮件。

那也不是一次。如果它检测到您发送了大量电子邮件,则会阻止您的进程。

相反,您可以将消息排队等待每20秒或30秒发送一次。这将有助于将资源保持在限制范围内,并且您的电子邮件将毫无问题地发送给客户。

您可以使用睡眠功能。

答案 1 :(得分:0)

Godaddy确实拥有您可以使用的资源限制。如果你重复它,它将杀死ssh上的进程。

限制可用here

尝试使用不同的nice参数运行php进程。

当我需要使用确实使用大量资源的工匠命令时,我会这样做。

答案 2 :(得分:0)

我做了调查结果,发现我应该转移到VPS而不是共享主机。这是GoDaddy的好又便宜的计划。 https://in.godaddy.com/hosting/vps-hosting

enter image description here