更新时间:2023-03-31 GMT+08:00
分享

内存使用率高问题排查

使用文档数据库时,当实例的内存使用率达到90%,SWAP利用率超过5%时,此时认为实例的内存已达瓶颈,会导致系统响应慢,甚至出现内存溢出(OOM)的隐患。

本章节主要介绍排查解决实例内存使用率高的问题。

查看内存使用情况

您可以通过查看监控指标(内存使用率和SWAP利用率),了解实例内存的使用情况。

具体操作请参见查看监控指标

图1 查看内存使用情况

MongoDB的缓存默认会预留50%的内存,所以即使在实例空载状态下,监控指标仍然会显示内存占用50%,是正常现象,可以忽略。

解决方案

  1. 控制并发连接数。连接数据库时,需要计算业务一共有多少个客户端, 每个客户端配置的连接池大小是多少,总的连接数不宜超过当前实例能承受的最大连接数的80%。连接太多会导致内存和多线程上下文的开销增加,影响请求处理延时。
  2. 建议配置连接池,连接池最大不要超过200。
  3. 降低单次请求的内存开销,例如通过创建索引减少集合的扫描、内存排序等。
  4. 在连接数合适的情况下内存占⽤持续增⾼,建议升级内存配置,避免可能存在内存溢出和大量清除缓存而导致系统性能急剧下降。

相关文档