server: close the temporary session in HTTP API to avoid memory leak (#24339) #24649
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
cherry-pick #24339 to release-5.0
You can switch your code base to this Pull Request by using git-extras:
# In tidb repo: git pr https://github.com/pingcap/tidb/pull/24649
After apply modifications, you can push your change to this PR via:
What problem does this PR solve?
In one of our customer we find their TiDB memory usage is abnormal:
And the inused object is
SessionStatsCollector
which is allocated from the HTTP API:Problem Summary:
What is changed and how it works?
The
SessionStatsCollector
is used by each session to collect its statistics changes, and merge the change with feedback and dump to TiKV.All stats collector are linked together in the statistics handler which is a global object. As it's referenced, Go GC can not release them and that result in the memory leak.
What's Changed:
Do not allocate the
SessionStatsCollector
for the session object in HTTP handler.How it Works:
Related changes
Check List
Tests
Release note