一个外国人写的关于解决CPU MINUTES的文章,推荐耐心看一看
How To Fix it When DreamHost Brings Down the CPU Usage Hammer
背景链接:DreamHost如何统计CPU时间
访问人数上来了,对服务器来说即使是WordPress也是一个重负,来吧,为你的WordPress装上WP-Cache! (本blog已经装上,感觉会不会快了?)
在DreamHost上以mod_php模式运行的wp要设置wp-content目录或wp-config.php为777,省事点的就执行$chmod 777 -R (你的Blog目录), 否则wp-cache无法运行.
对于已经架设好网站的朋友,可以这样操作
1.Domains->Manage Domains->Edit(Web Hosting那栏)
2.在选项Web Directory: /home/username/xxx.com中, 把xxx.com(DreamHost的默认方式)改成你自己喜欢的形式,如xxx_com,目的在于不让别人猜到你的目录,如果要更安全的方式弄个"TS4ah5"或者"XxX.cOm"(*nix下目录是区分大小写的)这样的目录名也可以.
3.点击"Change fully hosted settings now!"
4.等上几分钟,待设置生效后(域名前面没有时钟图标),在你的根目录下就可以看到xxx_com的目录了.
5.通过ftp或shell,把xxx.com里面的内容拷贝到xxx_com中.
6.针对不同的程序做出不同的设置, 如果是WordPress可以不做任何修改即可生效,gallery要重新安装一下.
对于还没设站或增加站点的朋友,只要注意步骤2就可以了.
还有注意的是这样做只是提高了防止被其他用户直接"进门"的门槛,还不能消除被其他用户恶意进入的可能.因为只要他能够获取到你的目录信息就可以进入了,而据我所知,目录信息的获取并不困难,有时候php程序报错你都能够知道目录信息了.因此,从根本上解决该漏洞只有靠Dreamhost在系统级别上做设置了.不过最近Dreamhost好像也对系统进行了修补,之前可以用top和ps aux命令看到其它用户的进程,现在已经屏蔽了,希望这个漏洞能很快被补上.
网友Christnan问到了Bluehost上的安全机制如何,其实像Bluehost,WebHostingbuzz这些使用CPanel的空间安全机制都还不错,比如说在/home目录下你只能看到你自己的目录,ps进程时你只会看到用户的uid号而不是用户名,Bluehost还会自动帮你每天/每星期/每月的自动备份,还是那句话,BlueHost中规中矩,不会有太多惊喜,也不会有太多操心.
另外这两天发现DreamHost在cpu限制上是没有在系统设置死的,而是根据统计结果后才告知你,但是BlueHost居然就已经限定60分钟的CPU使用时间,我找了很多资料只知道ulimit是作为限制用户资源用的,但是否跟DreamHost的案例相似就不得而知了.希望有高人指点一二.
DreamHost: ulimit -a
core file size (blocks, -c) 0
data seg size (kbytes, -d) unlimited
file size (blocks, -f) unlimited
max locked memory (kbytes, -l) unlimited
max memory size (kbytes, -m) unlimited
open files (-n) 1024
pipe size (512 bytes, -p) 8
stack size (kbytes, -s) unlimited
cpu time (seconds, -t) unlimited
max user processes (-u) unlimited
virtual memory (kbytes, -v) unlimited
BlueHost: ulimit -a
core file size (blocks, -c) 0
data seg size (kbytes, -d) 204800
file size (blocks, -f) unlimited
pending signals (-i) 1024
max locked memory (kbytes, -l) 32
max memory size (kbytes, -m) 204800
open files (-n) 100
pipe size (512 bytes, -p) 8
POSIX message queues (bytes, -q) 819200
stack size (kbytes, -s) 10240
cpu time (seconds, -t) 3600
max user processes (-u) 200
virtual memory (kbytes, -v) 2097152
file locks (-x) unlimited
关于Dreamhost的目录安全性问题,我在购买Dreamhost前就已经看过类似的文章了,但一直不以为然,觉得我的网站没有什么特别机密的东西,又从没跟人结怨,即使人家得到相关密码,也不会专门去修改我的数据.另外,大家也知道,为了不让DreamHost把网站的cpu时间算在我头上,我老早就把网站的运行模式改成mod_php4了.即便知道这样不安全,也第一时间告诉大家这样不安全,但我还是一边享受Dreamhost带来的快感,一边幸灾乐祸的笑Dreamhost傻到家了,直到今天设置我的wordpress时,才发现,其实DreamHost一点也不傻,我才是最大的傻瓜...
事情的缘由是这样的...
这两天,老婆在用她的blog时反映不能上传图片,我检查后发现是目录权限问题(无法写入),因此把blog的upload目录递归设置成777,之后发现可以正常上传图片.后来在帮blog设置google sitemaps插件时也发现同样存在写入问题,抱着没什么的观点,我偷懒的就把整个站点目录设置成777权限了.不过这时我心里已经清楚的知道为什么DreamHost强调最好用cgi模式了,因为在mod_php4模式整个站点由dhapache用户运作并依照文件权限中的"公共"权限部分对文件进行操作,如果我们的权限不放开(读/写/执行/),某些网站程序,像wordpress这么典型的程序,是无法正确的运行的.
那按mod_php4运行究竟有多不安全呢?带着这个疑问,我找回了那篇关于目录安全性的文章,并动手测试了一下,这一试着实让我吓了一跳.现在我把过程贴出来给大家看看:
$ cd /home (进入用户目录)
$ ls (列出有什么用户)
$ cd abc (进入其中一个用户目录)
$ ls
ls: .: Permission denied (禁止访问)
$ cd logs (进入该用户的logs目录)
$ ls (这样就可以知道该用户有什么网站目录了,比如说我们找到域名aaa.com)
$ cd ../aaa.com (进入上级目录中的aaa.com,这个才是放网页的目录)
$ ls
现在你猜猜看到什么了...没错,是网站的文件列表.
现在再想想我对blog做了什么设置?
对,777权限!它代表任何人都可读可写可执行该目录或文件.现在已经不再是看看文件找找密码这么简单了,只要你用mod_php4模式,并且为了让某些程序正常运行而放宽了文件权限,那么主机上任何一个用户都可以通过这样的方法改写你的网站内容...
DreamHost这样的权限漏洞无疑让DreamHost的用户必须做出以下抉择:
一,使用CGI模式提高网站安全性,继续忍受DreamHost的CPU条款,然后心惊胆战的等待DreamHost的Warning Letter.
二,使用mod_php4模式,抱着"我有正义我怕谁"的思想,时刻准备着为低级黑客及仇家的伟大事业奉献自己的网站.
三,严重鄙视DreamHost,不再使用DreamHost的空间.
路就摊在你们脚下,怎么选择是你们的自由.
附:howlym.com是放在bluehost的空间的,不用找我的来试. 另外DreamHost对于用户的操作是有记录的,不然你们怎么有机会看到resources里面的报告,所以最多看看就好了(其实最好看都不要看了),不要真的改人家的东西,不然就等着关站吧.
后记(解决办法):
是我不好,是我不对,是我年轻气盛,是我年少轻狂,没有认真分析,在写完本文后,我又对所谓的"漏洞"进行测试,发现原来只要注意一下习惯是可以避免的,因为在Fully Hosted那里是有个Web Directory的输入框,默认情况下是跟你的网站名相同的,这样的情况下所谓的"漏洞"就生效了.所以在设置的时候变更一下目录名是可以避免某些不安全因素,这样"漏洞"自然就补上了.
原来DreamHost还留个大家另外一个抉择: 让通向DreamHost的路越走越宽...

