海归网首页   海归宣言   导航   博客   广告位价格  
海归论坛首页 会员列表 
收 藏 夹 
论坛帮助 
登录 | 登录并检查站内短信 | 个人设置 论坛首页 |  排行榜  |  在线私聊 |  专题 | 版规 | 搜索  | RSS  | 注册 | 活动日历
主题: [民工日记]LAMP网站建设 之性能优化篇(下)
回复主题   printer-friendly view    海归论坛首页 -> 海归茶馆           焦点讨论 | 精华区 | 嘉宾沙龙 | 白领丽人沙龙
  阅读上一个主题 :: 阅读下一个主题
作者 [民工日记]LAMP网站建设 之性能优化篇(下)   
mmpower
[博客]
[个人文集]




头衔: 海归少将

头衔: 海归少将
声望: 专家
性别: 性别:男
加入时间: 2004/02/24
文章: 3697
来自: 3333
海归分: 244820





文章标题: [民工日记]LAMP网站建设 之性能优化篇(下) (2887 reads)      时间: 2008-4-19 周六, 13:56   

作者:mmpower海归茶馆 发贴, 来自【海归网】 http://www.haiguinet.com

7. reverse proxy/cache

reverse proxy又称http accelerator是在web server 前面加一道proxy, 所有request先经过proxy, 如果是在proxy缓存内的内容则不用经过web server直接就从缓存取出内容返回给用户的浏览器, 否则转给后面的web server.这样大大减轻了web server 的负担,从而使web server可以专注与处理动态页面,而可以缓存的静态页面则由更加快速轻便的proxy直接返回给用户, 从而提高了系统的总体处理能力和响应速度.

老牌open source proxy 软件Squid就可以用来做reverse proxy/http accelerator.

Apache 的mod_proxy 和mod_cache也可以结合起来达到相同功能.

squid 稳定版本现在是2.6和3.0. 2.6尚不支持http 1.1. 2.5问题较多,建议不要使用.

有一个比较新的开源软件 varnish是专门的reverse proxy软件, 从架构和原理来说性能很好并且非常灵活, 通过一种简单而功能强大的编程语言VCL定制你的policy;问题是对于新手掌握VCL并写出安全而又符合自己需要的control script不是意见容易的事. 我试用了varnish一阵,可能是自己的VCL写的有问题, 在performance上还不如squid, 而且一不小心还会出错...所以暂时放到一边,有时间再慢慢研究. 但是长远来说, varnish在这个领域非常有潜力.

除了caching, reverse proxy 还可以用于集成不同平台的后台web server, 甚至用于作load balancing.


8. PHP opcode cache/accelerator/opcode optimizer


所谓php opcode cache, 就是把编译后的php opcode 缓存起来, 从而不必每个请求都编译一边, 大大提高了php的执行效率.

open source中APC, Turke MMCache(eAccelerator的前身)/eAccelerator是老牌的; 其中eAccelerator在众多评测中声誉甚佳, 并且还有 opcode优化, cache压缩以及很好的管理界面等优点. 但在海归网的服务器上, 或许是设置或者海归网应用本身的原因, eAccelerator的表现实在是强差人意,甚至还不如不用.

对几种opcode cache反复试用的结果, xcache的效果最好, 切切实实地加快了PHP的执行速度. 在网上搜索一下, Xcache的用户满意度都很高。 xcache目前还没有opcode 优化功能, 期望在这方面能更进一步。


9. data cache

对于server side的缓存,一般来说可以有几级cache:

用户请求-->reverse cache, 若命中, 则直接返回
否则 --> web server ;
查询数据首先查 data cache; 若命中则不用查询数据库
否则查询数据库-->DBMS首先查自己的query_cache, 若命中则直接返回结果不用到磁盘上进行查询


这里说的是data caching.

由于php web applicaiton基本上来说是一种shared-nothing的架构, 每次请求是与其他请求基本是互不相干的, 不像J2EE或.NET一样数据可以缓存在内存里(比如jaba servlet或asp.net的session), 所以缺省是无法在内存里缓存数据的而是每次请求都得重新查询一遍数据库; 为了减少或简化数据库的访问(因这往往是瓶颈), 一般的数据缓存方法有:

--数据存储在文件里
-- 数据存储在数据库表里:把耗费资源的复杂查询或计算的结果放到简单的数据库表中供以后重用,
-- 数据存在 shared memory里, 从而多个php进程在多次请求间可以共享.
-- 数据存在专门的caching服务中.


