2008年4月24日星期四

解决DreamHost的CPU资源限制的问题

  DreamHost做为一个共享主机,通常会对用户的CPU资源使用进行一些限制,如果某些用户的站点使用了过多的CPU资源,并影响了服务器的性能,那么这个用户帐号就可能会被禁用,因此,使用DreamHost主机的用户有必要了解一下自己到底使用了多少CPU资源,以防止被主机商封杀。

  用户可以使用多少CPU资源

  做为一个量化的指标,DreamHost使用CPU minutes来衡量用户使用CPU资源的情况,通常情况下,每个用户允许使用60 CPU minutes(60分钟CPU),如果超过了这个数字不过,那也没什么关系,如果达到这个数字的三、四倍以上,那么就很有可能会被禁用,通常情况下,当你的页面总是出现500错误的时候,你就需要关注一下自己到底使用了多少CPU minutes。

  如何减少使用的CPU资源

  通常降低CPU minutes的方式是,禁用主机上的gzip压缩传输(有时可以降低高达75%,WordPress可以在管理界面禁用gzip),减少数据库查询,优化脚本。

  如何查看自己的CPU资源报告

  首先登陆DreamHost管理台,在Manage Users中编辑你的用户,选中CPU Reporting,通常一天以后就可以看到报告了。

  查看报告有两种方法,一种是通过FTP或者SSH登陆后,在logs/resources/目录下可以看到最近七天的报告文件。

  另一种方法是通过WEB页面访问,每个域名都会有一个统计页面,使用 http://yourdomain.com/stats/resources 这个地址可以直接查看报告文件。

  在CPU资源报告文件中,通常我们只要注意CPU seconds这一列就可以了,将里面的数字除以60,就可以得到用户当天的CPU minutes,看看这个数值是不是大于60,如果是的话,就要注意减少使用CPU资源了,如果超过150 CPU minutes还不解决的话,那就离被封不远了。

  根据我的一些经验,达到60 CPU minutes其实并不难,一个每天有3000IP的WordPress或者一个每天500IP的Discuz论坛都有可能达到这个标准,这里面的原因也有DreamHost自己过度销售的错误

  英文版:DreamHost CPU minute restrictions

WordPress 2.5宽屏版

  我曾经在一篇文章中讨论WordPress 2.5在宽屏下的显示异常,几乎所有的界面,都是针对1024×768设计的,针对1440×900的宽屏显示器,会只显示左边部分,使用操作起来特别的别扭,而这个问题在2.3版本里就没有,因此对于宽屏显示器的用户,可以通过修改admin的css来达到良好的观看效果。

  经过一番研究,发现修改成为宽屏版并不难,修改其实很简单,就是编辑wordpresswp-admincssglobal.css,找到第159行和第166行,将max-width: 980px;以及max-width: 950px;修改为max-width: 1400px;(或者max-width: 98%;)即可。

  修改之前在1440×900的显示器下的效果如下图,可以看出界面很别扭。

WordPress 2.5宽屏版

  修改之后在1440×900的显示器下的效果如下图,显示效果比原来的好多了。

WordPress 2.5宽屏版

  如果你也在使用1440×900的显示分辨率,不妨做一下修改,使得界面更好看一些。

  英文版:WordPress 2.5 Widescreen Version

2008年4月23日星期三

