Username: Password:

给您三万块做百万级数据量的网站,用Perl您敢做吗?
来源:linux宝库作者:linux宝库 发布时间:2007-09-30 00:00:00


  没有那个老板是傻逼,假如您的老板在某年某月的某一天给您一个任务,他只给您三万块(包括买服务器和软件的钱),让您做一个数据量将会有百万到千万条的网站。您会想到用什么技术来实现?是PHP吗?是ASP吗?是JSP或是其他的什么的?您是否考虑使用Perl来实现?

  三万是什么样的情况?

  您想过吗?

  三万块能够购买一台PIII1.0G以上的服务器,配备有100MB的网卡,有1.0G以上的内存,一些SCSI硬盘,还能够买一套Linux,安装一套MySQL,更有一年的服务器托管费。您的网站还要承受每天200万次以上的访问量。如此的配置您更有什么想法?

  没考虑过用Perl

  那么好,我能够给您一种解决方案,是众多方案之一的方案,他能够帮您顺利过关,请继续看下去。

  考虑过CGI

  您绝对是准备被抄掉,不论怎样,绝对不能使用CGI技术。为什么?为什么?CGI技术是一种全球通用性最好,最慢的方案。假如您的网站使用了CGI,您将为此耗费大量CPU和内存,并且无法承受如此大的访问量。

  再周详分析一下

  当一个人访问的时候:他会产生一个CGI进程、他会产生一个数据库连接进程、他会产生一个HTTPD进程、他会用CGI向数据库发送一条检索百万分之一数据的请求,您的CPU将被使用99%。这种情况下,您还怎么用CGI?难道您不知道每秒的并法流是有限的吗?

  假如我非的用Perl呢?

  做事情的方法不但仅只有一种。假如您的老板真给您那么苛刻的需要,真的让您用这么破的机器来做。那我推荐您用绝佳的组合Linux+MySQL+Apache2+Perl5.8+ModPerl2

  ModPerl和CGI有何区分?

  顾名思义,ModPerl就是将Perl解析器同Apache一同编译的持续连接技术。ModPerl将Perl解析器或程式本身编译并且驻留内存,有程式发来请求将不产生任何CGI进程。

  ModPerl::Register

  我们一定要使用ModPerl::Register(一种运行方式),APACHE会将您的Perl程式,您的Perl模块一同编译到内存中,当您再次请求,您是从内存中获得,而不是从磁盘上产生任何进程。当我们连接数据库的时候,ModPerl只向MySQL提出一条数据库连接请求,不会产生多个数据库进程。

  当然,您的CGI程式将可能无法运行在ModPerl::Register模式下,他的内存控制更严格。

  ModPerl2+Apache2的性能怎样?

  在那样破的机器上的ModPerl2理想值至少能够实现每天1700万次的访问。

  注:理想值表示,根据个人编程的能力连同不同语言的内部结构不同所提出的最好情况。

  您常使用MySQL吗?

  当您的表结构不合理,会大大降低数据库的性能。

  当您在表中where id = ‘’的时候假如id没有被配置成为INDEX您将无法获得0.02秒得到结果,只使用10%CPU的性能。

  您是不是还只会用like来搜索?请使用MySQL4.1.1以上的FULL TEXT全文检索技术来实现搜索,假如您一百万条数据,您用like搜索您将至少(是至少)使用30秒来完成一条检索语句,假如您使用FULL TEXT技术将只使用0.05秒以内,当然请注意,您的CPU会不会FULL

  您有没有启用MySQL的查询缓存?MySQL4.1.1以上能够将需要查询的内容进行缓存,您怎么还不用呢?

  能做在一个表里的数据就不要做在多一个表中,在MYSQL中转换表的速度要比查询大表慢的多。

  请注意什么不能做缓存,MySQL的查询缓存不能缓存函数条件查询。Where date > (now()-1)这些使用函数的查询条件结果将不被缓存。

  您的网站后台什么样?

  假如您的网站每天有几千,几万条的数据要更新,您的后台还通过页面操作,那肯定要慢。不但仅操作人员慢,他将拖累服务器。请您使用应用软件研发专用后台程式吧。

  怎样让Perl程式提高效率?

  在Apache启动的时候就将需要的模块驻留在内存中

  在程式中尽量少打开表

  MYSQL中多用INDEX多用FULL TEXT

  我象上面这么做行吗?

  我跟您确保,我测试过,每天200万个请求绝对没任何问题。

  以上环境的安装配置方法

  注意事项

  多看英文Document

  Perl更有那些方法是做中型网站

  FastCGI技术:FastCGI技术也实现了高性能,低资源使用

  SpeedyCGI技术:一种CGI改良技术,虽然效果差,但无需修改程式

  Apache::ASP:使用Perl语言解析ASP的技术

  HTML::Mason:一套专为大型网站设计的引擎,包括脚本语言及管理方法。顺便提一下著名的www.amazon.com就是使用的这个技术

  您应该能够让BOSS更省钱

  同样的性能,您不应该提倡让BOSS使用高额资金的技术。这是您应该做的,您的BOSS可能会更欣赏您,兴许会把节省的钱分一部分给您。

  Perl的现在和未来

  曾2001年的时候就有人说Perl不行了。我1999年用到今天碰到过很多所谓的各种高手,各种专家。能够肯定的说,他们的认为都是放屁。自今我未发现,任何一种技术超过Perl。当然Perl现在也未超过他们,仅仅是大家相同而已。

  Perl的未来大家假如关心能够去www.perl.org看关于Perl6技术,这是一种令人兴奋的技术。

  最后一句,假如以上方法不能让您在三万块钱的设备上提供百万条数据,百万次访问。您来砍我。

  Hoowa.sun

  www.perlchina.org

  www.ilcatperl.org

喜欢本文,那就收藏到:

    Del.icio.us Google书签 Digg Live Bookmark Technorati Furl Yahoo书签 Facebook 百度搜藏 新浪ViVi 365Key网摘 天极网摘 和讯网摘 博拉网 POCO网摘 添加到饭否 QQ书签 Digbuzz我挖网
相关评论  我也要评论
还没有关于此文章的相关评论!
  • 昵称: (为空则显示guest)
  • 评论分数: ★ ★ ★★★ ★★★★ ★★★★★
  • 评论内容:(不能超过250字,需审核后才会公布,请自觉遵守互联网相关政策法规。
  • 导航
    赞助商
    文章类别
    订阅