[GH-ISSUE #5727] [bug]: Intermittent issue loading Team Environments in self-hosted setup #2235

Closed
opened 2026-03-16 23:40:26 +03:00 by kerem · 4 comments
Owner

Originally created by @furkansenturk on GitHub (Dec 25, 2025).
Original GitHub issue: https://github.com/hoppscotch/hoppscotch/issues/5727

Is there an existing issue for this?

  • I have searched existing issues and this bug hasn't been reported yet

Platform

Web App

Browser

Chrome

Operating System

Windows

Bug Description

Intermittent issue loading Team Environments in self-hosted setup (possible throttling)

Summary

We are experiencing an intermittent issue in a self-hosted Hoppscotch environment where team environments sometimes fail to load after selecting a team.
In most cases, the request fails, but occasionally it succeeds.

This might be related to request throttling on the GraphQL backend, so we wanted to share our observations and get your guidance.

Environment

  • Deployment: Self-hosted Hoppscotch
  • Active users: ~450
  • Authentication: Logged-in users with Microsoft Azure
  • Browser: Chrome (latest)
  • OS: Windows
  • Application working on kubernetes

Steps to Reproduce

  1. Log in to the Hoppscotch UI
  2. Select a team
  3. Open the Environments section
Image
  1. Observe the GraphQL request sent to:

    POST /backend/graphql
    
  2. The issue occurs intermittently (more often failing than succeeding)

Expected Behavior

Team environments should load consistently after a team is selected.

Actual Behavior

The environments do not load, and the related GraphQL request fails with a throttling-related error.

Network / GraphQL Response

Image

curl data:

curl 'https://<hoppscotch-self-domain>/backend/graphql' \
  -H 'accept: application/graphql-response+json, application/graphql+json, application/json, text/event-stream, multipart/mixed' \
  -H 'accept-language: en-US,en;q=0.9,tr;q=0.8,tr-TR;q=0.7' \
  -H 'cache-control: no-cache' \
  -H 'content-type: application/json' \
  -H 'origin: https://<hoppscotch-self-domain>' \
  -H 'pragma: no-cache' \
  -H 'priority: u=1, i' \
  -H 'referer: https://<hoppscotch-self-domain>/' \
  -H 'sec-ch-ua: "Google Chrome";v="143", "Chromium";v="143", "Not A(Brand";v="24"' \
  -H 'sec-ch-ua-mobile: ?0' \
  -H 'sec-ch-ua-platform: "Windows"' \
  -H 'sec-fetch-dest: empty' \
  -H 'sec-fetch-mode: cors' \
  -H 'sec-fetch-site: same-origin' \
  -H 'user-agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/143.0.0.0 Safari/537.36' \
  --data-raw $'{"operationName":"GetTeamEnvironments","query":"query GetTeamEnvironments($teamID: ID\u0021) {\\n  team(teamID: $teamID) {\\n    teamEnvironments {\\n      id\\n      name\\n      variables\\n      teamID\\n    }\\n  }\\n}","variables":{"teamID":"cmi4a8zat024etx0i57ck2a60"}}'

STATUS CODE 200 BUT RESPONSE:

{
  "errors": [
    {
      "message": "ThrottlerException: Too Many Requests",
      "locations": [
        {
          "line": 2,
          "column": 3
        }
      ],
      "path": [
        "team"
      ],
      "extensions": {
        "code": "INTERNAL_SERVER_ERROR",
        "stacktrace": [
          "ThrottlerException: ThrottlerException: Too Many Requests",
          "    at GqlThrottlerGuard.throwThrottlingException (/dist/backend/node_modules/.pnpm/@nestjs+throttler@6.5.0_@nestjs+common@11.1.9_class-transformer@0.5.1_class-validator@0_a595a6a6837aec02715735515c6a0b02/node_modules/@nestjs/throttler/dist/throttler.guard.js:153:15)",
          "    at process.processTicksAndRejections (node:internal/process/task_queues:103:5)",
          "    at async GqlThrottlerGuard.handleRequest (/dist/backend/node_modules/.pnpm/@nestjs+throttler@6.5.0_@nestjs+common@11.1.9_class-transformer@0.5.1_class-validator@0_a595a6a6837aec02715735515c6a0b02/node_modules/@nestjs/throttler/dist/throttler.guard.js:123:13)",
          "    at async GqlThrottlerGuard.canActivate (/dist/backend/node_modules/.pnpm/@nestjs+throttler@6.5.0_@nestjs+common@11.1.9_class-transformer@0.5.1_class-validator@0_a595a6a6837aec02715735515c6a0b02/node_modules/@nestjs/throttler/dist/throttler.guard.js:87:28)",
          "    at async GuardsConsumer.tryActivate (/dist/backend/node_modules/.pnpm/@nestjs+core@11.1.9_@nestjs+common@11.1.9_class-transformer@0.5.1_class-validator@0.14._35aa21069415c61cc2ff03470cea104c/node_modules/@nestjs/core/guards/guards-consumer.js:22:17)",
          "    at async canActivateFn (/dist/backend/node_modules/.pnpm/@nestjs+core@11.1.9_@nestjs+common@11.1.9_class-transformer@0.5.1_class-validator@0.14._35aa21069415c61cc2ff03470cea104c/node_modules/@nestjs/core/helpers/external-context-creator.js:155:33)",
          "    at async target (/dist/backend/node_modules/.pnpm/@nestjs+core@11.1.9_@nestjs+common@11.1.9_class-transformer@0.5.1_class-validator@0.14._35aa21069415c61cc2ff03470cea104c/node_modules/@nestjs/core/helpers/external-context-creator.js:73:31)",
          "    at async Object.team (/dist/backend/node_modules/.pnpm/@nestjs+core@11.1.9_@nestjs+common@11.1.9_class-transformer@0.5.1_class-validator@0.14._35aa21069415c61cc2ff03470cea104c/node_modules/@nestjs/core/helpers/external-proxy.js:9:24)"
        ]
      }
    }
  ],
  "data": {
    "team": null
  }
}

Additional Information about Rate Limiting Configuration

We would also like to clarify that rate limiting environment variables are already configured on our self-hosted Hoppscotch backend.

Currently, the following values are set:

RATE_LIMIT_TTL=60000
RATE_LIMIT_MAX=10000

Despite these relatively high limits, we are still encountering ThrottlerException: Too Many Requests errors when loading team environments.

What makes this more confusing is that:

  • The issue happens even when overall request volume is low
  • There is no unusually high traffic at the time of failure
  • The same request occasionally succeeds without any change

Because of this, it does not appear to be caused by excessive client-side requests alone.
It might be related to how throttling is applied at the GraphQL resolver / guard level, or how requests are counted per user, session, or IP in a clustered (Kubernetes) setup.

We would really appreciate your guidance on:

  • Whether these rate limit values should behave differently for GraphQL requests
  • If there are additional throttling configurations specific to Hoppscotch that we might be missing
  • Or if this could be an unintended behavior / bug in the current throttling mechanism

Thanks in advance for your support and for maintaining Hoppscotch 🙏

Deployment Type

Self-hosted (on-prem deployment)

Version

2025.12.0

Originally created by @furkansenturk on GitHub (Dec 25, 2025). Original GitHub issue: https://github.com/hoppscotch/hoppscotch/issues/5727 ### Is there an existing issue for this? - [x] I have searched existing issues and this bug hasn't been reported yet ### Platform Web App ### Browser Chrome ### Operating System Windows ### Bug Description ## Intermittent issue loading Team Environments in self-hosted setup (possible throttling) ### Summary We are experiencing an **intermittent issue** in a **self-hosted Hoppscotch** environment where **team environments sometimes fail to load** after selecting a team. In most cases, the request fails, but occasionally it succeeds. This might be related to **request throttling on the GraphQL backend**, so we wanted to share our observations and get your guidance. ### Environment * Deployment: **Self-hosted Hoppscotch** * Active users: ~450 * Authentication: Logged-in users with Microsoft Azure * Browser: Chrome (latest) * OS: Windows * Application working on kubernetes ### Steps to Reproduce 1. Log in to the Hoppscotch UI 2. Select a team 3. Open the **Environments** section <img width="373" height="370" alt="Image" src="https://github.com/user-attachments/assets/7ae82899-2767-4b76-a653-f14fca9bba6e" /> 4. Observe the GraphQL request sent to: ``` POST /backend/graphql ``` 5. The issue occurs intermittently (more often failing than succeeding) ### Expected Behavior Team environments should load consistently after a team is selected. ### Actual Behavior The environments do not load, and the related GraphQL request fails with a throttling-related error. ### Network / GraphQL Response <img width="1505" height="673" alt="Image" src="https://github.com/user-attachments/assets/d584ece1-e9c1-4de2-9887-0dc48de231b6" /> curl data: ```bash curl 'https://<hoppscotch-self-domain>/backend/graphql' \ -H 'accept: application/graphql-response+json, application/graphql+json, application/json, text/event-stream, multipart/mixed' \ -H 'accept-language: en-US,en;q=0.9,tr;q=0.8,tr-TR;q=0.7' \ -H 'cache-control: no-cache' \ -H 'content-type: application/json' \ -H 'origin: https://<hoppscotch-self-domain>' \ -H 'pragma: no-cache' \ -H 'priority: u=1, i' \ -H 'referer: https://<hoppscotch-self-domain>/' \ -H 'sec-ch-ua: "Google Chrome";v="143", "Chromium";v="143", "Not A(Brand";v="24"' \ -H 'sec-ch-ua-mobile: ?0' \ -H 'sec-ch-ua-platform: "Windows"' \ -H 'sec-fetch-dest: empty' \ -H 'sec-fetch-mode: cors' \ -H 'sec-fetch-site: same-origin' \ -H 'user-agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/143.0.0.0 Safari/537.36' \ --data-raw $'{"operationName":"GetTeamEnvironments","query":"query GetTeamEnvironments($teamID: ID\u0021) {\\n team(teamID: $teamID) {\\n teamEnvironments {\\n id\\n name\\n variables\\n teamID\\n }\\n }\\n}","variables":{"teamID":"cmi4a8zat024etx0i57ck2a60"}}' ``` STATUS CODE 200 BUT RESPONSE: ```json { "errors": [ { "message": "ThrottlerException: Too Many Requests", "locations": [ { "line": 2, "column": 3 } ], "path": [ "team" ], "extensions": { "code": "INTERNAL_SERVER_ERROR", "stacktrace": [ "ThrottlerException: ThrottlerException: Too Many Requests", " at GqlThrottlerGuard.throwThrottlingException (/dist/backend/node_modules/.pnpm/@nestjs+throttler@6.5.0_@nestjs+common@11.1.9_class-transformer@0.5.1_class-validator@0_a595a6a6837aec02715735515c6a0b02/node_modules/@nestjs/throttler/dist/throttler.guard.js:153:15)", " at process.processTicksAndRejections (node:internal/process/task_queues:103:5)", " at async GqlThrottlerGuard.handleRequest (/dist/backend/node_modules/.pnpm/@nestjs+throttler@6.5.0_@nestjs+common@11.1.9_class-transformer@0.5.1_class-validator@0_a595a6a6837aec02715735515c6a0b02/node_modules/@nestjs/throttler/dist/throttler.guard.js:123:13)", " at async GqlThrottlerGuard.canActivate (/dist/backend/node_modules/.pnpm/@nestjs+throttler@6.5.0_@nestjs+common@11.1.9_class-transformer@0.5.1_class-validator@0_a595a6a6837aec02715735515c6a0b02/node_modules/@nestjs/throttler/dist/throttler.guard.js:87:28)", " at async GuardsConsumer.tryActivate (/dist/backend/node_modules/.pnpm/@nestjs+core@11.1.9_@nestjs+common@11.1.9_class-transformer@0.5.1_class-validator@0.14._35aa21069415c61cc2ff03470cea104c/node_modules/@nestjs/core/guards/guards-consumer.js:22:17)", " at async canActivateFn (/dist/backend/node_modules/.pnpm/@nestjs+core@11.1.9_@nestjs+common@11.1.9_class-transformer@0.5.1_class-validator@0.14._35aa21069415c61cc2ff03470cea104c/node_modules/@nestjs/core/helpers/external-context-creator.js:155:33)", " at async target (/dist/backend/node_modules/.pnpm/@nestjs+core@11.1.9_@nestjs+common@11.1.9_class-transformer@0.5.1_class-validator@0.14._35aa21069415c61cc2ff03470cea104c/node_modules/@nestjs/core/helpers/external-context-creator.js:73:31)", " at async Object.team (/dist/backend/node_modules/.pnpm/@nestjs+core@11.1.9_@nestjs+common@11.1.9_class-transformer@0.5.1_class-validator@0.14._35aa21069415c61cc2ff03470cea104c/node_modules/@nestjs/core/helpers/external-proxy.js:9:24)" ] } } ], "data": { "team": null } } ``` ### Additional Information about Rate Limiting Configuration We would also like to clarify that **rate limiting environment variables are already configured** on our self-hosted Hoppscotch backend. Currently, the following values are set: ```env RATE_LIMIT_TTL=60000 RATE_LIMIT_MAX=10000 ``` Despite these relatively high limits, we are still encountering `ThrottlerException: Too Many Requests` errors when loading **team environments**. What makes this more confusing is that: * The issue happens **even when overall request volume is low** * There is **no unusually high traffic** at the time of failure * The same request occasionally succeeds without any change Because of this, it does not appear to be caused by excessive client-side requests alone. It might be related to how throttling is applied at the **GraphQL resolver / guard level**, or how requests are counted per user, session, or IP in a clustered (Kubernetes) setup. We would really appreciate your guidance on: * Whether these rate limit values should behave differently for GraphQL requests * If there are additional throttling configurations specific to Hoppscotch that we might be missing * Or if this could be an unintended behavior / bug in the current throttling mechanism Thanks in advance for your support and for maintaining Hoppscotch 🙏 ### Deployment Type Self-hosted (on-prem deployment) ### Version 2025.12.0
kerem 2026-03-16 23:40:26 +03:00
Author
Owner

@mirarifhasan commented on GitHub (Dec 28, 2025):

Thanks @furkansenturk for the detailed description — it really helps us better understand the scenario.

We intentionally reduced the number of supported environment variables to keep the .env setup simple and easier to get started with.

You can easily configure the rate-limit related changes directly from the Admin Dashboard UI.

Image
<!-- gh-comment-id:3694777367 --> @mirarifhasan commented on GitHub (Dec 28, 2025): Thanks @furkansenturk for the detailed description — it really helps us better understand the scenario. We intentionally reduced the number of supported environment variables to keep the `.env` setup simple and easier to get started with. You can easily configure the rate-limit related changes directly from the Admin Dashboard UI. <img width="1051" height="430" alt="Image" src="https://github.com/user-attachments/assets/46a1ab81-b89d-4e56-a920-e72de2911535" />
Author
Owner

@roopepaajanen commented on GitHub (Jan 13, 2026):

Hi,
did increasing the rate limit solve your issue? We have increased the ttl and and maximum request both on admin dashboard and in values.yaml file, but we're still facing the throttle related issue.
We are currently running 2025.10.1 with the following rate limiting configurations

rateLimit:
  ttl: 60000
  max: 1000

edit: The issue is noticed when fetching environment variable files.

<!-- gh-comment-id:3743590335 --> @roopepaajanen commented on GitHub (Jan 13, 2026): Hi, did increasing the rate limit solve your issue? We have increased the ttl and and maximum request both on admin dashboard and in values.yaml file, but we're still facing the throttle related issue. We are currently running 2025.10.1 with the following rate limiting configurations rateLimit: ttl: 60000 max: 1000 edit: The issue is noticed when fetching environment variable files.
Author
Owner

@viico commented on GitHub (Feb 23, 2026):

Did it works for you @furkansenturk ?

@mirarifhasan We facing the same issue, and increase rate limit in admin doesn't change anything.

<!-- gh-comment-id:3943978750 --> @viico commented on GitHub (Feb 23, 2026): Did it works for you @furkansenturk ? @mirarifhasan We facing the same issue, and increase rate limit in admin doesn't change anything.
Author
Owner

@roopepaajanen commented on GitHub (Feb 23, 2026):

We managed to resolve some of the issues caused by high user activity by adjusting the CPU and memory limits, as well as increasing the number of database connections. Details here: https://github.com/hoppscotch/hoppscotch/issues/5826#issuecomment-3889028650
Hope this helps, @viico!

<!-- gh-comment-id:3944039782 --> @roopepaajanen commented on GitHub (Feb 23, 2026): We managed to resolve some of the issues caused by high user activity by adjusting the CPU and memory limits, as well as increasing the number of database connections. Details here: https://github.com/hoppscotch/hoppscotch/issues/5826#issuecomment-3889028650 Hope this helps, @viico!
Sign in to join this conversation.
No milestone
No project
No assignees
1 participant
Notifications
Due date
The due date is invalid or out of range. Please use the format "yyyy-mm-dd".

No due date set.

Dependencies

No dependencies set.

Reference
starred/hoppscotch#2235
No description provided.