当响应时间过长时,我收到代理错误
When the response time is too long, I receive a proxy error
我在模型中有一个进程向 1000 多个用户发送 SMS 并根据响应相应地更新数据库。这个过程需要一段时间才能完成。到响应返回时。我在 browser.Reason 中看到 502 代理错误:从远程服务器读取时出错
我该如何解决?
根据您的描述,超时可能发生在:
- 在您的应用程序服务器和远程 SMS 网关之间,或者
- 在您的浏览器和应用程序服务器之间。
如果错误发生在您的应用程序服务器和远程消息传递网关之间
- 如果您通过您控制的代理连接到短信发送服务器,请尝试增加代理的连接超时
- 如果您在服务器上设置了最长执行时间,则可能会在一定时间后终止页面呈现。
- 尝试以较小的批次发送以减少向消息服务器发送请求的持续时间。
减少请求持续时间(例如,通过以较小的批次发送消息)将降低远程服务器或中间服务器超时的风险。它还具有一个优点,即您可以在每批发送时更新您的进度。
如果特定收件人 phone 号码导致远程服务器上的错误,则可以通过缩小可能的问题号码列表的范围来更轻松地进行诊断。
如果错误出在您的浏览器和应用程序之间
您可能 运行 从生成对浏览器的响应的同一进程发送的消息。这将阻止页面的构建和快速 returned 给您,因此您的远程服务器或中间服务器可能会在您等待消息发送完成时导致超时。
与其等到长时间的 运行 操作完成 return 浏览器页面,不如开始使用消息或作业排队系统(例如 Gearman, RabbitMQ).这些系统允许您将长运行 任务放入队列中,以便快速生成和return 页面。通过让长 运行 任务包含进度更新(例如,将进度写入数据库),您可以拥有一个页面,显示任务运行时的进度。
很简单,你只需要传递你的代理 Keepalive=On 参数
例如:
http://localhost:5000/ Keepalive=On
我找到了解决问题的办法。我不得不为此更改我的 apache 配置。我正在使用 ProxyPass 并且不得不设置 10 分钟的超时并保持连接到我的 proxypass。
在这里找到我的解决方案:
我在模型中有一个进程向 1000 多个用户发送 SMS 并根据响应相应地更新数据库。这个过程需要一段时间才能完成。到响应返回时。我在 browser.Reason 中看到 502 代理错误:从远程服务器读取时出错 我该如何解决?
根据您的描述,超时可能发生在:
- 在您的应用程序服务器和远程 SMS 网关之间,或者
- 在您的浏览器和应用程序服务器之间。
如果错误发生在您的应用程序服务器和远程消息传递网关之间
- 如果您通过您控制的代理连接到短信发送服务器,请尝试增加代理的连接超时
- 如果您在服务器上设置了最长执行时间,则可能会在一定时间后终止页面呈现。
- 尝试以较小的批次发送以减少向消息服务器发送请求的持续时间。
减少请求持续时间(例如,通过以较小的批次发送消息)将降低远程服务器或中间服务器超时的风险。它还具有一个优点,即您可以在每批发送时更新您的进度。 如果特定收件人 phone 号码导致远程服务器上的错误,则可以通过缩小可能的问题号码列表的范围来更轻松地进行诊断。
如果错误出在您的浏览器和应用程序之间
您可能 运行 从生成对浏览器的响应的同一进程发送的消息。这将阻止页面的构建和快速 returned 给您,因此您的远程服务器或中间服务器可能会在您等待消息发送完成时导致超时。
与其等到长时间的 运行 操作完成 return 浏览器页面,不如开始使用消息或作业排队系统(例如 Gearman, RabbitMQ).这些系统允许您将长运行 任务放入队列中,以便快速生成和return 页面。通过让长 运行 任务包含进度更新(例如,将进度写入数据库),您可以拥有一个页面,显示任务运行时的进度。
很简单,你只需要传递你的代理 Keepalive=On 参数
例如:
http://localhost:5000/ Keepalive=On
我找到了解决问题的办法。我不得不为此更改我的 apache 配置。我正在使用 ProxyPass 并且不得不设置 10 分钟的超时并保持连接到我的 proxypass。
在这里找到我的解决方案: