Dapr 0.11.3
Note: this hotfix is only required for the applications which uses Dapr actor building block.
Summary
Actor load tests were run to evaluate the performance and relibility. The test discovered these issues that cause memory leaks:
- Frequent reconnections to placement service when app http endpoint is unresponsive intermitently under high load scneario
- Memory increases from http middleware when recording request metric
- No RSS(Resident Set Size) memory size reclaim in Kubernetes even after actors are deactivated
Regarding RSS memory size issue (bug) - Daprd stores the activated actors in a sync.Map and deletes actors when these actors are deactivated. Therefore, RSS memory for Darpd containers will be increased when actor is activated, but the memory will not be decreased even after the actors are deactivated. Users will therefore still see the same amount of RSS memory usage because Go uses MADV_FREE to free memory in linux. The memory is reclaimed only when it hits memory limit. We recommend that users consider setting dapr.io/sidecar-memory-limit
and dapr.io/sidecar-memory-request
to limit the size of Dapr sidecar memory usage. Please refer to this article to understand the memory usage of Go application.