KnexTimeoutError: Knex: Timeout acquiring a connection. The pool is probably full. Are you missing a .transacting(trx) call?

Hi all,

I have fresh empty blog deployed on Google Cloud with Cloud Run via Docker, no users no any load on it, just several people form our company looking at it and try to work.

Problem:
At random time in random moment blog gets down with KnexTimeoutError: Knex: Timeout acquiring a connection. The pool is probably full. Are you missing a .transacting(trx) call?

I tried every other suggestion our there:

  1. Incease min/max pool size (min 20 max 50)
  2. Put concurrency on Cloud Run to 10
  3. Put min instance to 1
  4. Increase DB instance:
gcloud sql instances describe ... \
  --format="yaml(settings.tier,connectionName,backendType,databaseVersion)"
backendType: SECOND_GEN
connectionName: ...
databaseVersion: MYSQL_8_0
settings:
  tier: db-custom-2-4096

We have no users at the moment, no any load nothing, the ghost version is latest, this is Dockerfile:

FROM ghost:latest

# Install curl (needed to download adapter)
RUN apt-get update && apt-get install -y curl

# Install GCS storage adapter
RUN mkdir -p /tmp/gcs && \
    curl -fsSL "https://api.github.com/repos/danmasta/ghost-gcs-adapter/tarball/master" | tar xz --strip-components=1 -C /tmp/gcs && \
    npm install --prefix /tmp/gcs --omit=dev --omit=optional --no-progress --loglevel error && \
    mv /tmp/gcs "${GHOST_INSTALL}/current/core/server/adapters/storage"

COPY config.production.json /var/lib/ghost/config.production.json
RUN test -f /var/lib/ghost/config.production.json

ENV NODE_ENV=production
ENV port=8080

CMD [ "sh", "-c", "echo \"🟡 DB POOL CONFIG: min=$database__pool__min max=$database__pool__max timeout=$database__pool__acquireTimeoutMillis\" && node current/index.js --port 8080 --verbose" ]

Cloud run deploy config:

      - name: Deploy to Cloud Run
        run: |
          gcloud run deploy ${{ secrets.GCP_SERVICE }} \
            --image $IMAGE \
            --region ${{ secrets.GCP_REGION }} \
            --platform managed \
            --vpc-connector ${{ secrets.VPC_CONNECTOR_NAME }} \
            --concurrency=10 \
            --min-instances=1 \
            --max-instances=3 \
            --allow-unauthenticated \
            --service-account ... \
            --set-secrets database__connection__password=...:latest,mail__options__auth__pass=...:latest \
            --set-env-vars storage__active=gcs \
            --set-env-vars storage__gcs__bucket=... \
            --set-env-vars storage__gcs__protocol=https \
            --set-env-vars storage__gcs__host=storage.googleapis.com \
            --set-env-vars database__client=mysql \
            --set-env-vars database__connection__host=... \
            --set-env-vars database__connection__port=... \
            --set-env-vars database__connection__user=... \
            --set-env-vars database__connection__database=... \
            --set-env-vars database__pool__min=20 \
            --set-env-vars database__pool__max=50 \
            --set-env-vars database__pool__acquireTimeoutMillis=30000 \
            --set-env-vars mail__from=noreply@... \
            --set-env-vars mail__transport=smtp \
            --set-env-vars mail__options__host=... \
            --set-env-vars mail__options__port=... \
            --set-env-vars mail__options__auth__user=... \
            --set-env-vars canary__imageOptimization__resize=false \
            --set-env-vars logging__level=debug

I am desperate, I tried every idea from chat or stack or from here, nothing works, please help.

Anyone? Any tip? Please

Any tips, things to look at?