构建高性能WEB站点(三)

来源:互联网 发布:html5软件开发 编辑:程序博客网 时间:2024/06/11 09:56

第十一章数据库性能优化

原因:引入缓存策略后,数据库访问仍然不会少

      数据库写操作很难引入缓存策略(事务)

11.1 数据库状态报告 MySQL show statusshow innodb status、第三方工具 mysqlreport

11.2 正确使用索引

    1)大多数情况下索引扫描快于全表扫描(不绝对)

    2)索引自身查找也有开销(一般不用考虑,索引的数据结构一般有非常有效的查找算法)

    3)索引会增加插入数据的开销

    4)使用explain分析SQL查询语句的索引使用情况

5)数据库一次扫描只能使用一个索引(可以引入组合索引)

6)组合索引的错误使用将带来更高的查询开销(explain

7)使用慢速查询分析工具(MySQL my.cnf修改配置 long_query_time = 1 log-slow-queries = /datat/var/mysql_slow.log记录慢速查询日志),log-queries-not-using-index没有使用索引的查询语句

8)索引缓存

  11.3锁定与等待锁机制主要影响查询等待时间

      1)减少表锁定等待(update会阻塞select操作并且具有较高优先级)

      2)行锁定(行锁定开销与表锁定基本一致,但是可以是数据库操作在一定程度上并行)

  11.4 事务性表的性能 MySQL innodb_flush_log_at_trx_commit = 1日志数据索引立刻更新到磁盘, = 0事务提交时,没隔1s写入一次磁盘(1s内数据全丢) =2事务立刻写入磁盘文件(磁盘缓冲区),但是1s才刷新一下磁盘,可以用日志恢复数据(一般使用2

       Innodb_buffer_pool_size设置Innodb数据和内存缓冲池大小

       Innodb_flush_method = O_DIRECT跳过文件缓冲区

  11.5 使用查询缓存默认情况下MySQL没有开启查询缓存开启方式:query_cache_size = 268435456 query_cache_type = 1 query_cache_limit = 1048576

         但是MySQL对表的任何更新操作将导致整个表的查询缓存失效,所以对于频繁更新的表不适合开启查询缓存

11.6 临时表临时表如果创建在磁盘上将带来很大的开销,使用tmp_table_size设置存储临时表的内存空间大小

11.7 线程池 MySQL my.cnf设置thread_cache_size = 100设置缓存的线程数(持久连接)

11.8 反范式化设计以增加写开销,引入大量数据副本(写一般可以异步进行)为代价改善数据库的读性能

11.9 放弃关系型数据库

 

第十二章 Web负载均衡

12.1 HTTP重定向 Web服务器通过HTTP响应头信息中的Location标记返回一个新的URL完成自动跳转(一般使用随机分配 RR策略代价太高,性能太差)

    缺点:每次访问的负载并不相同;用户可能并不是从站点首页进入站点(绕过主站点访问程序)

    改进:对于一次性请求,一般可以由主站点服务器查询实际服务器状态,然后进行负载均衡

12.2 DNS负载均衡将域名解析到不同的IP地址上(不受主站点性能的制约)使用服务器软件设置调度策略

     1)故障转移,在服务器故障后尽早修改DNS记录

     2)缺点:服务器运维困难,需要修改/etc/hosts来为域名指定某个实际服务器的IP地址、灵活性不让基于HTTP的负载均衡、DNS服务器需要分析各服务器的健康状态,很难开发,一般只能使用RR调度算法而不是使用根据服务器实时负载调整的策略、DNS缓存记录不是DNS负载均衡控制

12.3 反向代理负载均衡需要考虑的细节有

     1)反向代理服务器按照权责分配任务

     2)调度器的并发处理能力可能是新的瓶颈

     3)需要探测后端服务器的健康状态

     4)粘滞会话(后端服务器实现了动态内容缓存、使用Session本地化保存了用户的一些数据)

12.4 IP负载均衡

     1)基于NAT技术的负载均衡直接修改数据的源地址和目标地址(linux2.4 Netfilter模块),使用iptables转发数据包

     2IPVS转发数据包  

     缺点:网关瓶颈

12.6 直接路由使用IP别名,将服务器直接接入外部网络使用ipvsadm命令进行配置

     LVS-DR优与LVS-NAT响应数据一般大于请求数据避免调度器的数据限制,便于管理,可以使用SSH直接登录服务器管理,不需要通过调度器访问,可以马上切换到DNS-RR模式,增加几条DNS记录就可以将域名解析到真实IP地址即可

实际服务器需要一系列的合法IP地址

12.7 IP隧道 LVS-TUNLVS-DR不同实际服务器可能与调度器不在一个WAN网段,需要使用IP隧道来转发请求

    实际服务器需要IP地址

 

第十三章共享文件系统

实际中,多台服务器可能拥有不同的程序或者文件,需要进行通报

无扩展性,依赖与共享文件系统的实现

13.1 网络共享局限性:收磁盘吞吐率上行,服务器端得并发出了能力网络带宽等多种限制

 

第十四章内容分发与同步 

   14.1 复制主动、被动同步实现方式

      1SSH 2SCP 3SFTP 4WebDAV 5rsync 6Hash Tree(减少同步的开销)

   14.2 多级分发单级分发延迟大容易阻塞服务器

   14.3 分发或者同步

   14.4 反向代理反向代理缓存实现文件复制

 

第十五章分布式文件系统

第十六章数据库扩展

   16.1 复制与分离 1)主从复制 2)读写分离 3)使用数据库反向代理

   16.2 垂直分区

   16.3 水平分区

 

第十七章分布式计算

   17.1 异步计算 1)分布式消息队列

   17.2 并行计算 map/reduce

 

第十八章性能监控

原创粉丝点击