PHP 解决网站大数据大流量与高并发

本文涉及的产品
RDS MySQL Serverless 基础系列,0.5-2RCU 50GB
传统型负载均衡 CLB,每月750个小时 15LCU
云数据库 RDS MySQL,集群版 2核4GB 100GB
推荐场景:
搭建个人博客
简介: PHP 解决网站大数据大流量与高并发

第一,硬件方面

普通的一个 p4 的服务器每天最多能支持大约 10 万左右的 IP,如果访问量超过 10W 那么需要专用的服务器才能解决,如果硬件不给力 软件怎么优化都是于事无补的。主要影响服务器的速度

有:网络 - 硬盘读写速度 - 内存大小 - cpu 处理速度。

第二,软件方面

第一个要说的就是数据库,首先要有一个很好的架构,查询尽量不用 * 避免相关子查询 给经常查询的添加索引 用排序来取代非顺序存取,如果条件允许 ,一般 MySQL 服务器最好安装

在 Linux 操作系统中 。关于 apache 和 nginx 在高并发的情况下推荐使用 nginx,ginx 是 Apache 服务器不错的替代品。nginx 内存消耗少 官方测试能够支撑 5 万并发连接,在实际生产环境中跑

到 2~3 万并发连接数。php 方面不需要的模块尽量关闭,使用 memcached,Memcached 是一个高性能的分布式内存对象缓存系统,不使用数据库直接从内存当中调数据,这样大大提升了速

度,iiS 或 Apache 启用 GZIP 压缩优化网站,压缩网站内容大大节省网站流量。

第二,禁止外部的盗链。

外部网站的图片或者文件盗链往往会带来大量的负载压力,因此应该严格限制外部对

于自身的图片或者文件盗链,好在目前可以简单地通过 refer 来控制盗链,Apache 自

己就可以通过配置来禁止盗链,IIS 也有一些第三方的 ISAPI 可以实现同样的功能。当

然,伪造 refer 也可以通过代码来实现盗链,不过目前蓄意伪造 refer 盗链的还不多,

可以先不去考虑,或者使用非技术手段来解决,比如在图片上增加水印。

第三,控制大文件的下载。

大文件的下载会占用很大的流量,并且对于非 SCSI 硬盘来说,大量文件下载会消耗

CPU,使得网站响应能力下降。因此,尽量不要提供超过 2M 的大文件下载,如果需要

提供,建议将大文件放在另外一台服务器上。

第四,使用不同主机分流主要流量

将文件放在不同的主机上,提供不同的镜像供用户下载。比如如果觉得 RSS 文件占用

流量大,那么使用 FeedBurner 或者 FeedSky 等服务将 RSS 输出放在其他主机上,这

样别人访问的流量压力就大多集中在 FeedBurner 的主机上,RSS 就不占用太多资源了

第五,使用不同主机分流主要流量

将文件放在不同的主机上,提供不同的镜像供用户下载。比如如果觉得 RSS 文件占用流量大,那么使用 FeedBurner 或者 FeedSky 等服务将 RSS 输出放在其他主机上,这样别人访问的流量压力就大多集中在 FeedBurner 的主机上,RSS 就不占用太多资源了。

第六,使用流量分析统计软件。

在网站上安装一个流量分析统计软件,可以即时知道哪些地方耗费了大量流量,哪些页面需要再进行优化,因此,解决流量问题还需要进行精确的统计分析才可以。比如:Google Analytics(Google 分析)。

高并发和高负载的约束条件:硬件、部署、操作系统、Web 服务器、PHP、MySQL、测试

部署:服务器分离、数据库集群和库表散列、镜像、负载均衡

负载均衡分类: 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 效率的同时,极大增强了数据安全性。

Web 服务器:

Web 服务器很大一部分资源占用来自于处理 Web 请求,通常情况下这也就是 Apache 产生的压力,在高并发连接的情况下,Nginx 是 Apache 服务器不错的替代品。Nginx (“engine x”) 是俄罗斯人编写的一款高性能的 HTTP 和反向代理服务器。在国内,已经有新浪、搜狐通行证、网易新闻、网易博客、金山逍遥网、金山爱词霸、校内网、YUPOO 相册、豆瓣、迅雷看看等多家网站、 频道使用 Nginx 服务器。

Nginx 的优势:

高并发连接:官方测试能够支撑 5 万并发连接,在实际生产环境中跑到 2~3 万并发连接数。

内存消耗少:在 3 万并发连接下,开启的 10 个 Nginx 进程才消耗 150M 内存(15M*10=150M)。

