Skip to content

Update troubleshooting.mdx #576

New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Open
wants to merge 4 commits into
base: master
Choose a base branch
from
Open
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
24 changes: 12 additions & 12 deletions website/docs/advanced/troubleshooting.mdx
Original file line number Diff line number Diff line change
Expand Up @@ -4,19 +4,19 @@ title: Troubleshooting
description: This section helps you troubleshoot your issues. It's a good idea to double check these before contacting support.
---

The following issues were reported by customers. We collected what we learned and the possible solutions.
The following issues were reported by customers. We've collected what we've learned and provided the possible solutions below.

## Long response times and connection issues

First, you can verify on the [Service Status Monitor](https://status.configcat.com) whether ConfigCat is up and running or there is a planned maintenance.
First, check the [Service Status Monitor](https://status.configcat.com) to see if ConfigCat is up and running or if there is any planned maintenance.

### General SDK Checklist

1. It might be a good idea to update the ConfigCat SDK to the latest version.
1. Check if you configured the [Data Governance](../advanced/data-governance.mdx) functionality properly.
1. Singleton: We strongly recommend using the ConfigCat SDK as a Singleton. Initializing the SDK over and over again can cause serious performance issues in production. If you want to use multiple SDK Keys in the same application, create only one _ConfigCat Client_ per SDK Key.
1. Make sure you're using the latest version of the ConfigCat SDK.
1. Check if you've configured the [Data Governance](../advanced/data-governance.mdx) functionality correctly.
1. Singleton: We strongly recommend using the ConfigCat SDK as a singleton. Initializing the SDK multiple times can cause serious performance issues in production. If you need to use multiple SDK Keys in the same application, create only one _ConfigCat Client_ per SDK Key.
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Maybe we can simply remove this part as this issue has been solved in the SDKs for years now. I mean it's not possible to create multiple client instances for the same SDK Key. @laliconfigcat What do you think?

Suggested change
1. Singleton: We strongly recommend using the ConfigCat SDK as a singleton. Initializing the SDK multiple times can cause serious performance issues in production. If you need to use multiple SDK Keys in the same application, create only one _ConfigCat Client_ per SDK Key.

1. Are you using the proper polling mode for your use case? Details on polling modes in the [SDK Docs](../sdk-reference/overview.mdx).
1. Might be a too frequent `Auto Polling` interval. Please check the [SDK Docs](../sdk-reference/overview.mdx).
1. Your `Auto Polling` interval might be too frequent Please check the [SDK Docs](../sdk-reference/overview.mdx).
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I suggest rephrasing this to be consistent with the other points. Plus, it might be worth mentioning the consequences.

Suggested change
1. Your `Auto Polling` interval might be too frequent Please check the [SDK Docs](../sdk-reference/overview.mdx).
1. Are you using the right polling interval for `Auto Polling`? Too frequent polling will increase your network traffic. Please check the [SDK Docs](../sdk-reference/overview.mdx).

1. In `Manual Polling` mode, it could be a too frequent `forceRefresh()` call in your code, making the SDK download the config JSON often.
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Suggested change
1. In `Manual Polling` mode, it could be a too frequent `forceRefresh()` call in your code, making the SDK download the config JSON often.
1. In `Manual Polling` mode, are you calling `forceRefresh()` in your code as frequently as needed? Excessive refreshes will increase your network traffic.

1. You can try one of our lightweight sample applications to rule out local issues. Find in the [repository of each SDK](https://github.com/configcat).

Expand All @@ -26,17 +26,17 @@ First, you can verify on the [Service Status Monitor](https://status.configcat.c
Please, **do not load test** the ConfigCat production infrastructure without our consent.
:::

1. You can check the response times manually by navigating to `https://cdn.configcat.com/ping.txt` and opening your browser's network tab.
1. Does the machine/server your code runs on has access to the above address?
1. You can check response times manually by navigating to `https://cdn.configcat.com/ping.txt` and opening your browser's network tab.
1. Does the machine/server running your code have access to the above address?
1. You might need to whitelist the following addresses in your firewall: `cdn.configcat.com`, `cdn-eu.configcat.com`, `cdn-global.configcat.com`.

---

## Too many requests error in Angular

The problem was caused by Angular's Hot Module Replacement functionality during development. The wrapper class, which contained the auto polling ConfigCat SDK was edited, and the Hot Module Replacement reinitialized the whole class without releasing the old, replaced module's Auto Polling timer.
We believe that this is a really rare case, it could happen only during development.
This issue can occure due to Angular's Hot Module Replacement functionality during development. The wrapper class containing the Auto Polling ConfigCat SDK is edited, the Hot Module Replacement can reinitialize the whole class without releasing the old, replaced module's Auto Polling timer.
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Got pretty incoherent, needs improvement.

BTW, @laliconfigcat, is this still a relevant issue?

Suggested change
This issue can occure due to Angular's Hot Module Replacement functionality during development. The wrapper class containing the Auto Polling ConfigCat SDK is edited, the Hot Module Replacement can reinitialize the whole class without releasing the old, replaced module's Auto Polling timer.
This issue can occur due to Angular's Hot Module Replacement functionality during development when you have a class that wraps the ConfigCat SDK running in Auto Polling mode and the wrapper class is edited. The Hot Module Replacement may reinitialize the whole class without stopping the ConfigCat SDK's Auto Polling timer in the old, replaced module.

Copy link
Member

@laliconfigcat laliconfigcat Jul 9, 2025

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I think it is relevant, but i didn't try it.

We believe that this is a rare edge case that only happens during development.
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Suggested change
We believe that this is a rare edge case that only happens during development.
We consider this a rare edge case that only happens during development.


## Python Auto polling issue with uWSGI web server
## Python Auto Polling issue with uWSGI web server

The Python SDK's Auto polling mode utilizes its polling job in a `threading.Thread` object. If you are running your application behind an uWSGI web server, the auto polling mode may not work as expected because the uWSGI web server disables Python's threading by default. Please [enable threading](https://uwsgi-docs.readthedocs.io/en/latest/Options.html#enable-threads) or switch to another polling mode in this case.
The Python SDK's Auto Polling mode runs its polling job in a `threading.Thread` object. If you run your application behind an uWSGI web server, the Auto Polling mode may not work as expected because the uWSGI web server disables Python's threading by default. Please [enable threading](https://uwsgi-docs.readthedocs.io/en/latest/Options.html#enable-threads) or switch to another polling mode in this case.