全球旧事资料 分类
原因是防止http请求的时候,带上了多余的cookie信息),我获得的IP是1836021790。
6
f白鸽学吧
这种方式,和前面的DNS负载均衡一样,不仅性能极佳,而且支持配置多种策略。但是,搭建和维护成本非常高。互联网一线公司,会自建CDN服务,中小型公司一般使用第三方提供的CDN。
Web系统的缓存机制的建立和优化
刚刚我们讲完了Web系统的外部网络环境,现在我们开始关注我们Web系统自身的性能问题。我们的Web站点随着访问量的上升,会遇到很多的挑战,解决这些问题不仅仅是扩容机器这么简单,建立和使用合适的缓存机制才是根本。
最开始,我们的Web系统架构可能是这样的,每个环节,都可能只有1台机器。
我们从最根本的数据存储开始看哈。
一、MySQL数据库内部缓存使用
MySQL的缓存机制,就从先从MySQL内部开始,下面的内容将以最常见的I
oDB存储引擎为主。1建立恰当的索引
7
f白鸽学吧最简单的是建立索引,索引在表数据比较大的时候,起到快速检索数据的作用,但是成本也是有的。首先,占用了一定的磁盘空间,其中组合索引最突出,使用需要谨慎,它产生的索引甚至会比源数据更大。其次,建立索引之后的数据i
sertupdatedelete等操作,因为需要更新原来的索引,耗时会增加。当然,实际上我们的系统从总体来说,是以select查询操作居多,因此,索引的使用仍然对系统性能有大幅提升的作用。
2数据库连接线程池缓存如果,每一个数据库操作请求都需要创建和销毁连接的话,对数据库来说,无疑也是一种巨大的开销。为了减少这类型的开销,可以在MySQL中配置thread_cache_size来表示保留多少线程用于复用。线程不够的时候,再创建,空闲过多的时候,则销毁。
其实,还有更为激进一点的做法,使用pco
ect(数据库长连接),线程一旦创建在很长时间内都保持着。但是,在访问量比较大,机器比较多的情况下,这种用法很可能会导致“数据库连接数耗尽”,因为建立连接并不回收,最终达到数据库的max_co
ectio
s(最大连接数)。因此,长连接的用法通常需要在CGI和MySQL之间实现一个“连接池”服务,控制CGI机器“盲目”创建连接数。
建立数据库连接池服务,有很多实现的方式,PHP的话,我推荐使用swoole(PHP的一个网络通讯拓展)来实现。
3I
odb缓存设置(i
odb_buffer_pool_size)i
odb_buffer_pool_size这是个用来保存索引和数据的内存缓存区,如果机器是MySQL独占的机器,一般推荐为机器物理内存的80。在取表数据的场景中,它可以减少磁盘IO。一般来说,这个值设置越大,cache命中率会r
好听全球资料 返回顶部