网络入侵检测系统的主动响应技术

  今天,新浪网的首页头条出现了一条令人惊讶的新闻《国外三大通讯社屏蔽反藏独信息》,据该新闻报道,千龙网记者使用路透社中文网的新闻搜索引擎,以“藏独”等热门关键词进行搜索,居然出现“该页面无法显示”,因此该记者认为,西方媒体刻意放大了“藏独”的声音,弱化、甚至屏蔽反藏独信息。

  诚然,早些时候西方部分媒体的某些不实报道令人愤怒,但是我们的媒体需要通过谎言来反击西方媒体的不实报道吗? 记者声称在路透社网站搜索“藏独”会出现“该页面无法显示”(在Firefox浏览器下会出现“连接被重置,载入页面时到服务器的连接被重置”的提示),这实际上是不懂网络知识的外行产生的一种误解,这种误解在“Google搜索南京大屠杀的谣言背后”的那篇文章之中我也有提及。

  这里面需要补一些网络技术知识,主要是关于入侵检测系统的知识,以下是我所学过的一本教材《信息安全技术教程》中的相关阐述。

  入侵检测系统(Intrusion Detection System,简称IDS)是由硬件和软件组成的,用来检测系统或者网络以发现可能的入侵或攻击的系统。入侵检测系统通过定时的检测,检查特定的攻击模式、系统配置、系统漏洞、存在缺陷的程序版本以及系统或用户的行为模式,监视与安全有关的活动。

  从系统结构上来看,入侵检测系统至少包括信息源、分析引擎和响应三个功能模块。信息源为分析引擎提供原始数据进行入侵分析;分析引擎执行实际的入侵或异常行为检测;分析引擎的结果提交给响应模块,响应模块采取必要和适当的措施,阻止进一步的入侵行为或回复受损害的系统。

  ……

  入侵检测系统的响应可以分为主动响应(Active Response)和被动响应(Passive Response)。在主动响应中,系统自动地或以用户设置的方式阻断攻击过程或以其他方式影响攻击过程;而在被动响应中,系统只报告和记录发生的事件。

  对付入侵者可以通过某种方式来进行。例如,入侵检测系统可以断开与其之间的网络会话,如向攻击方的计算机发送TCP的RESET包,或者发送目标不可达(ICMP Destination Unreachable)包,系统也可以控制一个防火墙或者网关去拦阻来自入侵发起IP地址的数据包。

  以上知识援引自中国人民公安大学出版社发行的《信息安全技术教程》(全国信息网络安全专业技术人员继续教育培训教材)第六章“网络安全”,如果知道了这些网络安全知识,我们就能很清楚的知道“到底发生了什么事”。很明显,该文的记者在搜索“非法关键字”的时候自动触发了入侵检测系统,入侵检测系统以主动响应的方式发送了RESET包,导致了网络连接被重置,所以会出现“该页面无法显示”的情况,并非是因为“国外三大通讯社屏蔽反藏独信息”的原因。在中国第一大新闻网站的头版头条竟然出现这样一个颠倒黑白、指鹿为马的新闻,实在令人汗颜。

2008年4月22日星期二