内置的健康检查功能:如果 Nginx Proxy 后端的某台 Web 服务器宕机了,不会影响前端访问。

策略:相对于老牌的 Apache,我们选择 Lighttpd 和 Nginx 这些具有更小的资源占用率和更高的负载能力的 web 服务器。

Mysql:

MySQL 本身具备了很强的负载能力,MySQL 优化是一项很复杂的工作,因为这最终需要对系统优化的很好理解。大家都知道数据库工作就是大量的、 短时的查询和读写,除了程序开发时需要注意建立索引、提高查询效率等软件开发技巧之外,从硬件设施的角度影响 MySQL 执行效率最主要来自于磁盘搜索、磁盘 IO 水平、CPU 周期、内存带宽。

  根据服务器上的硬件和软件条件进行 MySQl 优化。MySQL 优化的核心在于系统资源的分配,这不等于无限制的给 MySQL 分配更多的资源。在 MySQL 配置文件中我们介绍几个最值得关注的参数:

改变索引缓冲区长度 (key_buffer)

改变表长 (read_buffer_size)

设定打开表的数目的最大值 (table_cache)

对缓长查询设定一个时间限制 (long_query_time)

如果条件允许 ,一般 MySQL 服务器最好安装在 Linux 操作系统中,而不是安装在 FreeBSD 中。

策略: MySQL 优化需要根据业务系统的数据库读写特性和服务器硬件配置,制定不同的优化方案,并且可以根据需要部署 MySQL 的主从结构。

PHP:

1、加载尽可能少的模块;

2、如果是在 windows 平台下,尽可能使用 IIS 或者 Nginx 来替代我们平常用的 Apache;

3、安装加速器(都是通过缓存 php 代码预编译的结果和数据库结果来提高 php 代码的执行速度)

eAccelerator,eAccelerator 是一个自由开放源码 php 加速器,优化和动态内容缓存,提高了性能 php 脚本的缓存性能,使得 PHP 脚本在编译的状态下,对服务器的开销几乎完全消除。

Apc:Alternative PHP Cache(APC)是 PHP 的一个免费公开的优化代码缓存。它用来提供免费,公开并且强健的架构来缓存和优化 PHP 的中间代码。

memcache:memcache 是由 Danga Interactive 开发的,高性能的,分布式的内存对象缓存系统,用于在动态应用中减少数据库负载,提升访问速度。主要机制是通过在内存里维护一个统 一的巨大的 hash 表,Memcache 能够用来存储各种格式的数据,包括图像、视频、文件以及数据库检索的结果等

Xcache:国人开发的缓存器,

策略: 为 PHP 安装加速器。

代理服务器(缓存服务器):

Squid Cache(简称为 Squid)是一个流行的自由软件(GNU 通用公共许可证)的代理服务器和 Web 缓存服务器。Squid 有广泛的用途,从作为网页服务器的前置 cache 服务器缓存相关请求来提高 Web 服务器的速度,到为一组人共享网络资源而缓存万维网,域名系统和其他网络搜索,到通过过滤流量帮助网络安全,到局域网通过代理网。Squid 主要设计用于在 Unix 一类系统运行。

策略:安装 Squid 反向代理服务器,能够大幅度提高服务器效率。

压力测试:压力测试是一种基本的质量保证行为,它是每个重要软件测试工作的一部分。压力测试的基本思路很简单:不是在常规条件下运行手动或自动测试,而是在计算机数量较少或系统资源匮乏的条件下运行测试。通常要进行压力测试的资源包括内部内存、CPU 可用性、磁盘空间和网络带宽等。一般用并发来做压力测试。

压力测试工具:webbench,ApacheBench 等

漏洞测试:在我们的系统中漏洞主要包括:sql 注入漏洞,xss 跨站脚本攻击等。安全方面还包括系统软件,如操作系统漏洞,mysql、apache 等的漏洞,一般可以通过升级来解决。

漏洞测试工具:Acunetix Web Vulnerability Scanner