从性能来说,存贮在shared memory里是最快的.

如果只有一台服务器, 那么可以利用eaccelerator/xcache提供的功能--除了cache php opcode之外, 这些工具也都提供了直接cache应用程序数据到内存里的功能. 例如, 使用xcache的 API很简单:

if (xcache_isset("my_key")) {
//从cache取出数据
$data = xcache_get("my_key);
...
} else {
....
//把数据存到cache里
xcache_set("my_key", $new_data, 3600); // save data for 1 hour
}


但是如果是多台web server, 很多时候就无法在本地机器的内存里cache数据了,因为会有数据一致性的问题。这种情况下一个很好的解决方法是使用memcached.

memcached 是开源的分布式caching 服务,支持几乎所有主要编程语言,客户端接口包括php/java/puthon/ruby/.net/perl/c 等。客户通过tcp/ip协议访问memcached缓存。最早是live journel网站为了解决多服务器数据缓存问题开发的,现在在许多著名的大流量网站上被使用,例如facebook, wikimedia, slashdot, sourceforge等等。

php的memcached 接口是一个zend extension需要下载编译; 当然还需要下载安装memcached 本身。



10. easy traffic limiting with iptables, 禁止 hotlinks etc

这个本来跟服务器性能无关,但是由于经常网站变得很慢是由于一些网站蜘蛛(有些是搜索引擎,有些是些恶意蜘蛛或者到处乱抓网站内容的)无休止频繁的扫网站,搞得服务器不堪重负。 一般简单的方法是在apache里禁止user agent 或者禁止ip, 但效果不好。用iptables的recents模块可以在ip层对client进行限速。

举个例子, 以下这两条iptables规则:

iptables -I INPUT -p tcp --dport 80 -i eth0 -m state --state NEW -m recent --set

iptables -I INPUT -p tcp --dport 80 -i eth0 -m state --state NEW -m recent --update --seconds 600 --hitcount 2 -j DROP


的意思是说, 任何用户不能在600秒内访问本机器的web server (tcp 80端口)平均超过2 次。若超过则请求将被丢掉(客户端的表现就是服务器没响应)。

也就是说, 来自同一个ip的蜘蛛或恶意攻击者将无法在短时间内对服务器发起大量连接请求导致服务器瘫痪。

另外, 由于直接在别的网站链接本站的图片会导致服务器流量过大, 降低服务器性能, 有时被迫在apache里禁止无本地referer的访问图像请求。 不过现在海龟网的图像文件已经转移到了另一个server上也就没有这个限制了。


匆匆草就,先睡了。 以后有时间再瞎聊下scalability与availabilty。

作者:mmpower海归茶馆 发贴, 来自【海归网】 http://www.haiguinet.com




标签:  民工日记,LAMP,性能,




相关主题
[民工日记]LAMP网站建设 之性能优化篇(上) 海归茶馆 2008-4-18 周五, 13:21
[民工日记]自己写个简单MP3 ID3 tag转码工具 海归茶馆 2008-4-14 周一, 13:35
[分享]独家披露神秘民工日记:在那些打磨汉芯的日子里 海归论坛 2006-5-13 周六, 18:27
网站建设,打造优秀网站 海归招聘 2015-9-14 周一, 14:02
哪位大侠知道,哪个网站或论坛是讨论网站建设或功能的? 海归商务 2013-7-09 周二, 15:16
[分享]情感日记直放站,那些无法释怀的回忆 生活风情 2012-5-11 周五, 16:36
世界知名日企 在京招聘 [ 高级官网顾问 副经理级 ],需日语、网站传播采购经验 海归职场 2011-3-11 周五, 11:56
【国内IT民工小记】-草丛里笑的阿莎 生活风情 2009-8-08 周六, 18:14

返回顶端
阅读会员资料 mmpower离线  发送站内短信 浏览发表者的主页
显示文章:     
回复主题   printer-friendly view    海归论坛首页 -> 海归茶馆           焦点讨论 | 精华区 | 嘉宾沙龙 | 白领丽人沙龙 所有的时间均为 北京时间


 
论坛转跳:   
不能在本论坛发表新主题, 不能回复主题, 不能编辑自己的文章, 不能删除自己的文章, 不能发表投票, 您 不可以 发表活动帖子在本论坛, 不能添加附件不能下载文件, 
   热门标签 更多...
   论坛精华荟萃 更多...
   博客热门文章 更多...


海归网二次开发,based on phpbb
Copyright © 2005-2024 Haiguinet.com. All rights reserved.