QQ登录

只需一步,快速开始

 找回密码
 注册

QQ登录

只需一步,快速开始

查看: 2505|回复: 11

linux内存使用量高速增长中,用top看不到大量调用内存。

[复制链接]
发表于 2004-11-24 10:41:38 | 显示全部楼层 |阅读模式
我的服务器有3G内存,我用top和free看现在已经用了2G,但是我在top用内存使用率排列,看到每个程序用的内存都很小,程序所用内存综合不可能达到系统显示的2G内存,有没有办法查到我这2G内存中的大部分用到哪里去了呢?

[code:1][root@game root]# free
             total       used       free     shared    buffers     cached
Mem:       3094720    2022660    1072060          0     167864    1370128
-/+ buffers/cache:     484668    2610052
Swap:      2040212          0    2040212


10:20:34  up 23:24,  2 users,  load average: 0.07, 0.02, 0.00
63 processes: 62 sleeping, 1 running, 0 zombie, 0 stopped
CPU states:  cpu    user    nice  system    irq  softirq  iowait    idle
           total    0.9%    0.0%    0.1%   0.0%     0.0%    0.0%   98.8%
           cpu00    0.8%    0.0%    0.2%   0.0%     0.0%    0.0%   99.0%
           cpu01    1.8%    0.0%    0.0%   0.0%     0.0%    0.0%   98.2%
           cpu02    0.2%    0.0%    0.2%   0.0%     0.0%    0.2%   99.4%
           cpu03    1.0%    0.0%    0.0%   0.0%     0.2%    0.0%   98.8%
Mem:  3094720k av, 2022604k used, 1072116k free,       0k shrd,  167864k buff
       420976k active,            1294364k inactive
Swap: 2040212k av,       0k used, 2040212k free                 1370068k cached

  PID USER     PRI  NI  SIZE  RSS SHARE STAT %CPU %MEM   TIME CPU COMMAND
3346 game      24   0 44824  43M 12268 S     0.0  1.4   4:08   2 java
3005 game      24   0 42292  41M 13024 S     0.2  1.3  35:24   2 java
2833 root      17   0 41868  40M 13052 S     0.0  1.3   4:59   2 java
3116 game      24   0 41684  40M 12176 S     0.5  1.3  51:05   2 java
3236 game      25   0 34176  33M 12096 S     0.0  1.1   2:21   1 java
2744 gdm       15   0 21452  20M  9524 S     0.0  0.6   1:09   2 gdmgreeter
3455 game      25   0 17296  16M  7624 S     0.0  0.5   2:14   3 java
2735 root      15   0 17108 8656  2360 S     0.0  0.2   0:36   3 X
2734 root      15   0  3716 3716  3008 S     0.0  0.1   0:00   3 gdm-binary
2670 xfs       15   0  3392 3392   892 S     0.0  0.1   0:00   0 xfs
2699 root      15   0  3280 3280  2644 S     0.0  0.1   0:00   3 gdm-binary
2597 ntp       15   0  2568 2568  2204 S     0.0  0.0   0:04   1 ntpd
29829 root      15   0  2112 2112  1724 S     0.0  0.0   0:00   0 sshd
2570 root      16   0  1532 1532  1292 S     0.0  0.0   0:03   0 sshd
29831 root      21   0  1372 1372  1136 S     0.0  0.0   0:00   1 bash
29876 root      15   0  1372 1372  1136 S     0.0  0.0   0:00   2 bash
29875 root      15   0  1244 1244   912 R     0.0  0.0   0:00   1 top
3969 root      25   0  1200 1200  1008 S     0.0  0.0   0:00   0 sh
2623 bin       15   0  1036 1036   604 S     0.0  0.0   0:00   1 cannaserver
3115 game      18   0  1028 1028   908 S     0.0  0.0   0:00   3 sh
3235 game      18   0  1028 1028   908 S     0.0  0.0   0:00   1 sh
3345 game      15   0  1024 1024   908 S     0.0  0.0   0:00   3 sh
3454 game      19   0  1024 1024   908 S     0.0  0.0   0:00   1 sh
[/code:1]
发表于 2004-11-24 11:58:28 | 显示全部楼层
[quote=lues]63 processes: 62 sleeping, 1 running, 0 zombie, 0 stopped[/quote]
你这才显示 23 个 processes 嘛。下面还有40个呢~~

按 M 看看。
回复

使用道具 举报

 楼主| 发表于 2004-11-24 14:11:03 | 显示全部楼层
[quote:091b4e19db="dannycat"]63 processes: 62 sleeping, 1 running, 0 zombie, 0 stopped
你这才显示 23 个 processes 嘛。下面还有40个呢~~

按 M 看看。[/quote]


我的这个top就是按M的结果,虽然只显示了23 个 processes ,但是已经是占用内存最多的processes了,从这23 个 processes看,系统内存占用的很少,这和系统内存已经用了2G的情况很不相符,下面虽然还有40个,但是我想占用的内存应该很小,因为我的这个linux基本上没有启动系统自带的大负荷服务。我现在关键就是要找出哪个程序导致内存不断增长。我已激活的linux系统服务如下

