家电维修网

 找回密码
 注册
查看: 1263|回复: 3

[分享] 发现最耗内存的就是使用NFS的应用程序

[复制链接]

中级会员

Rank: 2

回帖
0
主题
20
积分
171
在线时间
6 小时
注册时间
2014-4-8
最后登录
2014-6-18
发表于 2014-4-23 21:36 | 显示全部楼层 |阅读模式
一、现象
运行了使用NFS文件系统的应用程序后,内存缓慢泄漏,
最后导致整个服务器的内存全部耗尽,系统调起多个pdflush进程,并占到CPU的99%,
这时整个系统系统变得处理速度极慢,那怕是敲个命令都慢得不行;

二、检查流程
1. 查看系统最耗内存的进程
# top -m
Tasks: 428 total,   1 running, 427 sleeping,   0 stopped,   0 zombie
Cpu(s):  5.4%us,  0.1%sy,  0.0%ni, 94.4%id,  0.0%wa,  0.0%hi,  0.0%si,  0.0%st
Mem:  32915200k total,  1576064k used, 31339136k free,   284588k buffers
Swap:  8385920k total,        0k used,  8385920k free,   317440k cached


  PID USER      PR  NI  VIRT  RES  SHR S %CPU %MEM    TIME+  COMMAND                                                                                       
14099 root      15   0  144m  96m 2160 S  0.0  0.3 309:57.67 your_program

发现最耗内存的就是使用NFS的应用程序;

2. 查看进程占用的内存
# pmap 进程号
...
00007fffbebfd000     12K r-x--    [ anon ]
ffffffffff600000   8192K -----    [ anon ]
total           154604K

但应用程序实际使用的内存并不多,这时就开始怀疑是系统的原因;

3. 系统内存查看
每两秒统计一次内存使用情况,看内存的使用速度
# vmstat 2
procs -----------memory---------- ---swap-- -----io---- --system-- -----cpu------
r  b   swpd   free   buff  cache   si   so    bi    bo   in   cs us sy id wa st
0  0      0 31317192 284620 337800    0    0     0     0    0    1  5  0 94  0  0
...

接着看到底是什么占用了这么多内存,win xp sp3纯净版 iso owds.ys168.com/先看内核空间的
# vmstat -m
Cache                       Num  Total   Size  Pages
nfs_direct_cache              0      0    136     28
nfs_write_data              189    207    832      9
nfs_read_data                32     40    768      5
nfs_inode_cache          1027389 1027389   1032      3
nfs_page                    304    360    128     30
...
kmem_cache                  144    144   2688      1

发现了是nfs_inode_cache异常,占用了大量的内存;

3. 使用slabtop命令查看内核slab 缓冲区信息
# slabtop -s c | head
Active / Total Objects (% used)    : 3318152 / 3333777 (99.5%)
Active / Total Slabs (% used)      : 561213 / 561243 (100.0%)
Active / Total Caches (% used)     : 92 / 145 (63.4%)
Active / Total Size (% used)       : 1848724.93K / 1851100.14K (99.9%)
Minimum / Average / Maximum Object : 0.02K / 0.55K / 128.00K


  OBJS ACTIVE  USE OBJ SIZE  SLABS OBJ/SLAB CACHE SIZE NAME                  
1014219 1014219 100%    1.01K 338073        3   1352292K nfs_inode_cache

1021475 1021475 100%    0.52K 145925        7    583700K radix_tree_node
#

我们看到 nfs_inode_cache 占用了大概 1.3GB,
在正常情况下,nfs_inode_cache 应该 30 MiB 左右。所以 nfs_inode_cache 在这里是异常的。

北网版主

维修专家

Rank: 18Rank: 18Rank: 18Rank: 18Rank: 18

回帖
2874
主题
14
积分
5763
在线时间
460 小时
注册时间
2005-4-22
最后登录
2025-2-20

最佳人气勋章论坛贡献勋章资料贡献勋章论坛功臣勋章杰出贡献勋章优秀版主勋章版主勋章

QQ
发表于 2014-4-23 23:15 | 显示全部楼层
具体怎么解决呢?楼主给个办法
回复 支持 反对

使用道具 举报

中级工程师

Rank: 10Rank: 10Rank: 10

回帖
1035
主题
0
积分
1940
在线时间
282 小时
注册时间
2012-12-19
最后登录
2014-8-6
发表于 2014-4-24 00:35 | 显示全部楼层
非常感谢楼主分享
回复 支持 反对

使用道具 举报

VIP会员

Rank: 12Rank: 12Rank: 12

回帖
3988
主题
5
积分
6107
在线时间
1487 小时
注册时间
2013-6-9
最后登录
2016-7-29

互助达人在线王勋章热心会员常驻会员

发表于 2014-4-24 09:31 | 显示全部楼层
太专业了,维修好像还没有用到这些知识。
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

QQ|门户地图|网站地图|家电维修|手机版|家电维修技术论坛 ( 蜀ICP备14030498号-16 川公网安备51102502000162号 )

GMT+8, 2025-5-1 05:21

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表