以前刚用google sitemaps的时候还不是特别清楚它的作用,用了一段时间后就不再关注它了,今天上去一看,发现它提供的关键字排名信息非常详细,而且无意中居然还给我发现一个排名第一的关键字...居然是"成人站点"...我只记得我是写过关于成人站点空间的文章,但亲爱的google,我这里可不是"成人站点"啊~~~.
附上其他排名信息:
热门搜索查询 平均最前排名
1. "howlym com" 1
2. vlog 7
3. bluehost 21
4. gmail 89
5. "成人 站" 2
6. ixwebhosting 14
7. put yourself into others shoes 9
8. podcaster 7
9. whb name 8
10. odeo 9
11. "成人 站 点" 1
12. im vlog "im tv" 7
13. microsoft mail live 邀请 14
14. office live 邀请 4
15. "成人 网站 导 行" 8
16. "购买 域名" 14
17. "centos4 2" 下载 12
18. dreamhost 31
19. godaddy 84
20. mediamax 127
这几天新换了部75004的PS2,由于安装了比较贵的解码和防烧芯片,所以就把之前一直喜欢玩的burnout3拿出来回锅.虽然画面和内容一点也没有变,但是近两个月来,我基本上是在psp上玩这款游戏的,这次换回到大电视上重新玩这款游戏就觉得其逼真程度和流畅性是比psp好多了,自我感觉技术也好多了,甩尾甩的很帅,全程液氮加速都没有问题,哈哈.
游戏虽好玩,却留下几个后遗症:
1.无心写blog了
2.晚上睡觉一闭上眼就是游戏画面
...
由于DreamHost的控制面板没有像BlueHost的那样方便可以直接备份数据库,但由于其提供shell登陆,所以如果你懂得运用的话能发挥更大的功用.下面的脚本是写给对shell不熟但又想实现自动备份的朋友们的,由于Dreamhost空间装了mutt,而像Bluehost,WebHostingBuzz只有sendmail,所以该脚本暂时只适合DreamHost空间
--------------------------------开始拷贝
#!/bin/bash
DATE=`date +%Y%m%d`
HOST=db.howlym.com
USER=howlym_wp
PASS=123456
DB=wordpress
EMAIL="name@howlym.com"
TIL="$DB($DATE)"
mysqldump --opt -u$USER -p$PASS -h $HOST $DB > backup.sql
gzip backup.sql
mv backup.sql.gz $TIL.gz | mutt $EMAIL -s $TIL -a $TIL.gz
rm $TIL.gz
结束拷贝------------------------
由于WP自动把双引号换成中文符号,所以拷贝后请修改成为英文的引号.
存成autobackup后,运行
$chmod 755 autobackup
$crontab -e
在出现的界面中输入:
0 0 * * * /home/someone/bin/autobackup
路径请修改成你的文件路径
(如果是nano)按ctrl+o 保存,请注意按回车确认,ctrl+x退出.
这样每天晚上12点,你就可以在你的邮箱中收到系统打包好的数据库文件了,如果有多个数据库要备份,请做适当修改即可.
有意思,这是第二次发现文章被不署名转载了.
虽然我的文笔不怎么D,也非常欢迎大家踊跃转载,但是哥们,请给咱留个名吧,好歹挂个网址替俺宣传宣传也行啊.
今天看到的例子更搞笑,居然在我的文章前后左右加点文字后就当是自己的了,这手段怎么那么像我小学时挤作文的情形啊.哈哈.
ps.第二天又发现有网站转载我那篇关于cpu时间的文章,发了封信给他要求署名链接,同时在网站加上"创作共用约定"的链接.
转自
靠近我-刘润
我要从徐家汇赶去机场,于是匆匆结束了一个会议,在美罗大厦前搜索出租车。一辆大众发现了我,非常专业的、径直的停在我的面前。这一停,于是有了后面的这个让我深感震撼的故事,象上了一堂生动的MBA案例课。为了忠实于这名出租车司机的原意,我凭记忆尽量重复他原来的话。
“去哪里……好的,机场。我在徐家汇就喜欢做美罗大厦的生意。这里我只做两个地方。美罗大厦,均瑶大厦。你知道吗?接到你之前,我在美罗大厦门口兜了两圈,终于被我看到你了!从写字楼里出来的,肯定去的不近~~~”
“哦?你很有方法嘛!”我附和了一下。
“做出租车司机,也要用科学的方法。”他说。我一愣,顿时很有些兴趣“什么科学的方法?”
“要懂得统计。我做过精确的计算。我说给你听啊。我每天开17个小时的车,每小时成本34.5元……”
怎么算出来的?”我追问。
“你算啊,我每天要交380元,油费大概210元左右。一天17小时,平均每小时固定成本22元,交给公司,平均每小时12.5元油费。这是不是就是34.5元?”,我有些惊讶。我打了10年的车,第一次听到有出租车司机这么计算成本。以前的司机都和我说,每公里成本0.3元,另外每天交多少钱之类的。
“成本是不能按公里算的,只能按时间算。你看,计价器有一个“检查”功能。你可以看到一天的详细记录。我做过数据分析,每次载客之间的空驶时间平均为7分钟。如果上来一个起步价,10元,大概要开10分钟。也就是每一个10元的客人要花17分钟的成本,就是9.8元。不赚钱啊!如果说做浦东、杭州、青浦的客人是吃饭,做10元的客人连吃菜都算不上,只能算是撒了些味精。”
强!这位师傅听上去真不象出租车司机,到象是一位成本核算师。“那你怎么办呢?”我更感兴趣了,继续问。看来去机场的路上还能学到新东西。“千万不能被客户拉了满街跑。而是通过选择停车的地点,时间,和客户,主动地决定你要去的地方。”我非常惊讶,这听上去很有意思。“有人说做出租车司机是靠运气吃饭的职业。我以为不是。你要站在客户的位置上,从客户的角度去思考。”这句话听上去很专业,有点象很多商业管理培训老师说的“put yourself into others’ shoes.”
“给你举个例子,医院门口,一个拿着药的,一个拿着脸盆的,你带哪一个。”我想了想,说不知道。
“你要带那个拿脸盆的。一般人病小痛的到医院看一看,拿点药,不一定会去很远的医院。拿着脸盆打车的,那是出院的。住院哪有不死人的?今天二楼的谁死了,明天三楼又死了一个。从医院出来的人通常会有一种重获新生的感觉,重新认识生命的意义,健康才最重要。那天这个说:走,去青浦。眼睛都不眨一下。你说他会打车到人民广场,再去做青浦线吗?绝对不会!”
我不由得开始佩服。
“再给你举个例子。那天人民广场,三个人在前面招手。一个年轻女子,拿着小包,刚买完东西。还有一对青年男女,一看就是逛街的。第三个是个里面穿绒衬衫的,外面羽绒服的男子,拿着笔记本包。我看一个人只要3秒钟。我毫不犹豫地停在这个男子面前。这个男的上车后说:延安高架、南北高架~~~还没说后面就忍不住问,为什么你毫不犹豫地开到我面前?前面还有两个人,他们要是想上车,我也不好意思和他们抢。我回答说,中午的时候,还有十几分钟就1点了。那个女孩子是中午溜出来买东西的,估计公司很近;那对男女是游客,没拿什么东西,不会去很远;你是出去办事的,拿着笔记本包,一看就是公务。而且这个时候出去,估计应该不会近。那个男的就说,你说对了,去宝山。”
“那些在超市门口,地铁口打车,穿着睡衣的人可能去很远吗?可能去机场吗?机场也不会让她进。”
有道理!我越听越有意思。
“很多司机都抱怨,生意不好做啊,油价又涨了啊,都从别人身上找原因。我说,你永远从别人身上找原因,你永远不能提高。从自己身上找找看,问题出在哪里。”这话听起来好熟,好像是“如果你不能改变世界,就改变你自己”,或者Steven Corvey的“影响圈和关注圈”的翻版。“有一次,在南丹路一个人拦车,去田林。后来又有一次,一个人在南丹路拦车,还是去田林。我就问了,怎么你们从南丹路出来的人,很多都是去田林呢?人家说,在南丹路有一个公共汽车总站,我们都是坐公共汽车从浦东到这里,然后搭车去田林的。我恍然大悟。比如你看我们开过的这条路,没有写字楼,没有酒店,什么都没有,只有公共汽车站,站在这里拦车的多半都是刚下公共汽车的,再选择一条最短路经打车。在这里拦车的客户通常不会高于15元。”
“所以我说,态度决定一切!”我听十几个总裁讲过这句话,第一次听出租车司机这么说。
“要用科学的方法,统计学来做生意。天天等在地铁站口排队,怎么能赚到钱?每个月就赚500块钱怎么养活老婆孩子?这就是在谋杀啊!慢性谋杀你的全家。要用知识武装自己。学习知识可以把一个人变成聪明的人,一个聪明的人学习知识可以变成很聪明的人。一个很聪明的人学习知识,可以变成天才。”
“有一次一个人打车去火车站,问怎么走。他说这么这么走。我说慢,上高架,再这么这么走。他说,这就绕远了。我说,没关系,你经常走你有经验,你那么走50块,你按我的走法,等里程表50块了,我就翻表。你只给50快就好了,多的算我的。按你说的那么走要50分钟,我带你这么走只要25分钟。最后,按我的路走,多走了4公里,快了25分钟,我只收了50块。乘客很高兴,省了10元钱左右。这4公里对我来说就是1块多钱的油钱。我相当于用1元多钱买了25分钟。我刚才说了,我一小时的成本34.5块,我多合算啊!”
“在大众公司,一般一个司机3、4千,拿回家。做的好的大概5千左右。顶级的司机大概每月能有7000。全大众2万个司机,大概只有2-3个司机,万里挑一,每月能拿到8000以上。我就是这2-3个人中间的一个。而且很稳定,基本不会大的波动。”
太强了!到此为止,我越来越佩服这个出租车司机。
“我常常说我是一个快乐的车夫。有人说,你是因为赚的钱多,所以当然快乐。我对他们说,你们正好错了。是因为我有快乐、积极的心态,所以赚的钱多。”
说的多好啊!
“要懂得体味工作带给你的美。堵在人民广场的时候,很多司机抱怨,又堵车了!真是倒霉“要懂得体味工作带给你的美。堵在人民广场的时候,很多司机抱怨,又堵车了!真是倒霉。千万不要这样,用心体会一下这个城市的美,外面有很多漂亮的女孩子经过,非常现代的高楼大厦,虽然买不起,但是却可以用欣赏的眼光去享受。开车去机场,看着两边的绿色,冬天是白色的,多美啊。再看看里程表,100多了,就更美了!每一样工作都有她美丽的地方,我们要懂得从工作中体会这种美丽。”
“我10年前是强生公司的总教练。8年前在公司作过三个不同部门的部门经理。后来我不干了,一个月就3、5千块,没意思。就主动来做司机。我愿意做一个快乐的车夫。哈哈哈哈。”
到了机场,我给他留了一张名片,说:“你有没有兴趣这个星期五,到我办公室,给微软的员工讲一讲你怎么开出租车的?你就当打着表,60公里一小时,你讲多久,我就付你多少钱。给我电话。”
我迫不及待的在飞机上记录下他这堂生动的MBA课。
因为虽然之前已经对自己说blog是写给自己看得,别人看不看都无所谓,但今天看到ideaxp网友的评论后很受鼓励,觉得还是有必要继续写多一点关于Dreamhost的东西,让没买或想买的朋友多点了解DreamHost的主机性能和其他相关特性。
从11日写了 "DreamHost,不愿美梦太早醒“的文章后,最近的这几天我还是不断的和好友一起评测Dreamhost的各种功能,一起分享其中的喜悦,现把一些测试结果告诉大家:
1、CPU MINUTES
cpu 时间无非是大家所关注一个焦点问题,不过经过我们的测试,我们发现降低cpu的使用时间其实是有方法的。在购买空间后,我们看到了dreamhost的 cpu统计记录,发现他们对每个用户的操作记录都进行了详尽的记录,cpu时间就是从这份记录统计而来的。就像ideaxp网友问的,我们也非常想知道在哪种情况下的 cpu使用率最低,或者每天50-60分钟的CPU时间究竟是怎么一种状况,因此在测试前,我们就在空间上挂载了多个站点并以不同的php模式运行,其中的程序包括wordpress, gallery2,wiki和自己编写的代码,然后对各个程序进行页面访问。结果到了晚上11:47分(洛杉矶早上7:47)的时候,服务器生成了当天的 CPU报告,我们打开一看就会心的笑了,知道为什么吗?因为我们已经知道在mod_php模式下运行的php站点是通过dbapache用户进行运作的,因此没有计算cpu时间也计算不了时间。而使用php-cgi模式的站点(已经算是比较耗资源的gallery2,安装了好几个插件)大概每个页面的cpu时间是0.14秒左右,量化后就可以知道你的站点在规定的资源内一天大约可以有60(分)*60(秒)/0.14(秒)=25714个pageview。当然,你大可为你的站点设置成mod_php方式运行,不过由于安全性问题,dreamhost不会让你在mod_php下使用一些系统指令如exec()等,这将影响到一些程序的运行,如gallery2就一定要在cgi模式下运行,而wordpress则完全可以在mod下运行。因此如果你的站点是小型的blog或是自己编写而且没有涉及到系统指令(exec,system,dl,passthru,chown,shell_exec,popen,proc_open)的,大可以将其设置成mod_php模式运行,那如果想要使用cgi模式,很容易,把你的php后缀改为.pcgi就可以以php-cgi模式运行了。另外如果你还想在某些地方使用php5的特性的话可以在网站目录下建立一个.htaccess文件,然后写入AddType php5-cgi .xxx xxx为你想要的后缀名,这样子就可以随时调用php5的文件了。请注意:使用mod_php将会降低你网站的安全性,特别是储存密码的文件的安全性,它将允许其他用户搜索到你的文件并打开它,所以请慎重选择。
2、Mysql
在我上一篇文章中提到对dreamhost和bluehost,webhostingbuzz的mysql进行测试,结果是dreamhost的mysql运算速度是比其他两种主机的mysql慢了大约是5-8倍的。后来我又对它们进行测试,发现了一个更为严重的问题。由于dreamhost的mysql服务器独立于web服务器,所以每次读取数据都要远程连接到mysql服务器上。插入、更新、删除数据慢点无所谓(因为我测到读取数据的时间和bluehost他们的差不多),但要命的是网络连接消耗时间太厉害了。插入/更新/删除1000条记录,dreamhost平均消耗时间是0.3秒,
但三个步骤加起来的总耗时(加上网络连接)是4秒,bluehost平均消耗0.05秒,总耗时是0.2秒。看到没有,其实mysql数据库才是dreamhost的软肋来的。目前除了使用静态页面和尝试使用sqlite外没有其他解决办法。
我们对dreamhost进行测试目的在于研究这款主机的性能及功能,如果你的站点能够解决cpu时间的问题,Dreamhost确实是一款令人满意的主机,不过如果你的站点是个单站点的商业站点,我想成熟稳定的bluehost会让你更为放心。
以前申请过GoogleAdsense的帐号,但一直没用,今天作为尝试设置了一下.
使用了AdSense-Deluxe插件,但不是特别好用,那个google推荐的图片就没有办法出来,还是得直接拷贝代码加入模板中.另外自己还Hack了一下Ultimate Tag Warrior的插件,加入自己的函数,使得出来的结果能够被Google search框使用. 修改不难,但看代码看得有点晕.有需要的朋友可以写信给我.
另外,介绍两个flash游戏给大家,非常的好玩,需要答案的朋友同样可以写信给我,哈哈,不过还是自己玩出来比较有成就感.
游戏目的:这是一个叫grow的游戏,不同顺序的元素放置会影响结果,你的最终目的是使各个元素升级到max才能顺利通关.
http://www.eyezmaze.com/grow/RPG/index.html
达成顺序:房子,树,城堡,海洋,碉堡,石头,宝箱,地下室
http://www.eyezmaze.com/grow/cube/index.html
达成顺序:人,水,树,瓶,管,火,楼,骨,弹簧,珠