代码之家  ›  专栏  ›  技术社区  ›  Bart Bergmans

拉维尔邮件SES 504网关超时

  •  0
  • Bart Bergmans  · 技术社区  · 6 年前

    在我的laravel项目中使用 ses 作为邮件提供商,我在等待一段时间后得到了504网关超时。我试着用以下方式发送邮件:

    Mail::to($session->email)->send(new SessionRegistered($session));
    

    Mail::send('emails.sessions', ['firstname' => $request->get('register_first_name'), 'lastname' => $request->get('register_last_name'), 'selected' => $selected], function ($m) use ($request) {
        $m->from(env('MAIL_FROM'), env('MAIL_FROM_NAME'));
    
        $m->to($request->get('register_email'), $request->get('register_first_name') . ' ' . $request->get('register_last_name'))->subject('Uw persoonlijke programma');
    });
    

    当我使用 log 作为邮件提供商,一切正常。它发生在我家环境和服务器上。ses凭证也用于它们正在工作的另一个项目中。

    我得到以下错误:

    *502 upstream timed out (110: Connection timed out) while reading response header from upstream
    
    2 回复  |  直到 6 年前
        1
  •  0
  •   Shobi    6 年前

    有负载平衡器吗?试一试了吗?

    解决方案1:监视httpcode_elb_5xx和延迟度量。如果这些指标有所增加,可能是由于应用程序在空闲超时时间内没有响应。有关超时请求的详细信息,请在负载平衡器上启用访问日志,并查看由弹性负载平衡生成的日志中的504响应代码。如果需要,可以增加容量或增加配置的空闲超时,以便完成长时间的操作(例如上载大文件)。 https://docs.aws.amazon.com/elasticloadbalancing/latest/classic/ts-elb-error-message.html

    要使其高效和容错,可以做的一件事是使用队列。 您可以将任务(如发送电子邮件)推送到队列中。假设任务失败,队列本身将重试,并且可以对其进行自定义(例如:重试次数)

    Another SO Answer

        2
  •  0
  •   Bart Bergmans    6 年前

    修好了,我是个白痴。我用的是eu-central-1。欧盟中央一号没有战略经济区,欧盟西部一号有战略经济区。