[code:1][root@game root]# chkconfig --list | grep 5:启用
microcode_ctl   0:关闭  1:关闭  2:启用  3:启用  4:启用  5:启用  6:关闭
gpm             0:关闭  1:关闭  2:启用  3:启用  4:启用  5:启用  6:关闭
kudzu           0:关闭  1:关闭  2:关闭  3:启用  4:启用  5:启用  6:关闭
syslog          0:关闭  1:关闭  2:启用  3:启用  4:启用  5:启用  6:关闭
netfs           0:关闭  1:关闭  2:关闭  3:启用  4:启用  5:启用  6:关闭
network         0:关闭  1:关闭  2:启用  3:启用  4:启用  5:启用  6:关闭
random          0:关闭  1:关闭  2:启用  3:启用  4:启用  5:启用  6:关闭
rawdevices      0:关闭  1:关闭  2:关闭  3:启用  4:启用  5:启用  6:关闭
keytable        0:关闭  1:启用  2:启用  3:启用  4:启用  5:启用  6:关闭
mdmonitor       0:关闭  1:关闭  2:启用  3:启用  4:启用  5:启用  6:关闭
atd             0:关闭  1:关闭  2:关闭  3:启用  4:启用  5:启用  6:关闭
apmd            0:关闭  1:关闭  2:启用  3:启用  4:启用  5:启用  6:关闭
iptables        0:关闭  1:关闭  2:启用  3:启用  4:启用  5:启用  6:关闭
irqbalance      0:关闭  1:关闭  2:关闭  3:启用  4:启用  5:启用  6:关闭
autofs          0:关闭  1:关闭  2:关闭  3:启用  4:启用  5:启用  6:关闭
sshd            0:关闭  1:关闭  2:启用  3:启用  4:启用  5:启用  6:关闭
portmap         0:关闭  1:关闭  2:关闭  3:启用  4:启用  5:启用  6:关闭
nfslock         0:关闭  1:关闭  2:关闭  3:启用  4:启用  5:启用  6:关闭
rhnsd           0:关闭  1:关闭  2:关闭  3:启用  4:启用  5:启用  6:关闭
crond           0:关闭  1:关闭  2:启用  3:启用  4:启用  5:启用  6:关闭
xinetd          0:关闭  1:关闭  2:关闭  3:启用  4:启用  5:启用  6:关闭
hpoj            0:关闭  1:关闭  2:启用  3:启用  4:启用  5:启用  6:关闭
xfs             0:关闭  1:关闭  2:启用  3:启用  4:启用  5:启用  6:关闭
ntpd            0:关闭  1:关闭  2:关闭  3:启用  4:关闭  5:启用  6:关闭
canna           0:关闭  1:关闭  2:启用  3:启用  4:启用  5:启用  6:关闭
arptables_jf    0:关闭  1:关闭  2:启用  3:启用  4:启用  5:启用  6:关闭

基于 xinetd 的服务:
        krb5-telnet:    关闭
        rsync:  关闭
        eklogin:        关闭
        gssftp: 关闭
        klogin: 关闭
        chargen-udp:    关闭
        kshell: 关闭
        chargen:        关闭
        daytime-udp:    关闭
        daytime:        关闭
        echo-udp:       关闭
        echo:   关闭
        services:       关闭
        imap:   关闭
        sgi_fam:        启用
        time:   关闭
        time-udp:       关闭
        cups-lpd:       关闭
        tftp:   关闭
        ktalk:  关闭
        amanda: 关闭
        imaps:  关闭
        ipop2:  关闭
        ipop3:  关闭
        pop3s:  关闭
        amandaidx:      关闭
        amidxtape:      关闭、[/code:1]

此外,dannycat,我是不是重复发贴了?我昨天晚上发了一个,但是不知道是被删除了还是没有发出来,今天早晨来一看,我的帖子没了,如果重复发贴了,我向大家表示歉意
回复

使用道具 举报

 楼主| 发表于 2004-11-24 15:28:25 | 显示全部楼层
swap中的cached 有 1370068k ,我的内存现在被大量调用(2022604k used),和这个有没有关系呢?
回复

使用道具 举报

发表于 2004-11-24 20:17:54 | 显示全部楼层
内存本来就是那来用的
linux把内存分成了两份了 一不分是进程所耗的 另一部分用做了硬盘缓存的
回复

使用道具 举报

 楼主| 发表于 2004-11-24 22:38:25 | 显示全部楼层
我现在的3G内存都快耗光了,我非常担心,再仔细看了一下top,发现
Swap: 2040212k av,       0k used, 2040212k free                 1370068k cached

swap的空间的利用率居然是0k。。。     

我再看了一下我的linux的分区,一切正常,但是为什么系统没有利用swap的空间呢?

