正确理解Linux内存占用过高的问题

最近有个月经问题,老有人问为何开机后,还没有其他服务,mem就被用完了?是不是内存泄露?是否要重启服务?只能说不要看现象,要看本质才能找到问题的根源。
往往给出这样的结果,怀疑内存用了90%:
Mem: 4146788k total, 3825536k used, 321252k free, 213488k buffers
Swap: 2650684k total, 80k used, 2650604k free, 3006404k cached

这样怀疑很普遍,因为很多人用惯了Windows。Windows下,可以使用任务管理器查看当前进程对于内存的消耗情况。在我看来,Windows物理内存总是留下一定的空间,就算此时物理内存有空闲时,也会让某些程序去使用虚拟内存,目的是在Windows下启动新程序时,直接分配空闲的物理内存,这样子新程序启动速度就较快,而Linux则不然。

而在Linux下,使用top命令看到内存占用情况:

Mem: 4146788k total, 3825536k used, 321252k free, 213488k buffers
Swap: 2650684k total, 80k used, 2650604k free, 3006404k cached

这里的结果显示使用了3.8G的used,占用率达到90%。看看free的结果你还可以对比一下:
$ free -m
total used free shared buffers cached
Mem: 4049 3784 265 0 208 2939
-/+ buffers/cache: 636 3413
Swap: 2588 0 2588

虽然MEM显示了3.7G左右的used,但是(-/+ buffers/cache)减去buffers和cache的结果可以看到,当前进程实际占用内存是636M,而可用空闲(free)内存为3.4G

可以这么理解:在linux的内存分配机制中,优先使用物理内存,当物理内存还有空闲时(还够用),不会释放其占用内存,就算占用内存的程序已经被关闭了,该程序所占用的内存用来做缓存使用,对于开启过的程序、或是读取刚存取过得数据会比较快。

如上面的例子:使用了4G的内存,3.7G被占用,但是buuffer和cached部分作为缓存,可以使用命中率的方式提高使用效率,而且这部分缓存是根据指令随时可以释放的,我们可以认为这部分内存没有实际被使用,也可以认为它是空闲的。

因此查看目前进程正在实际被使用的内存,是used-(buffers+cache),也可以认为如果swap没有大量使用,mem还是够用的,只有mem被当前进程实际占用完(没有了buffers和cache),才会使用到swap的。

个人之见,欢迎拍砖。

Linux下Wget创建镜像站点

用过Linux的应该都知道wget这个命令,这个命令常常用来下载文件,wget还有许多参数,可以完成很多的任务,如今天说的创建镜像站点。

此方法能将所有文件(网页、图片、CSS、音/视频等)都下载下来,并把网页中的链接改为相对链接,这样就避免了镜像中的链接仍旧指向原来的网站而不能正常地显示。

只需要输入:wget -mk -w 20 http://www.example.com/ 命令就行了。

命令行中-w 20代表间隔20秒下载一个文件,这样可以避免网站的访问过于频繁。-m 是镜像

同时也可以使用其他的一些参数:-c 是继续传送 , -p 是下载媒体文件,比如图片, -q 是安静模式, -b 是后台运行

一些其他常用的wget用法:

wget -i filename.txt

此命令常用于批量下载,把所有需要下载文件的地址放到 filename.txt 中,然后 wget 就会自动为你下载所有文件了。

如果你想发掘其中更多的功能的话,建议你去看wget的手册(man wget),在那里你会找到更多的选项,例如随机延迟,设置用户代理,发送cookie到网站上等等。

中国网站维护日

Bing.com、Twitter.com、Live.com、Flickr.com, 以及Hotmail.com集体被封后,昨日又有部分国内网站因“技术维护”关闭,如:饭否、VeryCD、豆瓣、贴吧等。。。

附:中国互联网网站集体维护名单(2009.6.3起)

饭否“技术维护”:

fanfoudown

VeryCD “技术维护”:

verycd

豆瓣:

douban

贴吧的高校吧也在系统维护:

tieba

校内部分功能:

xiaonei

附:中国互联网网站集体维护名单(2009.6.3起)

Bing.com、Twitter.com、Live.com、Flickr.com, 以及Hotmail.com集体被封

Bing.com 仅上线一天,就别中国伟大的GFW给封掉了,同时被封的还有Twitter.com,Flickr.com还有两个微软的Live.com,Hotmail.com,这次微软真的“必应”了。

此次事件并非微软服务器故障,影响的微软服务有: 必应 Bing, Hotmail, Spaces, SkyDrive 等所属于以上三个域名的在线服务,并且 Mail 客户端无法接收 Hotmail 邮件,注意,Windows Live Messenger 是可正常登录的。不过好在微软其他的大部分在线服务是通过 https://login.live.com 登录的,而躲过此难。

所有的封锁都是针对域名的关键字,普通代理都上不去的。玩Twitter的目前只好暂时通过HelloTXT来更新Twitter了。

可能被封的原因是因为 Bing 视频搜索功能,太强大了,把××视频都给搜出来,GFW怒了。

Nginx.Me

嘿嘿,注了Nginx.Me这个米,自己比较喜欢Nginx,就。。。虽然.me的域名不是很好。。。
Nginx.Me Nginx迷

我爱Nginx......

ghs.google.com可用IP列表(2009年9月25日)

由于自己使用GOOGLE的邮箱服务,但是ghs.google.com的IP经常被GFW,所以自己弄了一个ghs的解析服务,当IP被封的时候我会及时更新,并在这里贴出最新的地址。
2009年5月31日更新:

  • 72.14.232.215
  • 72.14.207.121(被封)
  • 74.125.53.121(被封)
  • 74.125.95.121(被封)
  • 216.239.32.21
  • 216.239.36.21

如果要使用的话,创建CNAME到ghs.licess.com就等同于ghs.google.com。