达梦8 内存泄漏泄漏原因分析之一

在实际使用过程中经常发现DMSERVER进程在OS中的内存占用使用远远超过实际情况。原因有很多,下面列出其中一种:

测试库版本

复制代码
SQL> select id_code;

LINEID     ID_CODE
---------- -----------------------------------
1          --03134283938-20221019-172201-20018

测试步骤如下:

复制代码
#查看dmserver在OS上的内存占用
SQL> host ps aux | grep dmserver | grep -v grep
dmdba    20398 16.8 24.0 3518472 1938328 pts/2 Sl+  11:21   0:58 dmserver path=dm.ini

#向测试表插入数据,模拟排序操作
SQL> insert into d select * from a order by 2;
affect rows 80000000
used time: 00:01:12.785. Execute id is 602.

#查看dmserver在OS上的内存占用
SQL> host ps aux | grep dmserver | grep -v grep
dmdba    20398 24.7 42.8 5289780 3457352 pts/2 Sl+  11:21   1:48 dmserver path=dm.ini

#退出会话
SQL> exit

#查看dmserver在OS上的内存占用,又回到了测试前
[dmdba@node1 ~]$ ps aux | grep dmserver | grep -v grep
dmdba    20398 24.6 23.8 3518520 1927272 pts/2 Sl+  11:21   1:51 dmserver path=dm.ini

以上插入SQL执行的过程中查询V$MEM_POOL视图,DATA_SIZE字段的值不断增长,SQL语句执行完毕后,DATA_SIZE增加的部分消灭。但从上图中可见,但只有会话退出后在OS上的显示才回到测试前。分析原因如下:

用lsof命令搜索上述会话的thrd_id,显示打开了许多文件。会话退出后相关资源才完全释放。

相关推荐
2401_833033622 分钟前
html如何修改备注
jvm·数据库·python
2401_831419444 分钟前
C#怎么实现批量邮件发送 C#如何用MailKit批量发送个性化邮件和HTML格式邮件【网络】
jvm·数据库·python
2301_781571426 分钟前
golang如何实现微服务监控告警_golang微服务监控告警实现方法
jvm·数据库·python
zhaoyong2226 分钟前
Redis怎样简便地操作不同数据结构
jvm·数据库·python
m0_740796367 分钟前
MySQL中如何利用TAN或SIN计算三角函数_MySQL数学函数
jvm·数据库·python
weixin_444012937 分钟前
Layui上传组件upload怎么监听大文件上传的百分比进度条
jvm·数据库·python
2301_781571428 分钟前
CSS如何实现按钮颜色的流光特效_利用渐变背景定位属性
jvm·数据库·python
m0_495496419 分钟前
Python Web应用负载均衡方案_结合Nginx权重设置实现高可用
jvm·数据库·python
weixin_4440129310 分钟前
uni-app怎么接极光推送 uni-app消息推送App端接入【教程】
jvm·数据库·python
夏恪11 分钟前
mysql如何配置隔离级别_mysql transaction_isolation设置
jvm·数据库·python