意见箱
恒创运营部门将仔细参阅您的意见和建议,必要时将通过预留邮箱与您保持联络。感谢您的支持!
意见/建议
提交建议

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

来源:恒创科技 编辑:恒创科技编辑部
2023-12-06 02:08:59

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

一、问题现象

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


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

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

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

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

二、问题分析

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

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

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

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

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

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

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

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

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

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

三、问题处理

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

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

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

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

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

四、问题总结

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

上一篇: mysql直接拷贝data目录下数据库源文件还原数据库方法 下一篇: oracle sga设置过大导致Oracle实例无法启动