Debian 6.0.3、Freeradius 2.1.10、PostgreSQL 8.4 高内存使用率

Debian 6.0.3、Freeradius 2.1.10、PostgreSQL 8.4 高内存使用率

我们在 VMware 服务器上运行 Freeradius 服务器,内存使用率很高,我正在尝试排除故障。我们在 radius 服务器的同一台服务器上运行 PostgreSQL 8.4 作为数据库后端。发现此问题是因为我们正在使用 OpenNMS 监控服务器。我们发现它已达到内存限制并开始不时进行交换。

这是内存使用情况:

free -m
               total       used       free     shared    buffers     cached
  Mem:          2013       1972         41          0        322        284
  -/+ buffers/cache:       1364        648
  Swap:          382          0        382

如果我执行 top -d1 并按 m 按内存使用情况对它们进行排序:

 top - 10:37:40 up 6 days,  2:20,  2 users,  load average: 0.01, 0.02, 0.00
  Tasks: 102 total,   1 running, 101 sleeping,   0 stopped,   0 zombie
  Cpu(s):  2.0%us,  1.0%sy,  0.0%ni, 96.1%id,  1.0%wa,  0.0%hi,  0.0%si,  0.0%st

    PID USER      PR  NI  VIRT  RES  SHR S %CPU %MEM    TIME+  COMMAND
   7914 postgres  20   0  102m  22m  21m S  1.0  1.1   0:06.44 postgres
   8833 root      20   0 19064 1336 1000 R  1.0  0.1   0:00.03 top
      1 root      20   0  8352  808  676 S  0.0  0.0   0:04.07 init
      2 root      20   0     0    0    0 S  0.0  0.0   0:00.00 kthreadd
      3 root      RT   0     0    0    0 S  0.0  0.0   0:00.00 migration/0
      4 root      20   0     0    0    0 S  0.0  0.0   0:00.39 ksoftirqd/0
      5 root      RT   0     0    0    0 S  0.0  0.0   0:00.00 watchdog/0
      6 root      20   0     0    0    0 S  0.0  0.0   0:03.40 events/0
      7 root      20   0     0    0    0 S  0.0  0.0   0:00.00 cpuset
      8 root      20   0     0    0    0 S  0.0  0.0   0:00.00 khelper
      9 root      20   0     0    0    0 S  0.0  0.0   0:00.00 netns
     10 root      20   0     0    0    0 S  0.0  0.0   0:00.00 async/mgr
     11 root      20   0     0    0    0 S  0.0  0.0   0:00.00 pm
     12 root      20   0     0    0    0 S  0.0  0.0   0:00.25 sync_supers
     13 root      20   0     0    0    0 S  0.0  0.0   0:00.43 bdi-default
     14 root      20   0     0    0    0 S  0.0  0.0   0:00.00 kintegrityd/0
     15 root      20   0     0    0    0 S  0.0  0.0   0:00.70 kblockd/0

HTOP 透露了更多关于儿童过程的信息: htop 图片

如果我查看带有子进程的进程,我可以看到 postgresql 似乎正在占用所有的内存:

