[英]Nest.js on Cloud Run running scheduled jobs with bull throws random connection errors?
我正在嘗試執行第 3 方 API 請求以獲取大量分頁數據(約 16k 個對象的數組,每個 object 具有約 25 個鍵/值對),我認為我的速率受到限制,但請求在本地和在手動觸發時也可以生產
但是當他們按計划運行時,我得到了這些隨機連接錯誤
errorMessage: 'Client network socket disconnected before secure TLS connection was established',
errorStack: 'Error: Client network socket disconnected before secure TLS connection was established\n' +
' at connResetException (node:internal/errors:691:14)\n' +
' at TLSSocket.onConnectEnd (node:_tls_wrap:1585:19)\n' +
' at TLSSocket.emit (node:events:402:35)\n' +
' at endReadableNT (node:internal/streams/readable:1343:12)\n' +
' at processTicksAndRejections (node:internal/process/task_queues:83:21)'
errorMessage: 'socket hang up',
errorStack: 'Error: socket hang up\n' +
' at connResetException (node:internal/errors:691:14)\n' +
' at TLSSocket.socketOnEnd (node:_http_client:471:23)\n' +
' at TLSSocket.emit (node:events:402:35)\n' +
' at endReadableNT (node:internal/streams/readable:1343:12)\n' +
' at processTicksAndRejections (node:internal/process/task_queues:83:21)'
errorMessage: 'read ECONNRESET',
errorStack: 'Error: read ECONNRESET\n' +
' at TLSWrap.onStreamRead (node:internal/stream_base_commons:220:20)'
errorMessage: 'write ECONNRESET',
errorStack: 'Error: write ECONNRESET\n' +
' at WriteWrap.onWriteComplete [as oncomplete] (node:internal/stream_base_commons:98:16)'
我在 Cloud Run 上運行 Nest.js 服務器
這是我的 Docker 配置
FROM node:16-alpine as build
WORKDIR /app
# Copy and install dependencies first so that they can be cached
COPY package.json .
COPY yarn.lock .
RUN yarn install
# Copy rest of the files and build
COPY . .
RUN yarn build
RUN ls -a
FROM node:16-alpine
WORKDIR /app
# Copy and install dependencies first so that they can be cached
COPY package.json .
RUN yarn install --prod
# Copy files and dist folder from build image
COPY . .
COPY --from=build /app/dist ./dist
RUN ls -a
EXPOSE 3000
CMD ["node", "dist/src/main.js"]
此實例有 4GiB memory,2 個 CPU,請求超時設置為 2400 秒,每個容器的最大請求數為 80,最小和最大實例數分別設置為 1 和 25。
所有流量都通過 VPC 連接器路由,它是一個f1-micro
實例,最小實例設置為 2,最大實例設置為 10。
對於公牛,有 5 個不同的工人設置,它們被隨機分配到工作中
我在之前部署到的 App Engine 上沒有收到這些錯誤
有誰知道這是什么原因造成的?
我建議查看 Cloud Run 中設置的並發值。 默認情況下,每個 Cloud Run 容器可以同時接收 80 個請求,但您最多可以增加到 1000 個,您可以根據您的代碼是否可以同時處理並行請求來修改此值,在此鏈接中您可以找到如何將您的並發值設置為 Cloud Run
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.