gbproxy: Lifetime of a tracked MS (struct gbproxy_link_info)
I am looking at a GBproxy process with virtual memory size of 291m and resident size of 187m. We really need a way to dump the talloc report through the VTY. I have captured a leak dump with strace and can make it available.
#1 Updated by zecke about 2 years ago
I wrote a simple script to convert the "write" of the strace (already filtered to be only the leak dump) to make a print of it
import sys with open("talloc_report_strace_gbproxy.txt", "r") as f: for line in f: sys.stdout.write(line.split('"').replace("\\n", "\n"))
The dump might include sensitive information so let me try to abstract it.
$ python strace_to_print.py | grep process_bssgp_ul | wc -l 74428 $ python strace_to_print.py | grep link_info | wc -l 72865
I don't think there are that many active users right now and in fact.. looking at
show gbproxy links ... TLLI 9308c247, IMSI (none), AGE 6547738, STORED 3
So we have a 75 days old entry.. that has three messages queued. It is unlikely that it will get into another state after that.
#2 Updated by zecke about 2 years ago
- Subject changed from gbproxy: Memory leak in the gbproxy? to gbproxy: Lifetime of a tracked MS (struct gbproxy_link_info)
- The config has
link-list max-length 2000but not max-age. The max-length is applied per peer and not globally, so not many peers run into this limit.
- gbproxy_remove_stale_link_infos is only called when a link-info is updated, e.g. on a stale/idle peer this will not be updated (after a quick look).