~:ps auxf
  USER       PID %CPU %MEM    VSZ   RSS TTY      STAT START   TIME COMMAND
  root         2  0.0  0.0      0     0 ?        S    Nov03   0:00 [kthreadd]
  root         3  0.0  0.0      0     0 ?        S    Nov03   0:00  \_ [migration/0]
  root         4  0.0  0.0      0     0 ?        S    Nov03   0:00  \_ [ksoftirqd/0]
  root         5  0.0  0.0      0     0 ?        S    Nov03   0:00  \_ [watchdog/0]
  root         6  0.0  0.0      0     0 ?        S    Nov03   0:03  \_ [events/0]
  root         7  0.0  0.0      0     0 ?        S    Nov03   0:00  \_ [cpuset]
  root         8  0.0  0.0      0     0 ?        S    Nov03   0:00  \_ [khelper]
  root         9  0.0  0.0      0     0 ?        S    Nov03   0:00  \_ [netns]
  root        10  0.0  0.0      0     0 ?        S    Nov03   0:00  \_ [async/mgr]
  root        11  0.0  0.0      0     0 ?        S    Nov03   0:00  \_ [pm]
  root        12  0.0  0.0      0     0 ?        S    Nov03   0:00  \_ [sync_supers]
  root        13  0.0  0.0      0     0 ?        S    Nov03   0:00  \_ [bdi-default]
  root        14  0.0  0.0      0     0 ?        S    Nov03   0:00  \_ [kintegrityd/0]
  root        15  0.0  0.0      0     0 ?        S    Nov03   0:00  \_ [kblockd/0]
  root        16  0.0  0.0      0     0 ?        S    Nov03   0:00  \_ [kacpid]
  root        17  0.0  0.0      0     0 ?        S    Nov03   0:00  \_ [kacpi_notify]
  root        18  0.0  0.0      0     0 ?        S    Nov03   0:00  \_ [kacpi_hotplug]
  root        19  0.0  0.0      0     0 ?        S    Nov03   0:00  \_ [kseriod]
  root        21  0.0  0.0      0     0 ?        S    Nov03   0:00  \_ [kondemand/0]
  root        22  0.0  0.0      0     0 ?        S    Nov03   0:00  \_ [khungtaskd]
  root        23  0.0  0.0      0     0 ?        S    Nov03   0:00  \_ [kswapd0]
  root        24  0.0  0.0      0     0 ?        SN   Nov03   0:00  \_ [ksmd]
  root        25  0.0  0.0      0     0 ?        S    Nov03   0:00  \_ [aio/0]
  root        26  0.0  0.0      0     0 ?        S    Nov03   0:00  \_ [crypto/0]
  root       210  0.0  0.0      0     0 ?        S    Nov03   0:00  \_ [ata/0]
  root       211  0.0  0.0      0     0 ?        S    Nov03   0:00  \_ [ata_aux]
  root       212  0.0  0.0      0     0 ?        S    Nov03   0:00  \_ [scsi_eh_0]
  root       213  0.0  0.0      0     0 ?        S    Nov03   0:00  \_ [scsi_eh_1]
  root       219  0.0  0.0      0     0 ?        S    Nov03   0:02  \_ [mpt_poll_0]
  root       220  0.0  0.0      0     0 ?        S    Nov03   0:00  \_ [mpt/0]
  root       225  0.0  0.0      0     0 ?        S    Nov03   0:00  \_ [scsi_eh_2]
  root       258  0.0  0.0      0     0 ?        S    Nov03   0:14  \_ [kjournald]
  root       557  0.0  0.0      0     0 ?        S    Nov03   0:00  \_ [kpsmoused]
  root       637  0.0  0.0      0     0 ?        S    Nov03   0:03  \_ [flush-8:0]
  root      1164  0.0  0.0      0     0 ?        S    Nov03   0:03  \_ [vmmemctl]
  root         1  0.0  0.0   8352   808 ?        Ss   Nov03   0:04 init [2]
  root       331  0.0  0.0  16848   984 ?        S<s  Nov03   0:00 udevd --daemon
  root       783  0.0  0.0  16876   880 ?        S<   Nov03   0:00  \_ udevd --daemon
  root       784  0.0  0.0  16876   816 ?        S<   Nov03   0:00  \_ udevd --daemon
  daemon     861  0.0  0.0   8092   536 ?        Ss   Nov03   0:00 /sbin/portmap
  statd      873  0.0  0.0  14376   868 ?        Ss   Nov03   0:00 /sbin/rpc.statd
  root      1034  0.0  0.0  54552  2032 ?        Sl   Nov03   0:00 /usr/sbin/rsyslogd -c4
  root      1087  0.0  0.0   3916   628 ?        Ss   Nov03   0:00 /usr/sbin/acpid
  root      1262  0.0  0.1  66612  3164 ?        Sl   Nov03   2:51 /usr/sbin/vmtoolsd
  root      1289  0.0  0.5 151660 11176 ?        Ss   Nov03   0:06 /usr/sbin/apache2 -k start
  www-data  9998  0.0  0.2 151660  5832 ?        S    Nov06   0:00  \_ /usr/sbin/apache2 -k start
  www-data  9999  0.0  0.3 151804  6408 ?        S    Nov06   0:00  \_ /usr/sbin/apache2 -k start
  www-data 10000  0.0  0.2 151660  5832 ?        S    Nov06   0:00  \_ /usr/sbin/apache2 -k start
  www-data 10001  0.0  0.2 151660  5832 ?        S    Nov06   0:00  \_ /usr/sbin/apache2 -k start
  www-data 10002  0.0  0.2 151660  5832 ?        S    Nov06   0:00  \_ /usr/sbin/apache2 -k start
  daemon    1301  0.0  0.0  18708   436 ?        Ss   Nov03   0:00 /usr/sbin/atd
  root      1332  0.0  0.0  22420  1056 ?        Ss   Nov03   0:00 /usr/sbin/cron
  root      1408  0.0  0.0  49168  1144 ?        Ss   Nov03   0:00 /usr/sbin/sshd
  root     20007  0.0  0.1  70452  3384 ?        Ss   08:56   0:00  \_ sshd: root@pts/0
  root     20042  0.0  0.3  24160  7044 pts/0    Ss   08:56   0:00      \_ -bash
  root     14246  0.0  0.0  16444  1140 pts/0    R+   10:41   0:00          \_ ps auxf
  snmp      1416  0.0  0.2  47636  5220 ?        S    Nov03   0:48 /usr/sbin/snmpd -Lf /dev/null -u snmp -g snmp -I -smux -p /var/run/snmpd.pid
  root      1417  0.4  0.0  43788  2004 ?        Ss   Nov03  36:22 /usr/sbin/snmptrapd -Ln -n -p /var/run/snmptrapd.pid
  root      1427  0.0  0.1  53084  2432 ?        Ss   Nov03   3:12 /usr/sbin/dvtrap -D
  101       1755  0.0  0.0  44140  1060 ?        Ss   Nov03   0:00 /usr/sbin/exim4 -bd -q30m
  freerad   1803  0.0  1.1 330624 24280 ?        Ssl  Nov03   6:33 /usr/sbin/freeradius
  root      1825  0.0  0.0  51856  1424 tty1     Ss   Nov03   0:00 /bin/login --
  root      1980  0.0  0.3  24096  6940 tty1     S+   Nov03   0:00  \_ -bash
  root      1826  0.0  0.0   5928   620 tty2     Ss+  Nov03   0:00 /sbin/getty 38400 tty2
  root      1827  0.0  0.0   5928   620 tty3     Ss+  Nov03   0:00 /sbin/getty 38400 tty3
  root      1828  0.0  0.0   5928   620 tty4     Ss+  Nov03   0:00 /sbin/getty 38400 tty4
  root      1829  0.0  0.0   5928   620 tty5     Ss+  Nov03   0:00 /sbin/getty 38400 tty5
  root      1830  0.0  0.0   5928   620 tty6     Ss+  Nov03   0:00 /sbin/getty 38400 tty6
  postgres  7890  0.0  0.3 104964  6788 ?        S    Nov08   0:01 /usr/lib/postgresql/8.4/bin/postgres -D /var/lib/postgresql/8.4/main -c config_file=/etc
  postgres  7914  0.0  1.1 105064 22796 ?        Ss   Nov08   0:06  \_ postgres: writer process
  postgres  7915  0.0  0.0 104964  1644 ?        Ss   Nov08   0:01  \_ postgres: wal writer process
  postgres  7916  0.0  0.0 105240  1848 ?        Ss   Nov08   0:01  \_ postgres: autovacuum launcher process
  postgres  7917  0.0  0.0  72320  1532 ?        Ss   Nov08   0:02  \_ postgres: stats collector process
  postgres  7924  0.0  1.2 107468 25000 ?        Ss   Nov08   0:01  \_ postgres: radadm radius 127.0.0.1(51997) idle
  postgres  7927  0.0  1.2 107520 24876 ?        Ss   Nov08   0:01  \_ postgres: radadm radius 127.0.0.1(51998) idle
  postgres  7939  0.0  1.2 107512 24820 ?        Ss   Nov08   0:01  \_ postgres: radadm radius 127.0.0.1(51999) idle
  postgres  7941  0.0  1.2 107512 24896 ?        Ss   Nov08   0:01  \_ postgres: radadm radius 127.0.0.1(52000) idle
  postgres  7951  0.0  1.2 107468 24876 ?        Ss   Nov08   0:01  \_ postgres: radadm radius 127.0.0.1(52001) idle
  postgres  7959  0.0  1.2 107468 25112 ?        Ss   Nov08   0:01  \_ postgres: radadm radius 127.0.0.1(52002) idle
  postgres  7962  0.0  1.2 107472 24908 ?        Ss   Nov08   0:01  \_ postgres: radadm radius 127.0.0.1(52003) idle
  postgres  7963  0.0  1.2 107472 24968 ?        Ss   Nov08   0:01  \_ postgres: radadm radius 127.0.0.1(52004) idle
  postgres  7966  0.0  1.2 107472 24852 ?        Ss   Nov08   0:01  \_ postgres: radadm radius 127.0.0.1(52005) idle
  postgres  7969  0.0  1.2 107468 24956 ?        Ss   Nov08   0:01  \_ postgres: radadm radius 127.0.0.1(52006) idle
  postgres  7986  0.0  1.2 107468 24988 ?        Ss   Nov08   0:01  \_ postgres: radadm radius 127.0.0.1(52007) idle
  postgres  7989  0.0  1.2 107468 25000 ?        Ss   Nov08   0:01  \_ postgres: radadm radius 127.0.0.1(52008) idle
  postgres  8017  0.0  1.2 107472 24792 ?        Ss   Nov08   0:01  \_ postgres: radadm radius 127.0.0.1(52009) idle
  postgres  8022  0.0  1.2 107516 24788 ?        Ss   Nov08   0:01  \_ postgres: radadm radius 127.0.0.1(52010) idle
  postgres  8025  0.0  1.2 107472 24868 ?        Ss   Nov08   0:01  \_ postgres: radadm radius 127.0.0.1(52011) idle
  postgres  8028  0.0  1.2 107468 24776 ?        Ss   Nov08   0:01  \_ postgres: radadm radius 127.0.0.1(52012) idle
  postgres  8034  0.0  1.2 107472 24880 ?        Ss   Nov08   0:01  \_ postgres: radadm radius 127.0.0.1(52013) idle
  postgres  8035  0.0  1.2 107472 24932 ?        Ss   Nov08   0:01  \_ postgres: radadm radius 127.0.0.1(52014) idle
  postgres  8054  0.0  1.2 107516 24960 ?        Ss   Nov08   0:01  \_ postgres: radadm radius 127.0.0.1(52015) idle
  postgres  9559  0.0  1.2 107468 24756 ?        Ss   Nov08   0:01  \_ postgres: radadm radius 127.0.0.1(52020) idle
  postgres  9566  0.0  1.2 107472 24788 ?        Ss   Nov08   0:01  \_ postgres: radadm radius 127.0.0.1(52021) idle
  postgres  9569  0.0  1.2 107472 24832 ?        Ss   Nov08   0:01  \_ postgres: radadm radius 127.0.0.1(52022) idle
  postgres  9572  0.0  1.2 107468 24832 ?        Ss   Nov08   0:01  \_ postgres: radadm radius 127.0.0.1(52023) idle
  postgres  9573  0.0  1.2 107472 24804 ?        Ss   Nov08   0:01  \_ postgres: radadm radius 127.0.0.1(52024) idle
  postgres  9574  0.0  1.2 107472 24948 ?        Ss   Nov08   0:01  \_ postgres: radadm radius 127.0.0.1(52025) idle
  postgres 31797  0.0  0.4 106292  9576 ?        Ss   10:31   0:00  \_ postgres: radadm radius 172.30.64.102(3128) idle
  postgres  3146  0.0  0.4 106292  8708 ?        Ss   10:33   0:00  \_ postgres: radadm radius 172.30.64.101(3595) idle
  postgres  8607  0.0  0.3 106292  7032 ?        Ss   10:37   0:00  \_ postgres: radadm radius 172.30.64.103(2579) idle

我可以做哪些改变来让 postgresql 消耗更少的内存或者释放一些内存?

谢谢。

相关内容