gpt4 book ai didi

apache - 在 spring 3.0 应用程序中设置最大响应时间

转载 作者:行者123 更新时间:2023-11-28 22:33:04 25 4
gpt4 key购买 nike

我有一个网络应用程序,我们的产品负责人声明必须在 2.5 秒内响应并在 3 秒内可用。

现在,它主要是 POJO,位于薄切片的 Spring MVC 层之上,该层用于依赖​​注入(inject)和将请求定向到 Controller 。

Web 应用程序是一堆 API 之间的一小块肉,这些 API 的构建旨在为一组不同的、非常古老的、不规则的 API 提供凝聚力。其中一些可能需要超过 3 秒(但不会太频繁)

我想要的是一种方法来告诉 spring 或 tomcat,如果它没有在 2500 毫秒内加载 JSP,我想加载告诉我们的用户“伙计,我们正在通过糖蜜爬行”的 jsp!给请稍等,然后再试一次。如果您多次看到此页面;那么您真的很累!”

现在看来我可以通过几种方式来做到这一点(按我的意愿排序)

  • 在 Spring 我可以设置超时并加载不同的 jsp
  • 在负载均衡器中,我可以通过重定向设置超时
  • 在 tomcat 中,我可以设置超时并加载不同的 jsp
  • 在 apache 中,我可以设置一个带有重定向的 tomcat
  • 在应用程序中,我将架构拆分为在一个线程内运行,该线程每 100 毫秒轮询一次以查看它是否已停止运行,并在 2500 毫秒后抛出异常

最佳答案

如果我没记错的话,所有对 Spring MVC 的请求都通过一个过滤器。您可能可以覆盖它并编写您的超时设置(例如,有一个带有超时强制 URL 或路径的可配置 XML)。 Guava 的TimeLimiter将是实现超时强制本身的好工具。

<general-rant>

我不知道您所在的行业,但通常在网络世界中,如果响应没有在 2-3 秒内返回,特别是如果长时间响应是只是少数(如你所说)。我有处理大型堆 (Xmx=10g) 的经验,其中仅 GC 就可能需要几分钟 才能完成。好吧,也许这是一个被高估的例子,但是一两秒的 GC 是非常合理的。

甚至Tomcat manual非常小的超时可能会适得其反。你的产品负责人一定很胆小:)

</general-rant>

啊,还有更多。不要忘记,如果您已经将某些内容发回给您的 servlet 响应,则不能直接重定向。因此,您可能需要延迟响应,直到完成最后一点计算并在最后刷新所有内容。这意味着你必须包装你的 HttpServletResponse使用装饰器,它有某种锁存器,延迟响应输出,直到生成完整响应,或者如果发生超时 - 重定向到“ouch”页面。

关于apache - 在 spring 3.0 应用程序中设置最大响应时间,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5265243/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com