Skip to content
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

内存分析问题 #352

Open
Yordroid opened this issue Oct 18, 2024 · 14 comments
Open

内存分析问题 #352

Yordroid opened this issue Oct 18, 2024 · 14 comments

Comments

@Yordroid
Copy link

如果查找线上内存占用过高问题,能否看到每个协程的堆栈信息?

@huskar-t
Copy link
Collaborator

@Yordroid 默认启用了 pprof 可以通过接口 http://ip:port/debug/pprof 来进行排查,要关闭 pprof 可以修改配置文件 debug = false

@Yordroid
Copy link
Author

Yordroid commented Oct 23, 2024

@Yordroid 默认启用了 pprof 可以通过接口 http://ip:port/debug/pprof 来进行排查,要关闭 pprof 可以修改配置文件 debug = false

这个是pprof 文件
pprof.taosadapter.alloc_objects.alloc_space.inuse_objects.inuse_space.001.pb.gz

这个是线上的taosadapter服务,占用6.4G,每天都上涨100M左右
image

麻烦执行帮忙分析一下内存分配情况,我自己没看出哪里有问题
go tool pprof --http=换成本地ip:8081 .\pprof.taosadapter.alloc_objects.alloc_space.inuse_objects.inuse_space.001.pb.gz

@huskar-t
Copy link
Collaborator

需要 heap 而不是 allocs

@Yordroid
Copy link
Author

需要 heap 而不是 allocs

go tool pprof http://127.0.0.1:6041/debug/pprof/heap >head.current 用这条命令保存下来的,需要怎么采集?

@huskar-t
Copy link
Collaborator

可以直接下载 wget http://127.0.0.1:6041/debug/pprof/heap

@Yordroid
Copy link
Author

可以直接下载 wget http://127.0.0.1:6041/debug/pprof/heap

debug.zip
解压出来 就看到了

@huskar-t
Copy link
Collaborator

可能使用老版本 jdbc 并且重复创建和关闭连接。建议升级 TDengine 到新版本,同时 jdbc 连接器也升级到最新

@Yordroid
Copy link
Author

可能使用老版本 jdbc 并且重复创建和关闭连接。建议升级 TDengine 到新版本,同时 jdbc 连接器也升级到最新

我client是用go , tdengine 是3.2.3.0了

@Yordroid
Copy link
Author

可能使用老版本 jdbc 并且重复创建和关闭连接。建议升级 TDengine 到新版本,同时 jdbc 连接器也升级到最新

有分析出啥问题不?

@Yordroid
Copy link
Author

题不?

我之前的写法是每入库一次创建一次连接,现在改成不断开,一直入库了,不知道有没有影响

@huskar-t
Copy link
Collaborator

这个问题已经修复了,连接要尽量复用,不要频繁创建关闭,建议使用 sql 方式替代 stmt

@Yordroid
Copy link
Author

stmt 不是性能更好吗?我看官方都比较推荐,频繁打开关闭是有内存泄露的可能吗?

@huskar-t
Copy link
Collaborator

从堆上内存看有很多 stmt 对象,请检查一下是否正确调用了 stmt.Close

@Yordroid
Copy link
Author

从堆上内存看有很多 stmt 对象,请检查一下是否正确调用了 stmt.Close

代码是defer stmt.Close的应该不会漏,我重构了,加上连接池了,我再观察一下

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

2 participants