我在Spring Boot
中有一个应用程序,当我加载网页时,它会触发服务并从中获取结果。由于在数据库中进行搜索,因此响应需要一些时间(10-15)秒。因此,如果我关闭该网页并打开同一页面的另一个实例,那么即使我已经关闭了该网页,Spring Boot也会将该请求放入队列中并等待第一个请求完成。另外,如果在队列中有那么多请求,tomcat服务器就会崩溃。
到目前为止,我所做的是我将application.properties
中的tomcat线程修改为
server.tomcat.max-threads=20
那么无论如何我可以使其成为多线程的吗?
Note : The number of requests can be more than 20 also
我正在为此应用程序使用Spring Boot 1.5.2
编辑:
我也有一个类似的应用程序正在Spring boot 2
中运行,并且该应用程序没有这种类型的问题。两者的应用程序逻辑几乎相同,但是第二个应用程序查询花费的时间要少一些。
答案 0 :(得分:0)
更好的设计将意味着具有两个端点的服务:
您应该注册一个侦听器池,该侦听器池将请求从队列中取出,并将其放入数据库(键令牌/值对)中。当用户发送GET请求以获取其令牌时,服务器端会在数据库中查找该令牌并返回结果。
如果您的数据库搜索需要10到15秒,则应考虑加快速度。您有合适的索引吗?分区?这是关系数据库吗?