gpt4 book ai didi

docker-compose - 如何使用prisma避免java.util.concurrent.ThreadPoolExecutor错误

转载 作者:行者123 更新时间:2023-12-04 13:38:17 25 4
gpt4 key购买 nike

我目前正在一个大型项目中使用 Prisma。在执行复杂查询时,Prisma 集群经常会在 docker-logs 中出现以下消息(我正在编辑错误以提高可读性):

    {"key":"error/unhandled","requestId":"local:ck7ditux500570716cl5f8x3r","clientId":"default$default","payload":{"exception":"java.util.concurrent.RejectedExecutionException: Task slick.basic.BasicBackend$DatabaseDef$$anon$3@552b85a4 rejected from slick.util.AsyncExecutor$$anon$1$$anon$2@1d4391f7[Running, pool size = 9, active threads = 9, queued tasks = 1000, completed tasks = 43440]","query":"query ($where: TaskWhereUniqueInput!)
{\n task(where: $where) {\n workflow {\n tasks {\n id\n state\n parentReq\n frozen\n parentTask {\n id\n state\n }\n }\n }\n }\n}\n","variables":
"{\"where\":{\"id\":\"ck6twx873bs550874ne867066\"}}",
"code":"0","stack_trace":"java.util.concurrent.ThreadPoolExecutor$AbortPolicy.rejectedExecution(ThreadPoolExecutor.java:2063)\\n
java.util.concurrent.ThreadPoolExecutor.reject(ThreadPoolExecutor.java:830)
...
"message":"Task slick.basic.BasicBackend$DatabaseDef$$anon$3@552b85a4 rejected from slick.util.AsyncExecutor$$anon$1$$anon$2@1d4391f7[Running, pool size = 9, active threads = 9, queued tasks = 1000, completed tasks = 43440]"}}


这是处理大型查询时经常出现的错误。有没有人想出一种方法来配置 Prisma 或进行内部批处理操作来避免这种并发错误?

最佳答案

选项1:
我在循环中运行 Prisma 突变时遇到了这个问题,其中包含大量数据,这些数据似乎创建了太多并发数据库操作。
我的解决方案是限制请求:

thingToLoop.map(() => {
await new Promise(resolve => setTimeout(resolve, 1000));
// Prisma operation here. Essentially this just makes the operation wait for one second between each operation.
})
选项 2
我读过其他帖子,说您也可以设置并发连接数的限制。
见: https://v1.prisma.io/docs/1.25/prisma-server/database-connector-POSTGRES-jgfr/#overview
本质上,这会在创建过多连接时限制连接数。以下面的prisma配置为例:
PRISMA_CONFIG: |
managementApiSecret: __YOUR_MANAGEMENT_API_SECRET__
port: 4466
databases:
default:
connector: postgres
migrations: __ENABLE_DB_MIGRATIONS__
host: __YOUR_DATABASE_HOST__
port: __YOUR_DATABASE_PORT__
user: __YOUR_DATABASE_USER__
password: __YOUR_DATABASE_PASSWORD__
connectionLimit: __YOUR_CONNECTION_LIMIT__

关于docker-compose - 如何使用prisma避免java.util.concurrent.ThreadPoolExecutor错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60531522/

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