高并发总结(转)

下面是一个牛人所做的总结

高并发时,性能瓶颈及当前常用的应对措施

1.数据库瓶颈。Mysql并发链接100

2.apache并发链接1500

3.程序执行效率

1.有数据库瓶颈时,当前处理方案无外乎主从,集群。增加cache(memcached).

如:手机之家新系统介绍及架构分享(http://www.slideshare.net/Fenng/ss-1218991?from=ss_embed)

就是在cache层做优化

又拍网架构(http://www.bopor.com/?p=652)

是以增加数据库,分表分库的方法解决。

Sina增加了mq(消息队列)来分发数据。

还有风站用了key-value的数据库。其实这可以理解成一个持久化的缓存。

2.apache瓶颈。

增加服务器。负载均衡。如sina的F5

由于进程数的限制。会把一些基本不变的代码挪出来放到单独的服务器。如css/js/图片。

国内成功的案例是tom的cdn

又如nginx的横空出世和squid的反向代理都是基于这个原因出来的。

3.php的执行效率。原因有多个。

1).本身的效率低。

解决的成功案例是ZendOptimizer和facebooke的hiphop

Taobao是把php代码编译成模块解决效率问题。

2).数据库查询效率问题。如可能有orderby,groupby等Sql数据问题。

这个其实应该归结到数据库设计问题。

解决的办法是建立正确的索引。增加memcache.。

对like表用专用的sphinx.和lucence等搜索服务。

程序员都应该会用explain对sql语句作分析。

Nginx代理图片、css等静态文件

varnish反向代理,缓存shtml(可缓存动态文件)

resin处理不必缓存的动态文件

MVC和Hibernate中增加缓存

并发量大的时候加集群

相关推荐