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

news/2024/5/10 0:36:24/文章来源:https://blog.csdn.net/weixin_34303897/article/details/91698627

为什么80%的码农都做不了架构师?>>>   hot3.png

1:硬件方面

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

2:软件方面

第一个要说的就是数据库,

首先要有一个很好的架构,查询尽量不用* 避免相关子查询 给经常查询的添加索引 用排序来取代非顺序存取,如果条件允许 ,一般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

No related content found.

转载于:https://my.oschina.net/qqlet/blog/1377692

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.luyixian.cn/news_show_803614.aspx

如若内容造成侵权/违法违规/事实不符,请联系dt猫网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

自定义SharePoint新网站创建过程(1)

为什么要自定义一个SharePoint新网站的创建过程呢?作用很多。其中之一就是,我们创建了一个新的SharePoint应用组件,然后希望SharePoint管理员在创建一个SharePoint新网站的时候,就可以在那个新网站中使用我们开发的新应用组件。 …

Nginx代理访问网站及实现缓存

1.Nginx介绍首先介绍下NNginx ("engine x") 是一个高性能的 HTTP 和 反向代理 服务器。Nginx 是由 Igor Sysoev 为俄罗斯访问量第二的 Rambler.ru 站点开发的,第一个公开版本0.1.0发布于2004年10月4日。其将源代码以类BSD许可证的形式发布,因它…

电子商务网站SQL注入项目实战一例

故事A段:发现整站SQL对外输出: 有个朋友的网站,由于是外包项目,深圳某公司开发的,某天我帮他检测了一下网站相关情况。 我查看了页面源代码,发现了个惊人的事情,竟然整站打印SQL到Html里&#x…

爬取视频网站的视频

网站视频 解析视频连接 以某一个视频为例: 因为是视频的原因,视频后台服务器为了优化做了对视频这一类大文件的分片处理,所以下面会看到一集视频会包含很多请求链接,本人测试了一下,平均一个请求会对应一个1M的视频文…

【JSP学习笔记】4:使用Model1模式构建购物网站demo

J2EE课的上机题,实现一个Model1模式的购物网站的功能。 编码问题 编码问题终于找到解决方法了,首先保证每个页面能编码的都编成UTF-8,然后所有用到内置对象的地方上来先.setCharacterEncoding("UTF-8");,然后重要的是…

搭建网站必不可少的知识15

网站迁移 备份网站和数据库 在服务器上将网站文件拷贝到另一个文件夹 数据库部分打开phpmyadmin 进入phpboke数据库,点击“导出”进行“执行” 选择数据库要保存的位置,进行保存 网站恢复当我们更换服务商或者系统时进行了网站和数据库的备份&#xff0c…

HTTrack(网站镜像工具)

1、首先打开kali 中的这个工具 Web信息收集工具HTTrack ,会直接出现出现使用语法。 对于传统的像存在Robots.txt的网站,如果程序运行的时候不做限制,在默认的环境下程序不会把网站镜像,简单来说HTTPrack跟随基本的JavaScript或者APPLet、flas…

我的网站搭建: (第十天) Ueditor后台编辑器

之前说过,我的网站编辑器一开始是tinymce,然后才用的ckeditor。可是最近我发现,ckeditor的小图标不是很美观,看久了有点low的样子。我是不是应该换一个编辑器呢,一想到这里,马上打开谷歌搜索有没有更加美观…

Java Web性能测试 - 动态网站测试脚本录制

Java Web性能测试 - 动态网站测试脚本录制 本章讲解使用Badboy对网站的请求进行录制,录制完成的脚本文件可以直接用JMeter使用,免去在JMater中进行配置的时间。 使用Badboy录制基本的目的就是减少我们在使用JMeter测试WEB项目时,一个一个Url…

Java Web项目性能测试 - JMeter测试网站吞吐量、反应时间百分比、流量

