Closed songliwei2014 closed 7 years ago
现在在生产环境中使用你的driver, 发现cpu占用太高,内存占用太大。 cpu耗时的地方基本就在你的driver 里面。 内存占用基本就是 flat flat% sum% cum cum% 273.31MB 67.52% 67.52% 273.31MB 67.52% bytes.makeSlice 58.51MB 14.45% 81.98% 58.51MB 14.45% runtime.rawstringtmp 45.29MB 11.19% 93.16% 103.80MB 25.64% github.com/ssdb/gossdb/ssdb.(*Client).parse
好像不是你的问题,是ssdb作者写的driver 好像有问。
你好,能不能提供一下并发数量,以及平均每个cmd的kb数,方便我测试一下。
看你发的图,应该是在使用MultiHgetSliceArray时下载的数据量比较大,建议你减小一次请求量,改成多次获取,再合并试一下,也许会好一些。ssdb在一次获取的数据里比较多时,会比较慢。
已解决该问题,ssdb的连接在解析大数组时性能会比较差,已将连接重写并移植到gossdb里。
我hashmap单个数据项不大,但是整个hashmap比较大,单个数据项不超过200字节,整个hashmap可能有2000-5000项。整个大小应该只有1MB 左右,你修改完之后在线上验证过来吗?
我本机测试的,用pprof也分析过数据,速度比原来提高不是一个数量级。原来是下载量如果太多会导致buf重复加载,所以内存和cpu的压力都比较大。