[code:1][root@game root]# df -h
文件系统              容量  已用 可用 已用% 挂载点
/dev/sda3             116G   26G   85G  24% /
/dev/sda2              18G  3.2G   14G  20% /backup
/dev/sda1              99M   18M   76M  20% /boot
none                  1.5G     0  1.5G   0% /dev/shm
[root@game root]# fdisk -l

Disk /dev/sda: 146.6 GB, 146673192960 bytes
255 heads, 63 sectors/track, 17832 cylinders
Units = cylinders of 16065 * 512 = 8225280 bytes

   Device Boot    Start       End    Blocks   Id  System
/dev/sda1   *         1        13    104391   83  Linux
/dev/sda2         15565     17832  18217710   83  Linux
/dev/sda3            14     15310 122873152+  83  Linux
/dev/sda4         15311     15564   2040255    f  Win95 Ext'd (LBA)
/dev/sda5         15311     15564   2040223+  82  Linux swap

Partition table entries are not in disk order[/code:1]
回复

使用道具 举报

发表于 2004-11-24 22:49:37 | 显示全部楼层
你的服务器状态很不错呀

什么问题都没有,Linux 就是这样利用内存的,何况你还有那么多个 java 进程。

不要以 Windows 的思路来对待 Linux,还想内存整理一下?

Linux 认为内存是最珍贵的系统资源,因此要充分利用。想让它用 swap, 要不你开几个 X 试试?
回复

使用道具 举报

 楼主| 发表于 2004-11-24 23:00:14 | 显示全部楼层
,dannycat,偶的java有6个,确实有点多,偶刚刚也查了一下资料,也都是说linux在使用swap之前会将系统内存作为Cache,但是我这里有个实际的问题要解决,我的服务器内存一旦快达到3G的峰值,系统服务就会很慢,在我们的实际测试中,访问速度极慢,所以内存的使用最好控制在一定范围内 ,我的一个历史top部分信息如下:
[code:1]Mem:  2061592k av, 2039756k used,   21836k free,       0k shrd,  152092k buff
                   1209380k actv,      24k in_d,   33416k in_c
Swap: 2040212k av,       0k used, 2040212k free                 1397632k cached [/code:1]

在这个top中swap空间也是没有利用,但是系统服务访问就已经很慢了,几乎就不能使用,所以还是有可能要释放一下内存

还有一点疑问,linux将内存作为cache,但是为什么在top中是处于swap的计算中呢?
回复

使用道具 举报

发表于 2004-11-24 23:20:11 | 显示全部楼层
6 个 Java 进程不算多啦,偶的 512M 内存的服务器上还动不动就 20-40 个 java 进程呢,最高时 swap 能占到近700M,也不见响应速度慢呀。

所以我想你的服务器慢跟内存占用应该没有关系,另找一下原因吧。

[quote:3ef555ff7f="lues"]... 为什么在top中是处于swap的计算中呢?[/quote] 什么意思?
回复

使用道具 举报

 楼主| 发表于 2004-11-24 23:29:23 | 显示全部楼层
dannycat, ,多谢多谢,我理解你的意思是如果系统的swap还没有利用到系统就变慢,那就不是linux系统的原因, 谢谢,那我再去查一下有没有别的问题

[quote:127dbdca55="dannycat"]6 个 Java 进程不算多啦,偶的 512M 内存的服务器上还动不动就 20-40 个 java 进程呢,最高时 swap 能占到近700M,也不见响应速度慢呀。

所以我想你的服务器慢跟内存占用应该没有关系,另找一下原因吧。

[quote:127dbdca55="lues"]... 为什么在top中是处于swap的计算中呢?[/quote] 什么意思?[/quote]
哦哦,就是top中的

[code:1]Mem:  2061592k av, 2039756k used,   21836k free,       0k shrd,  152092k buff
                   1209380k actv,      24k in_d,   33416k in_c
Swap: 2040212k av,       0k used, 2040212k free                 1397632k cached[/code:1]

1397632k cached 给列到Swap: 参数中了

free是列在Mem中
[code:1][root@game root]# free
             total       used       free     shared    buffers     cached
Mem:       3094720    2762888     331832          0     168884    2092548
-/+ buffers/cache:     501456    2593264
Swap:      2040212          0    2040212 [/code:1]


另外,我想问一下您的java用户访问量有多大呢?
回复

使用道具 举报

发表于 2004-11-25 18:43:10 | 显示全部楼层
linux本来就会用大量的内存,一部分是用来做缓冲的,内存用光了才会用虚拟内存。
回复

使用道具 举报

发表于 2004-11-28 19:18:25 | 显示全部楼层
许多私服的机器配置就是这么好。     
回复

使用道具 举报

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

本版积分规则

GMT+8, 2024-11-6 23:27 , Processed in 0.051164 second(s), 15 queries .

© 2021 Powered by Discuz! X3.5.

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