提醒:本文最后更新于 3459 天前,文中所描述的信息可能已发生改变,请仔细核实。
其实我也不懂合理化管理,只是有些想法而已。
首先,祝大家国庆快乐。是这样的,换了VPS,相信这件事基本上大家都知道了。然后经过硬盘速度测试,妈蛋,才10几MB/s。坑爹的要命,经过修改大部分程序,现在基本上缓存都是保存在内存里面。但XEN有个虚拟内存,SWAP区。因为我大多数程序都优先Cache化,所以经常,SWAP区有时被Nginx或者PHP-FPM占用了部分了。
于是心生想法,禁用SWAP区。只用内存,这样就解决了这些问题,并且速度也快了不少。但当服务器被攻击的时候,因为我之前没限定最大进程(可以这么说),导致内存用完,没有SWAP做缓冲,System Halted,宕机了。所以我想了下,写了个脚本,通过检测实际内存占用(即真实内存使用)的大小,当使用超过1.5G(我是2G内存),启动SWAP区做缓冲,并邮件通知。当内存占用降低时,禁用SWAP区。如此,便解决了这个问题。
主要shell命令(算是原创吧,欢迎挑错):
FREE_MEM=$(free -m | grep - | awk '{print $3}') SWAPON=$(free -m | grep Swap | awk '{print $2}') if [ $FREE_MEM -lt 1536 ] ;then [ $SWAPON -ne 0 ]&&swapoff -a else [ $SWAPON -eq 0 ]&&swapon -a fi
关于如何测试VPS的硬盘速度,大家可以看这里:传送门。
现在在网络上流传着好几种测试磁盘读写速度的DD命令,很多不大理解DD命令的朋友通常会把数值结果作为判断磁盘读写速度的标准,但实际上,因为不同的DD命令的参数不同,同样的磁盘会有不同的数值结果。通常大家使用的有如下四个命令,下面帮助大家解析一下这几个命令。
dd bs=1M count=128 if=/dev/zero of=test
dd bs=1M count=128 if=/dev/zero of=test; sync
dd bs=1M count=128 if=/dev/zero of=test conv=fdatasync
dd bs=1M count=128 if=/dev/zero of=test oflag=dsync
这四个命令的区别在于内存中写缓存的处理方式。
1.dd bs=1M count=128 if=/dev/zero of=test
没有加任何参数,dd默认的方式不包括“同步(sync)”命令。也就是说,dd命令完成前并没有让系统真正把文件写到磁盘上。所以以上命令只是单纯地把这128MB的数据读到内存缓冲当中(写缓存[write cache])。所以你得到的将是一个超级快的速度。因为其实dd给你的只是读取速度,直到dd完成后系统才开始真正往磁盘上写数据,但这个速度你是看不到了。所以如果这个速度很快,先不要偷着乐。
2.dd bs=1M count=128 if=/dev/zero of=test; sync
和前面1中的完全一样。分号隔开的只是先后两个独立的命令。当sync命令准备开始往磁盘上真正写入数据的时候,前面dd命令已经把错误的“写入速度”值显示在屏幕上了。所以你还是得不到真正的写入速度。
3.dd bs=1M count=128 if=/dev/zero of=test conv=fdatasync
加入这个参数后,dd命令执行到最后会真正执行一次“同步(sync)”操作,所以这时候你得到的是读取这128M数据到内存并写入到磁盘上所需的时间,这样算出来的时间才是比较符合实际的。
4.dd bs=1M count=128 if=/dev/zero of=test oflag=dsync
加入这个参数后,dd在执行时每次都会进行同步写入操作。也就是说,这条命令每次读取1M后就要先把这1M写入磁盘,然后再读取下面这1M,一共重复128次。这可能是最慢的一种方式了,因为基本上没有用到写缓存(write cache)。
那我们到底应该用哪一种呢?建议使用dd bs=1M count=128 if=/dev/zero of=test conv=fdatasync因为这种方式最接近计算机实际操作,所以测出来的数据最有参考价值。
转载请注明转自: kn007的个人博客 的《合理化管理SWAP交互区》


朋友们国庆玩的开心吗
好像我用过的VPS都是不允许对SWAP进行操作的...
@Aivier: 好吧,没实权
使用SWAP,每月IO轻松上600万。swap分区不到万不得已,还是不开为妙。这玩意儿巨吃IO,一般送了swap的VPS的IO都不佳
@郑杰: IO极度不行啊。太慢了,拖垮了性能
感觉这和远程电动玩具一样...
@Muno: 额。。。怎么说。。
@kn007: 手机就能控制
@老猫Music:
手机安装个ssh软件就可以控制VPS了...
swap分区不宜过大,因为sd卡的读取速度实在太慢,设置太大的话,会有太多数据滞留在卡内,拖慢慢系统速度。笔者曾经就设置过288mb的swap,应用程序是很少关闭了,但使用时间一长,会导致机器卡到完全无法操作,因为太多数据滞留在SD卡里,SD卡的读卡速度是系统的最大瓶颈,这时必须手动关闭程序释放内存才能正常使用,这样就得不偿失了,所以大家还是要按照自己的使用需求,合理设置swap大小和swappness的数值。
@2047252358: 这不是手机也不是相机,也不是交换机。。。
sd卡只适合一些随机存储,也就是cache
真能折腾
@鲜活: 哈,还好吧
还在虚拟主机混
@罗胜: 不折腾的话还是虚拟主机比较好
技术都高,佩服。
@海涛: 没有没有,过奖
虚拟主机也不错的吧
@海棠秋客: 额,不明所说。各有所需
七七,我看中一款国外的收费主题了,好不容易网上找到了资源下下来了,试用了下,后台主题选项那有一个地方报错,帮我看看呗,嘿嘿~~
再就是根据主题提供的pot文件可以汉化前台页面,后台主题选项那肿么汉化啊,鸟语看着真心不爽
@CrazyM:
肯定有setting界面啊,看下有没有mo这些,没有就直接改源码里面的英文