Java在Web开发语言上败给了PHP

  PHP的主要语言开发者之一、Zend公司的创始人之一Andi Gutmans最近在blog中直言不讳地批评了Java语言。他指出,目前Java厂商试图在JVM上提供动态语言实现的路子根本不对,Java已经输掉了Web开发语言的战争,PHP是事实上的标准和胜利者。

  Gutmans的这篇文章在技术界引发了强烈争议,很对人对此有不同的意见,我在这里就阐述一下我对PHP和Java两种语言的看法。

  我早先曾经在《Perl、PHP、ASP、JSP技术比较》一文中对比过PHP和Java的异同,简而言之,PHP是一种解释执行的脚本语言,语法和C语言类似,易学易用,不懂电脑的非专业人员稍经学习也能使用PHP.而Java要先编译成Class文件,然后在Java虚拟机上执行,Java开发需要熟悉Java语法以及一些核心的架构,从而实现一种可复用的、跨平台的软件,Java比PHP要难学的多。

  实际上,从技术架构来说,Java语言相比PHP有明显的优势,Java使用的是面向对象的系统设计方法,而PHP还是采用面向过程的开发方法。PHP只能实现简单的分布式两层或三层的架构,而JAVA可以实现多层架构。数据库层(持久化层)、应用(业务)逻辑层、表示逻辑层彼此分开,而且现在不同的层都已经有一些成熟的开发框架的支持。例如Struts就是利用Java的web开发技术实现了MVC的设计模式,而在业务逻辑层也有Spring框架,数据库持久化层有Hibernate等框架。这些框架可以方便开发者高效、合理、科学得架构多层的商业应用。从数学运算和数据库访问速度来讲,Java的性能也优于PHP.实际上,对于跨平台的大型的企业应用系统来讲,Java几乎已经成为唯一的选择(微软.NET不支持跨平台),但是在于Web网站应用开发来讲,Java却面临着被PHP边缘化的危险,几乎所有的虚拟主机都支持PHP+MySQL,而支持Java的却少之又少,在资源上,网上有不计其数的PHP资源,很多著名的大型网站(例如Facebook、Mediawiki等)都是基于PHP的,而成功的Java网站却寥寥无几,这又是什么原因呢?

  Java的理念是“一次编写,到处运行”,Java在应用框架底下的架构是无与伦比的,远胜过其他任何语言,Java的框架利于大型的协同编程开发,系统易维护、可复用性较好。而PHP很容易自学,让热备能快速简洁地编写代码,适合于快速开发,中小型应用系统,开发成本低。在调试、发布上,PHP也较Java简单。

  理念上的不同导致了Java和PHP在Web应用开发上显示了不同的结果,尽管Java的数学计算和数据库访问都有优势,架构也相当完美,但是PHP却可以简单轻松地支持高强度Web访问,能够快速开发应用,支持PHP的虚拟主机多如牛毛,使得用PHP开发一个网站比用Java开发一个网站要快得多,容易的多。Java所拥有的优点只适合传统的以软件项目为核心的开发模式,而PHP更适合于以客户为核心的SaaS的开发模式,因此,PHP目前在Web网站开发的优势完全是因为Web网站开发的特殊性而导致的,并非编程语言特性所决定。

  因此,PHP在Web网站开发语言的战争中已经慢慢将Java抛在了后面,Java要想在Web网站开发上奋起直追,的确应该多听听Andi Gutmans的意见,彻底改变一下思路才行,否则两者的差距只能是越来越远。

  另外,虽然在国际上LAMP(Linux+Apache+Mysql+Php)架构已经占领了统治地位,但是在中国国内还有一个怪胎,就是基于微软的Windows Server+IIS+SqlServer+ASP/ASP.NET的架构,从理论上说,微软的这一套架构也能实现不错的性能,只可惜Windows和SqlServer价格不菲,整个架构在性能上比起LAMP不仅没有什么优势,反而还有不少劣势,因此微软的这一套家伙在国际市场上吃不开。而国内使用微软盗版则可以忽略成本,而ASP的易学易用性不逊于PHP,甚至连IT外行都能够使用,因此在国内也有不小的市场。但是随着中国在保护知识产权方面的日趋完善,免费的LAMP依旧是未来的趋势。

2008年4月21日星期一

通过手机免费上传图片到Flickr

  现在的手机大多数都能拍摄出不错的照片,人们外出旅游使用手机可以方便的随时随地拍摄照片,而且很多都能拍出高质量的照片。所以通过手机将拍摄的照片上传到网络相册是一个很有用的功能。今天我要是能早点将照片上传到Flickr,也不至于被人删除掉找不到了。

  中国移动给出的上传方案通常是通过彩信(MMS)的方式上传,彩信是要收费的,上传大量照片则费用会比较高,对于已经开通了GPRS功能的中国移动用户,其实可以通过另外的方法上传图片。

  对于Flickr来说,目前有两个主要的手机上传图片的方法:

  1、通过客户端软件上传,例如ShoZu这个软件,可以支持用户通过手机上传图片到Flickr。不过这个软件支持的手机种类有限。

  2、通过Flickr的手机版上传,通过手机访问http://m.flickr.com,登录之后就可以在里面上传照片了,上传之后还可以设置照片是公开还是私密的。这种方法支持的手机较多,只要手机支持Java,都可以使用这种方法上传。不足之处是对于有的手机只能访问某几个指定目录。

  除了Flickr之外,国内的Yupoo和巴巴变都支持手机上传照片。

  最后需要注意,这种上传的方法虽然是免费的,但是GPRS包月的流量是有限制的,上传时候请注意一下流量是否足够,以免付出额外的流量费用。

2008年4月20日星期日

