linux消耗ram内存吗,linux - 释放Ubuntu 8.04服务器上的内存(RAM) - Ubuntu问答

问题描述

我在带有某些轻量级服务器应用程序的Slicehost虚拟服务器上运行了Ubuntu 8.04-apache22,svnserve,mysql和proftpd。唯一严重的服务限制是RAM-我要支付256MB。

我注意到,如果让系统运行几天/几周,则可用RAM的数量会缓慢下降,此后不久将使用页面文件。例如,重新启动后,我可能有60%的可用RAM,第二天可能是55%,依此类推。

total used free shared buffers cached

Mem: 256 114 141 0 3 50

-/+ buffers/cache: 61 194

Swap: 511 0 511

如何防止可用内存量减少?

编辑:这是我的ps -aux列出了最大的内存使用者。我省略了所有系统进程。我可以看到apache和mysql占据了最大的内存使用率。

USER PID %CPU %MEM VSZ RSS TTY STAT START TIME COMMAND

root 1369 0.0 0.3 16844 952 ? S

syslog 2110 0.0 0.2 12288 748 ? Ss 00:10 0:00 /sbin/syslogd -u syslog

root 2131 0.0 0.2 8128 588 ? S 00:10 0:00 /bin/dd bs 1 if /proc/kmsg of /var/run/klogd/kmsg

klog 2133 0.0 0.4 4516 1304 ? Ss 00:10 0:00 /sbin/klogd -P /var/run/klogd/kmsg

root 2154 0.0 0.4 50904 1152 ? Ss 00:10 0:00 /usr/sbin/sshd

root 2211 0.0 0.2 3932 592 ? S 00:10 0:00 /bin/sh /usr/bin/mysqld_safe

mysql 2253 0.0 8.8 161940 23252 ? Sl 00:10 0:00 /usr/sbin/mysqld --basedir=/usr --datadir=/var/lib/mysql --user=mysql --pid-file=/var/run/mys

root 2254 0.0 0.2 3836 604 ? S 00:10 0:00 logger -p daemon.err -t mysqld_safe -i -t mysqld

proftpd 2340 0.0 0.5 63000 1504 ? Ss 00:10 0:00 proftpd: (accepting connections)

root 2356 0.0 0.3 18608 964 ? Ss 00:10 0:00 /usr/sbin/cron

root 2384 0.0 0.3 83360 892 ? Ss 00:10 0:00 svnserve -d -r /etc/svn/svn-rep-01

root 2387 0.0 3.5 194628 9220 ? Ss 00:10 0:00 /usr/sbin/apache2 -k start

root 2409 0.0 0.2 3852 576 tty1 Ss+ 00:10 0:00 /sbin/getty 38400 tty1

root 2410 0.0 0.5 15252 1444 ? Sl 00:10 0:00 /usr/lib/ruby/gems/1.8/gems/passenger-2.0.2/ext/apache2/ApplicationPoolServerExecutable 0 /us

www-data 2411 0.0 3.4 195880 9100 ? S 00:10 0:00 /usr/sbin/apache2 -k start

www-data 2412 0.0 7.3 205532 19400 ? S 00:10 0:00 /usr/sbin/apache2 -k start

www-data 2413 0.0 3.3 195620 8824 ? S 00:10 0:00 /usr/sbin/apache2 -k start

www-data 2414 0.0 3.4 195880 9080 ? S 00:10 0:00 /usr/sbin/apache2 -k start

www-data 2415 0.0 3.4 195888 9056 ? S 00:10 0:00 /usr/sbin/apache2 -k start

root 2416 0.0 2.4 43448 6512 ? Sl 00:10 0:00 Passenger spawn server

www-data 2437 0.0 7.7 208116 20248 ? S 00:48 0:00 /usr/sbin/apache2 -k start

www-data 2519 0.0 3.3 195644 8820 ? S 02:12 0:00 /usr/sbin/apache2 -k start

root 3026 0.0 1.1 67960 2892 ? Ss 20:53 0:00 sshd: dv [priv]

dv 3028 0.0 0.6 67960 1700 ? S 20:53 0:00 sshd: dv@pts/0

dv 3029 0.1 0.8 19392 2304 pts/0 Ss 20:53 0:00 -bash

dv 3041 0.0 0.4 15056 1092 pts/0 R+ 20:54 0:00 ps -aux

总的来说,我要感谢每个人的深思熟虑的回答,由于每个人都有一些有用的信息,因此很难选择最好的。

我将研究转向lighthttpd或nginx,或者至少减少apache的MaxClients参数。

最佳答案

您会注意到”cache”正在消耗其中的一些。

这只是磁盘读/写被缓存,您基本上可以假定它是免费的,因为一旦有更重要的需求,它将被转储掉。

它使磁盘IO更快。 🙂

目前,我的盒子上有2G的磁盘缓存,可以让一切变得更快。

“free”是不良的内存分析工具。我发现”htop”是一个更加实用的整体系统管理工具,它既提供了内存使用的实用表示形式,又提供了探索过程的实用方式。

像这样,更漂亮:

1 [||||| 5.0%] Tasks: 156 total, 2 running

2 [||| 2.5%] Load average: 0.29 0.30 0.31

Mem[||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||| 1182/3967MB] Uptime: 5 days, 16:25:36

Swp[|| 37/2000MB]

Mem:3967M used:1182M buffers:0M cache:1952M

(如果您想知道正常运行时间很短。那就是一台笔记本电脑)

许多人可能会提供否定缓存的方法,以使东西不再掉用,但这或多或少毫无意义。最终您将要做的就是降低性能,除非您的程序确实占用大量内存,但是每隔几天仅密集运行一次,这样当它不密集运行时就被换出,并且当它启动时,您就无法等待〜.5秒将其从磁盘交换回内存。

我个人想不出符合这些条件的任何优秀程序。耸耸肩

编写内核的人员或多或少地知道他们在该部门的工作,除非您确定自己知道更多,否则我相信他们的判断。

正如@Paul Betts所说,切换到lighttpd可能会帮助您节省一些时间。取决于您在做什么,总会有一些权衡。

我在vps上使用它。仅具有96M的内存和63M的交换,并且它们仅分别使用26M(无笑话)和35M。那里也有一个数据库在运行。 (Postgres,但并未真正使用)

次佳答案

忽略第一行。重要数字在“-/+缓冲区/缓存”行上。 Linux将清除高速缓存和缓冲区,以便为进程腾出空间。

我的Debian服务器通常在第一行显示2至10 MB的可用空间。第二行显示我有50 MB的可用空间。 (系统上总共有256个内存)

您的电话号码看起来不错。不要清除缓冲区/缓存。您有足够多的可用内存。

现在,如果没有足够的可用内存来缓存,则系统将运行缓慢。如果您开始使用大量交换功能,则在投放网页时会遇到问题。

参考资料

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值