如何改进 spring-mvc 和 tomcat 中的静态资源流

How to improve the streaming of static resources in spring-mvc and tomcat

我正在构建一个应用程序来播放 opus 存储在安装在应用程序服务器上的 nas 上的音频文件。应用程序读取这些文件,并将它们发送到 HTTP 响应输出流。

我正在使用 spring-mvc,Web 应用程序在 tomcat 上运行。 我使用以下方法获取音频文件:

<mvc:resources mapping="/audios/**" location="file:/path/to/the/mounted/nas"/>

我在 <audio> 标签中为他们服务。

现在我想让这个应用程序具有极强的反应性和多用户友好性。如果我有 20 个人同时播放许多音频,系统会变得非常慢,我不知道该怎么做最好。

能否建议我如何改进应用程序

谢谢

您必须首先调查实际延迟发生的位置。是在代码中从文件系统获取资源,还是因为 Tomcat 无法承受更多负载。为确保不是代码问题,您可以记录代码执行时间并检查那里是否一切正常。这是做到这一点的方法 - How do I time a method's execution in Java?

现在,如果是 Tomcat 服务器无法承受负载,这看起来更可能是问题,您可能需要考虑通过创建负载平衡器来拥有多个 tomcat 实例的集群使用 Apache Web 服务器进行配置。这样请求流量负载将由网络服务器分配到所有 运行 tomcat 节点,这将减少延迟。

您可以在这些 link-

找到如何配置负载平衡

http://www.tutorialspoint.com/white-papers/load-balancing-and-scalability-via-tomcat-clusters.htm

https://tomcat.apache.org/connectors-doc/generic_howto/loadbalancers.html