背景:我正在搜索引擎,并开发一个新功能,该功能将创建一个新的线程池(32个线程)。符合某些规则的查询将由新线程池执行。同时,旧的线程池(也有32个线程)仍然可以工作,并且将执行其他查询。
问题:我们正在使用Jemalloc进行内存分配。当我们启用新功能和新线程池开始工作时,Jemalloc消耗的内存在4〜5小时内从80GB增加到95GB,然后在2小时内下降。我看过jemalloc的统计数字,增加的内存来自"统计数据"(由Jemalloc分配)。"统计"and&quot" stats.分配给(我们的服务消费)保持不变,这意味着增加的内存可能来自内存碎片。
这是"属性"的定义。and&quotss.act.actrive&quot:
- jemalloc映射字节:分配器(Jemalloc)映射的活动块中的字节总数(默认为4MB)。这是块大小的倍数,并且比Jemalloc活跃字节大。这不包括无活动的块,即使是那些包含未使用的脏页的块,这意味着此之间没有严格的订购。
- jemalloc主动字节:由应用程序分配的活动页面中的字节总数(默认值为4 kb)(我们的服务)。这是页面大小的倍数,大于或等于统计数据。这不包括统计信息。
- jemalloc分配了字节:应用程序分配的字节总数(我们的服务)。
由于内存增加太大(从80GB到95GB),我们想在启用我们的功能时减轻内存影响,您对上述问题有任何建议(Jemalloc的内存片段)吗?谢谢!
我试图禁用TCACHE,但是在启用新功能时,内存仍然会增加。
内存的图形更改
您可能有一些没有被大量利用的竞技场,因此某些领域的分裂化很高,而其他领域则可以接受。尝试通过NARENAS选项减少竞技场的数量,以便在稳态操作期间没有闲置的竞技场。