【发布时间】:2021-11-24 04:06:02
【问题描述】:
我有一个执行 Postgres 过程的简单休息端点。 此过程返回设备的当前状态。 例如: 20 台设备。 客户端应用程序连接到 API 并每秒对该端点做出 20 次响应。 对于 x 个客户端,有 x*20 个请求。 对于 2 个客户 40 个请求。 仅当有许多客户端和/或许多设备时,它才会在 Postgres 服务器上导致较大的 cpu 负载。 我没有创建它,但我需要重新设计它。 如何仅将并发查询限制为 db?这将是一个热修复。
我的第二个想法是创建一个在同一时间只执行一个查询的后台工作者。然后端点从内存中获取数据。
【问题讨论】:
-
您可以减小连接池的大小 - 这实质上定义了您的应用程序可以运行的并发查询数
-
为什么不直接修复客户,让他们停止这样做呢?如果每 5 个请求中有 4 个开始抛出错误,客户端将如何响应?如果你让每个客户都等待它的回答,客户会如何回应?您可以在对客户说“嘿,把它关闭”的响应中添加一个字段,但除非客户知道这意味着什么,否则它不会改变任何东西。
-
为什么不尽可能使用原生查询?
标签: spring postgresql spring-data-jpa spring-data