相关实践学习
基于MaxCompute的热门话题分析
本实验围绕社交用户发布的文章做了详尽的分析,通过分析能得到用户群体年龄分布,性别分布,地理位置分布,以及热门话题的热度。
SaaS 模式云数据仓库必修课
本课程由阿里云开发者社区和阿里云大数据团队共同出品,是SaaS模式云原生数据仓库领导者MaxCompute核心课程。本课程由阿里云资深产品和技术专家们从概念到方法,从场景到实践,体系化的将阿里巴巴飞天大数据平台10多年的经过验证的方法与实践深入浅出的讲给开发者们。帮助大数据开发者快速了解并掌握SaaS模式的云原生的数据仓库,助力开发者学习了解先进的技术栈,并能在实际业务中敏捷的进行大数据分析,赋能企业业务。 通过本课程可以了解SaaS模式云原生数据仓库领导者MaxCompute核心功能及典型适用场景,可应用MaxCompute实现数仓搭建,快速进行大数据分析。适合大数据工程师、大数据分析师 大量数据需要处理、存储和管理,需要搭建数据仓库?学它! 没有足够人员和经验来运维大数据平台,不想自建IDC买机器,需要免运维的大数据平台?会SQL就等于会大数据?学它! 想知道大数据用得对不对,想用更少的钱得到持续演进的数仓能力?获得极致弹性的计算资源和更好的性能,以及持续保护数据安全的生产环境?学它! 想要获得灵活的分析能力,快速洞察数据规律特征?想要兼得数据湖的灵活性与数据仓库的成长性?学它! 出品人:阿里云大数据产品及研发团队专家 产品 MaxCompute 官网 https://www.aliyun.com/product/odps 
相关文章
|
1月前
|
存储 大数据 数据处理
PHP 与大数据:构建高效数据处理系统
传统的数据处理系统往往难以应对大规模数据的处理需求,而PHP作为一种常用的服务器端脚本语言,在数据处理方面也有其独特的优势。本文将探讨如何利用PHP构建高效的大数据处理系统,结合实际案例分析其应用场景及优势所在。
41 2
|
1月前
|
缓存 NoSQL 关系型数据库
亿级电商流量,高并发下Redis与MySQL的数据一致性如何保证
你们有多少人是被面试官问到过Redis和MySQL的数据一致性如何保证的? 你们是否考虑过在高并发场景下,Redis与MySQL的同步会有哪些问题?该如何解决? 本篇文章会带大家详细了解,让你知其然,知其所以然,吊打面试官。
410 0
亿级电商流量,高并发下Redis与MySQL的数据一致性如何保证
|
1月前
|
JavaScript 数据可视化 IDE
分享21个广告排行、15个交友会员、25个网站导航和39个文件管理PHP源码,总有一款适合你
分享21个广告排行、15个交友会员、25个网站导航和39个文件管理PHP源码,总有一款适合你
58 0
分享21个广告排行、15个交友会员、25个网站导航和39个文件管理PHP源码,总有一款适合你
|
5天前
|
监控 Java API
扛住阿里双十一高并发流量,Sentinel是怎么做到的?
扛住阿里双十一高并发流量,Sentinel是怎么做到的?
|
13天前
|
PHP
PHP开发的爱情盲盒交友系统网站源码 独立后台
PHP开发的爱情盲盒交友系统网站源码 独立后台
22 4
|
13天前
|
PHP
明星百科大全PHP网站源码
明星百科大全网站源码,国内外明星娱乐音乐、新闻八卦、写真照片、相关影视作品等等的明星百科网站源码。
19 4
|
12天前
|
PHP 数据安全/隐私保护
PHP企业授权管理系统网站源码
PHP企业授权管理系统网站源码 带代理、工单、盗版检测管理等功能
13 2
|
30天前
|
前端开发 关系型数据库 MySQL
使用PHP构建动态网站的技术指南
【5月更文挑战第27天】本文是使用PHP构建动态网站的指南,涵盖基本概念、技术栈选择(PHP、MySQL/MariaDB、HTML/CSS/JavaScript及Web服务器)、数据库交互示例、安全性考虑(SQL注入防护、输入验证、HTTPS使用、安全更新)和性能优化(缓存、查询优化、代码优化、输出压缩)。通过学习和实践,开发者能创建安全、高性能的动态网站。
|
13天前
|
PHP
PHP地方门户分类信息网站源码讯客分类信息系统源码(含手机版)
1.上传程序到网站根目录,访问http://域名/install/index.php 进行安装,不要直接打开网址,先直接安装; 2.安装完成后 后台恢复数据即可 默认帐号密码都是admin http://域名/admin/ 3.不要删除任何文件,因为删除文件或者修改代码可能造成错误
10 0
|
19天前
|
存储 监控 NoSQL
MongoDB分片:打造高性能大数据与高并发处理的完美解决方案
MongoDB分片:打造高性能大数据与高并发处理的完美解决方案