Java Web项目性能测试 - JMeter测试网站吞吐量、反应时间百分比、流量 为了衡量、调整、完成Java Web项目的性能指标,满足客户、用户对性能的要求,保证项目上线后能正常运行,以及了解项目的性能指标,为项目性能监控做参考&#x…

Java图片水印生成器代码 - 批量给自己的网站图片加水印

Java图片水印生成器代码 - 批量给自己的网站图片加水印 最近在做一款APP,App中的图片是自己一个个的画出来的,为了保证图片不被盗用和处理,所以就需要加上水印防盗。这跟CSDN一样。 注意事项:1. 我是在window7 eclipse 下完成的…

阿里云云虚拟主机上个人网站的Https访问配置

本文基于阿里云云虚拟主机,我个人网站是基于Hexo博客系统搭建的静态网站,所以搭建Https相对方便 一、获取HTTPS安全证书 在操作之前,请将你的域名的隐私保护去掉,让证书服务商能通过域名解析查看到域名管理者的邮箱,否则验证证书时会无法进行…

阿里云服务提供商分享视频直播网站服务器解决方案

大家应该都听过抖音、西瓜视频这类的视频网站,而且这些视频网站深受大家喜爱。直播模式也如雨后春笋一般快速出现,电商直播也逐渐火热。因此很多视频类公司纷纷搭建视频直播平台,那么这类网站的服务器该如何选择呢?下面就由阿里云…

使用Charles代理工具导致电脑无法正常访问网站(您的连接不是私密连接)

很多开发者都需要使用代理工具来调试接口,查看数据等等,但是有时候发现打开代理工具之后,代理工具同时也拦截了电脑的所有网络请求,导致电脑访问网站时提示(您的连接不是私密连接)。。。 造成这种问题的原因…

大型网站技术架构(七)网站的可扩展性架构

2019独角兽企业重金招聘Python工程师标准>>> 扩展性是指对现有系统影响最小的情况下,系统功能可持续扩展或提升的能力。 设计网站可扩展架构的核心思想是模块化,并在此基础上,降低模块间的耦合性,提供模块的复用性。模…

新书推荐:网站交互设计模式

新书推荐:网站交互设计模式【作  者】(美)Douglas K.Van Dugne;James A.Landay;Jason I.Hong [同作者作品] [作译者介绍] 【译  者】 孙昕;焦洪[同译者作品] 【出 版 社】 电子工业出版社 【书 号】 9787121092046 【上架时间】 2009-7-24 【出版日期】…

html5游戏网站欣赏,70多个HTML5网站设计欣赏

70多个HTML5网站设计欣赏7月 6, 2011评论SponsorHTML5网站确实很不错,能帮助设计师解决很多美化问题外,还能提高更好的用户体验,制作出高效的网站,所以我们应该开始学习CSS3和HTML5这些技术了,不要老是被国外超越我们&…

高并发、高可用、大数据量网站系统演化

一、初始阶段的网站架构 应用程序、数据库、文件等所有资源都在一台服务器上 二、应用服务和数据库服务分离 整个网站使用三台服务器:应用服务器、文件服务器、数据库服务器 应用服务器需要更强大的CPU 文件服务器需要更大的磁盘空间 数据库服务器需要更快的硬盘和更…

WordPress网站漏洞利用及漏洞修复解决方案

2019年正月刚开始,WordPress最新版本存在远程代码注入获取SHELL漏洞,该网站漏洞影响的版本是wordpress5.0.0,漏洞的产生是因为image模块导致的,因为代码里可以进行获取目录权限,以及文件包含功能,导致远程代…

docker容器源码部署httpd,用存储卷部署网站

docker容器源码部署httpd,用存储卷部署网站 创建一个httpd镜像 // 创建一个httpd容器 [rootlocalhost ~]# docker run -tid --name httpd centos 2d693e16f4f3734b127cbae90d189c1b4e78619a54ceec912a82d96cf4f1c345 [rootlocalhost ~]# docker ps CONTAINER ID …