国外虚拟主机选购指南

  国外的虚拟主机和国内的相比有不少的优点,例如不用去备案,价格相对低廉,稳定性也好,虽然从国内访问速度稍微慢一些,但的确是一个低成本创建一个网站的好方案。国外的空间基本上是基于Linux+Apache+MySQL+Php的,由于PHP已经事实上统治了网站设计语言的标准,因此国内人也基本可以放弃继续使用ASP了。

  然而,国外的虚拟主机依然是鱼龙混杂,甚至有一些很著名的虚拟主机供应商也在搞猫腻,我购买国外虚拟主机已经有很长一段时间了,我的月光博客英文网站在使用国外虚拟主机的这段时间也遇到了种种以前没想到的问题,因此我就再次总结一些选购和识别国外优秀虚拟主机的方法,供大家参考。

  虚拟主机的原理,就是把一台真正的主机分成许多“ 虚拟”的主机,它们之间完全独立,使得多个用户共享一台真实主机的资源,节省用户的硬件费用和流量费用。通常虚拟主机的价格都是每月5至10美元左右,非常低廉,虚拟主机商为了从有限的服务器和网络资源中获得最大的利益,那么就必须要侵害了用户的利益,过度销售(Overselling)虚拟主机,因此,只有识别出过度销售(Overselling)的虚拟主机,才能选择到一个稳定而优秀的虚拟主机。

  如何识别出过度销售(Overselling)的虚拟主机,我这里总结了几个要点:

  容量与流量参数的诡计

  绝大多Overselling的虚拟主机商都在玩一个数字游戏,每月不到10美元,就可以购买超大容量和流量的主机,其容量和流量参数往往比租用一台服务器的流量还要大,举个例子,使用独立服务器的月光博客目前的月流量只有450G,而几乎所有Overselling的虚拟主机都声称能提供每月超过1000G的流量,当然这个承诺是永远无法兑现的,如果你真有一个每月1000G流量的网站,那么绝对不能考虑这些Overselling的虚拟主机,因为在你还没有使用到百分之一左右的流量时,通常这些虚拟主机商都会以使用了过多资源为由而终止你的服务,受骗的用户实际上并没有认识到巨大的空间和流量与使用的CPU和内存资源是两回事,如果你使用了很多的流量,主机商不会以使用过多流量而是以使用超额CPU和内存资源为由终止服务。

  按年支付的风险

  几乎所有的Overselling的虚拟主机的付款方式都是以按年支付为准则的。要么他们只支持按年付款,不支持按月付款,或者按月付款的价格和按年付款的价格相差巨大,迫使用户选择按年支付。为什么这些主机商要这么做呢?因为他们的限制CPU和内存的方式肯定会引起用户对购买的虚拟主机不满意,用户肯定会终止付费重新选择主机商。如果按月支付,用户发现这个主机速度很慢或者服务不好,那下个月就可以中止支付而去选择其他主机,对于个人来说风险较小而没有什么损失。如果是按年付费通常将会得不到退款,损失了一年的费用。虚拟主机商通过这种方法迫使用户多支出了一笔费用,赚取了黑心钱。而通常不搞Overselling的正规而自信的主机商都乐于提供按月支付方式,而且按月支付的价格和按年支付不会相差很大。

  推荐回扣奖励

  搞Overselling的虚拟主机为了扩大用户群,会采用回扣奖励或现金返还的形式进行促销,即用户推荐一个新的主机注册用户,推荐人可以得到金额奖励或者回扣,类似于传销的形式。搞这类活动的基本上都属于Overselling的虚拟主机。他们确实通过这种形式获得了大量用户,但其主机质量却会随着用户的增加而降低。

  可绑定的域名数量

  搞Overselling的虚拟主机提供几乎不受限制的域名绑定,一个用户可以在虚拟主机上绑定无数的网站,很多人喜欢这种功能。但是我们要知道,一台服务器的资源是有限的,绑定的网站越多,耗费的资源就越大,这样的结果是网站的响应速度和稳定性就降低,经常出现500错误,例如我购买的某个虚拟主机,上面竟然绑定了一千多个FTP用户,这样的虚拟主机能好用吗?因此,正规的虚拟主机商提供1、2个域名绑定其实就能保证大多数用户的利益了。

  以上就是我总结的一些识别出过度销售(Overselling)的虚拟主机的技巧,如果你使用的WordPress或者论坛有可能达到每天1万IP访问,那么最好不要选择Overseelling的虚拟主机,因为他们的CPU限制会导致网站访问极不稳定。当然,如果你有很多小网站,或者网站全部是HTML格式,很少使用PHP和MySQL,那也可以选择Overselling的虚拟主机,因为纯HTML的页面消耗CPU很小,不会产生很大负荷。否则的话,最好选择限制流量而非限制CPU的虚拟主机。

  我建议的非Overselling的虚拟主机,通常价格为5到10美元,限制流量为每月100G以下,绑定1-2个域名。这种参数的虚拟主机通常是不会限制CPU的,适合那些每天访问量超过1万IP的动态PHP网站的选择。

