1、高并发和高负载的约束条件
硬件:支配操作系统 CentOS6.5-7.2、Windows Server 2003 Ent(企业版)Windows Server 2008 企业版 R2
Web 做事器(Apache2.4.4、Nginx1.10.1)做事器的 80 端口发布一个 HTTP 协议的做事
PHP(5.4-5.6)
MySQL(5.6)测试:负载均衡设备-硬件(硬负载)(F5、梭子鱼)
负载均衡软件(软负载)
2、办理之道——硬件篇
处理能力的提升:支配多颗 CPU,选择多核心、具备更高运算频率、更大高速缓存的 CPU;
处理能力的提升最直接的反应在于 Web 要求的处理效率和 PHP 程序的实行效率。
内存带宽与容量:更大的内存带宽和容量;
内存带宽与容量的提升最直接的反应在于应对数据库大量的数据交流。
磁盘搜索与 I/O 能力:选择更高的转速、更大的硬盘缓存、组件磁盘阵列(RAID);
磁盘搜索与 I/O 能力的提升最直接反应在于数据库大量的查询和读写以及文件的读写。
网络带宽的提升可考虑的成分包括: 更大带宽、多线路接入、独享带宽;
做事器在大负载的情形下,对网络带宽的占用是十分可不雅观的。
策略:硬件举动步伐是应对大负载的根本,硬件举动步伐的投入可根据实际压力和预算实事求是。
3、办理之道——支配篇
3.1、做事器分离
3.2、数据库集群和库表散列
3.3、镜像
3.4、负载均衡
分类:
1)、DNS 轮循
2)代理做事器负载均衡
3)地址转换网关负载均衡
4)NAT 负载均衡
5)反向代理负载均衡
6)稠浊型负载均衡
策略:根据硬件投入和业务需求,选择合理的支配方案。
支配方案 1:
适用范围:静态内容为主体的网站和运用系统;对系统安全哀求较高的网站和运用系统。
Main Server:主理事器
承载程序的主体运行压力,处理网站或运用系统中的动态要求;
将静态页面推送至多个发布做事器;
将附件文件推送至文件做事器;
安全哀求较高,以静态为主的网站,可将做事器置于内网屏蔽外网的访问。
DB Server:数据库做事器
承载数据库读写压力;
只与主理事器进行数据量交流,屏蔽外网访问。
File/Video Server:文件/视频做事器
承载系统中占用系统资源和带宽资源较大的数据流;
作为大附件的存储和读写仓库;
作为视频做事器将具备视频自动处理能力。
发布做事器组:
只卖力静态页面的发布,承载绝大多数的 Web 要求;
通过 Nginx 进行负载均衡支配。
支配方案 2:
适用范围:以动态交互内容为主体的网站或运用系统;负载压力较大,且预算比较充足的网站或运用系统;
Web 做事器组:
Web 做事无主从关系,属平行冗余设计;
通过前端负载均衡设备或 Nginx 反向代理实现负载均衡;
划分专用文件做事器/视频做事器有效分离轻/重总线;
每台 Web 做事器可通过 DEC 可实现连接所有数据库,同时划分主从。
数据库做事器组:
相对均衡的承载数据库读写压力;
通过数据库物理文件的映射实现多数据库的数据同步。
共享磁盘/磁盘阵列
将用于数据物理文件的统一读写
用于大型附件的存储仓库
通过自身物理磁盘的均衡和冗余,确保整体系统的 IO 效率和数据安全;
方案特性:
通过前端负载均衡,合理分配 Web 压力;
通过文件/视频做事器与常规 Web 做事器的分离,合理分配轻重数据流;
通过数据库做事器组,合理分配数据库 IO 压力;
每台 Web 做事器常日只连接一台数据库做事器,通过 DEC 的心跳检测,可在极短韶光内自动切换至冗余数据库做事器;
磁盘阵列的引入,大幅提升系统 IO 效率的同时,极大增强了数据安全性。
4、办理之道——环境篇
4.1、操作系统
操作系统的选择,关注点在于
•是否适应于搭建 SiteEngine 所须要的环境程序?
•系统本身占用的资源比;
•系统安全性;
•系统是否易于操作?
策略:我们选择 FreeBSD,而且是最小化安装往后的 FreeBSD。
4.2、Web 做事器
Web 做事器很大一部分资源占用来自于处理 Web 要求,常日情形下这也便是 Apache 产生的压力,Apache是天下利用排名第一的 Web 做事器软件。它可以运行在险些所有广泛利用的打算机平台上。
在高并发连接的情形下,Nginx 是 Apache 做事器不错的替代品。Nginx (“engine x”) 是俄罗斯人编写的一款高性能的 HTTP 和反向代理做事器。在海内,已经有新浪、搜狐通畅证、网易新闻、网易博客、金山逍遥网、金山爱词霸、校内网、YUPOO 相册、豆瓣、迅雷看看等多家网站、 频道利用 Nginx 做事器。
Nginx 的上风:
高并发连接:官方测试能够支撑 5 万并发连接,在实际生产环境中跑到 2~3 万并发连接数。
内存花费少:在 3 万并发连接下,开启的 10 个 Nginx 进程才花费 150M 内存(15M10=150M)。
内置的康健检讨功能:如果 Nginx Proxy 后真个某台 Web 做事器宕机了,不会影响前端访问。
策略:相对付老牌的 Apache,我们选择 Lighttpd 和 Nginx 这些具有更小的资源占用率和更高的负载能力的web 做事器。
4.3、MySQL
MySQL 本身具备了很强的负载能力,MySQL 优化是一项很繁芜的事情,由于这终极须要对系统优化的很好理解。数据库事情便是大量的、短时的查询 和读写,除了程序开拓时须要把稳建立索引、提高查询效率等软件开拓技巧之外,从硬件举动步伐的角度影响 MySQL 实行效率最紧张来自于磁盘搜索、磁盘 IO 水 平、CPU周期、内存带宽。
根据做事器上的硬件和软件条件进行 MySQl 优化。MySQL 优化的核心在于系统资源的分配,这不即是无限制的给 MySQL 分配更多的资源。
在 MySQL 配置文件中最值得关注的参数:
l 改变索引缓冲区长度(key_buffer)
l 改变表长(read_buffer_size)
l 设定打开表的数目的最大值(table_cache)
l 对缓长查询设定一个韶光限定(long_query_time)
如果条件许可 ,一样平常 MySQL 做事器安装在 Linux 操作系统中,而不是安装在 FreeBSD 中。
策略: MySQL 优化须要根据业务系统的数据库读写特性和做事器硬件配置,制订不同的优化方案,并且可以根据须要支配 MySQL 的主从构造。
4.4、PHP
1、加载尽可能少的模块;
2、安装加速器(都是通过缓存 php 代码预编译的结果和数据库结果来提高 php 代码的实行速率)
eAccelerator
eAccelerator 是一个自由开放源码 php 加速器,优化和动态内容缓存,提高了性能 php 脚本的缓存性能,使得 PHP 脚本在编译的状态下,对做事器的开销险些完备肃清。
Apc
Alternative PHP Cache(APC)是 PHP 的一个免费公开的优化代码缓存。它用来供应免费,公开并且强健的架构来缓存和优化 PHP 的中间代码。
memcache
memcache 是由 Danga Interactive 开拓的,高性能的,分布式的内存工具缓存系统,用于在动态运用中减少数据库负载,提升访问速率。紧张机制是通过在内存里掩护一个统 一的巨大的 hash 表,Memcache 能够用来存储各种格式的数据,包括图像、视频、文件以及数据库检索的结果等
策略: 为 PHP 安装加速器。
4.5、代理做事器(缓存做事器)Squid Cache(简称为 Squid)是一个盛行的自由软件(GNU 通用公共容许证)的代理做事器和 Web 缓存做事器。Squid 有广泛的用场,从作为网页做事 器的前置 cache 做事器缓存干系要求来提高 Web 做事器的速率,到为一组人共享网络资源而缓存万维网,域名系统和其他网络搜索,到通过过滤流量帮助网络 安全,到局域网通过代理上网。Squid 紧张设计用于在 Unix 一类系统运行。
策略:安装 Squid 反向代理做事器,能够大幅度提高做事器效率。
5、办理之道——SiteEngine 篇
SiteEngine(网站引擎)是指针对运用系统程序的架构设计的一套程序化措辞框架。目前最主流的是基于多层架构,分级处理,模块化设计的框架,支持 mvc 动态页面展示,核心程序分层处理,增加静态化引擎,
借助 ajax 异步高效处理要求。
6、办理之道——测试篇
6.1、测试方法
6.2、测试用例
6.3、压力测试
压力测试是一种基本的质量担保行为,它是每个主要软件测试事情的一部分。压力测试的基本思路很大略:
不是在常规条件下运行手动或自动测试,而是在计 算机数量较少或系统资源匮乏的条件下运行测试。常日要进行压力测试的资源包括内部内存、CPU 可用性、磁盘空间和网络带宽等。一样平常用并发来做压力测试。压力测试工具:webbench,ApacheBench 等。
6.4、漏洞测试
在我们的系统中漏洞紧张包括:sql 注入漏洞,xss 跨站脚本攻击等。安全方面还包括系统软件,如操作系统漏洞,mysql、apache 等的漏洞,一样平常可以通过升级来办理。