曾经一度想放弃bluehost,主要的原因是因为“长城”、越来越差的服务器和响应速度不断变慢的livechat(当然这都是oversell的结果),然而在盛会之后,我发现bluehost的响应速度和SSH的稳定性第一次破天荒的超过了dreamhost,于是又有回归bluehost的想法了。
但是bluehost的CPU超标又严重困扰着我,熟悉storyday的朋友可能都知道,我用的bluehost基本都是几个人分享的,所以CPU超标是难免的。当然CPU的控制对于任何一个虚拟主机商来说都是很有必要的,国外知名的虚拟主机如bluehost、hostgator、MT都有严格的CPU限制,这也是虚拟主机能稳定运行的一个保证,如果你是真正的想做一个站点,就用这样的主机,如果是采集站点,还是用其他的主机,如所谓的全能主机吧,否则频繁的CPU超标会让你严重不爽。当然即使是正规的站点,也会出现CPU超标的问题,那么我们就应该考虑优化自己的程序了。
虚拟主机的CPU超标的判断一般都是根据mysql执行时间来计算的,如果一分钟之内,所有的mysql查询执行时间超过了30秒,那么CPU就出现超标,网站将会在接下来的一分钟之内被挂起,所以要解决超标的问题,就应该从Mysql查询开始,下面我从3个方面来谈谈如何优化,仅供大家参考:
- 静态化你的站点。这个不用多说,我们都知道,静态化的页面对服务器的影响是最小的(当然我这里说得不是urlrewrite伪静态,发现很多朋友把这种方式也称之为静态,好像有点不妥),如果你使用wordpress,可以使用 cos-html-cache来进行静态化;
- 优化MySQL查询。在mysql查询中,尽量使用索引,这样能大大的提高Mysql查询速度。如果数据过多,就算使用limit 100000,10这样的限制查询,即使获取的数据只有10条,执行的时间也会变得很慢,那么这个时候就得考虑查询的精准化了,可以采用其他条件限制mysql遍历整个数据表;
- 使用google或者百度的站内搜索。很多web程序,在搜索的时候使用的都是类似” SELECT * FROM table where content like ‘%西洋美女%’;”的SQL语句进行查询的,而这种查询往往是最消耗时间的。SQL会对整个数据表进行遍历,遍历的时候还得要处理content中的字符,它使用的时间一般会是” SELECT * FROM table WHERE 1″ 这样语句的数十倍到上百倍,所以站内搜索,建议采用google等搜索引擎提供的接口,如本站的站内搜索。一方面这样的方式节约了服务器的负载,另外一方面这样的搜索反而更加精准。
优化的方法多种多样,我这里暂时只列举上面3条,其他的欢迎大家补充,不过storyday还是强烈建议你静态化你的网站,如果缓存的命中率比较高的话,静态化带来的只有好处,想好了么,或许你的blog也需要缓存?