2008年4月19日星期六

Alexa更新网站排名算法

  据Alexa报道,4月17日,Alexa宣布自己的算法进行了更改,很多互联网网站的排名出现了不同程度变化,新的数据统计将不再完全依赖Alexa工具条所反馈的流量数据,而会同时参考“多个数据来源”,以提高其全球网站流量排名的权威性。

  原有的算法主要依赖Alexa工具条反馈的数据,由于Alexa工具条的安装量很小,使得Alexa的流量排名越来越不准确,特别对于中国的大部分网站来说,原有的Alexa已经渐渐失去了参考价值,因此Alexa不得不修改自己的算法,参考了“其他数据来源”。

  其他的数据来源,我觉得Google可能更有权威度一些,Google工具栏的装机量非常庞大,同时Google还有Google Analytics(分析)和FeedBurner这样的精确级流量统计工具,如果一些排名都由Google完成,其准确度可能比Alexa还要高一些。

  我的博客的Alexa为两万多,好像有所提高,据说大部分中文网站的排名也有提高,英文网站好像有降低的,例如Problogger从3xxx降低到12917,JohnChow由5xxx降低到17088,莫非这些博客大拿们以前在刷Alexa流量?

  附录:Alexa关于更新算法的说明

  原文地址:http://www.alexa.com/site/company/announcement (CNET中国翻译

  最近几个月,我们不断从ALEXA用户听到这样的反馈:研究ALEXA工具条以外的用户的互联网行为变得越来越重要。对此,我们询问,并接受!

  我们倾听您的建议,我们相信我们的新的排名系统会更加符合您的要求。我们现在从各种各样的渠道来收集数据,以便能向您展示一个反应大多数互联网用户意志的更好的排名体系。

  您们给予我们的更多的其他意见,我们将会在以后努力实现。现在我们还不能告诉你们更多秘密,但是,在未来几周,我们产品的一些新的特点将会陆续呈现在您眼前。

  下面是一些问题和我们的回答:

  问:我的网站排名变了。以前的数据错了吗?

  答:你的网站之前的数据没有错,只是变了而已。安装ALEXA工具条的用户,在上网兴趣和习惯上可能和其他的一般网民在许多方面有所不同,我们只不过是把这种“不同”,在我们的网站上表现出来了。绝大多数网站的排名都不会受到这种“不同”的影响,同时我们也会努力使我们的新的排名机制更好地反应真实。

  新的排名机制将会更好地反应绝大多数网民的上网兴趣和习惯。

  问:为什么图表当中1年和3年的选项不见了?我只能看9个月的历史数据。

  我们正在重新算数据,将会在最近几周陆续将历史数据加进来,我们很快就会把最近几年的数据恢复。对于由此造成的不便,我们深表歉意。

  问:你们还会再次改变排名吗?

  答:我们一直都在努力确保我们提供的数据是最有用的数据。我们将会继续调整我们的算法,但是我们不能预测是否会发生任何大的数据变化。如果你发现有错误,请及时通知我们。

  问:我更喜欢以前的排名。哪些排名还能看到吗?

  答:我们也喜欢以前的排名。但是,我们是根据来自像您这样的许许多多的用户的反馈,来调整和开发我们新的系统的,既然已经完成了,我们更喜欢新的排名。我们也希望你会喜欢。

  我们认为同一时间有两套排名体系会让人混淆的。所以,我们取消了旧的排名体系。

  问:你们想知道我对此事的看法吗?

  答:当然!最近几个月以来,我们一直在收集各方的意见和建议,我们还将乐意倾听更多的声音。如果您对我们的调整有任何想法或者意见的话,请与我们分享。