学堂 学堂 学堂公众号手机端

主机内存耗尽导致mongodb内存性能严重下降#yyds干货盘点#

lewis 4年前 (2021-02-06) 阅读数 4 #技术

2022年1月4日,客户反馈其一套mongodb数据库做批量插入时,批量插入10000条数据时可以正常执行,但是批量删除数据100000条时就出现卡死的情况。进过排查,发现是主机内存耗尽导致mongodb数据库性能严重下降,调整过主机内存后批量删除100000条数据效率恢复正常。

一、问题现象

如图所示,批量插入10000条数据时大约需要130毫秒的时间。


批量删除100000条数据时大约需要10200毫秒的时间。

二、问题分析

客户配合提供的mongodb 服务器CPU使用情况如下,经过观察CPU使用没有明显的波动:

mongodb 服务器磁盘IO使用情况如下,操作系统shell执行iostat -xmt 2 1000发现,数据库服务器的磁盘基本没有IO压力,进一步排除磁盘IO过载的影响。

mongodb 服务器内存使用情况如下,通过监控观察,内存使用99%,并且swap空间使用了5%左右,如果主机开始使用换页空间,mongodb数据库的性能将严重下降:

通过主机top命令,观察主机上消耗内存的主要进程,发现主机内存一共32G,而mongod进程占用了近28G,并且换页空间swap已经使用了2G多,因此,可以判断是主机内存被mongod耗尽导致mongo数据库性能下降。

进一步排查mongod的配置文件,发现没有对mongo数据库做内存使用量的限制,因此可以判断:由于mongodb没有限制内存使用,较大业务情况下,主机内存被耗尽并使用2G多的换页空间,进一步导致mongo数据库性能下降。

三、问题处理

根据客户目前mongodb数据库占用内存量和主机内存总量情况,建议客户:

1. 在mongodb的配置文件中增加内存限制参数cacheSizeGB=16g;

2. 对主机内存进行扩容,扩容到40G以上

最终,客户将主机内存调整到48G,mongodb数据库在10万条的批量处理下效率恢复正常。

四、问题总结

mongodb数据库比较特别,是服务器上消耗内存的大户,不做内存限制的情况下,会耗尽主机内存,严重情况导致主机重启,因此,在mongodb数据库配置中要对其内存使用量做限制。

版权声明

本文仅代表作者观点,不代表博信信息网立场。

热门