1:硬件方面

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

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

2:软件方面

第一个要说的就是数据库,首先要有一个很好的架构,查询尽量不用*避免相关子查询,给经常查询的添加索引,用排序来取代非顺序存取,如果条件允许,一般MySQL服务器最好安装在Linux操作系统中。关于apache和nginx在高并发的情况下推荐使用nginx,nginx是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就不占用太多资源了。

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

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

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

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

负载均衡分类: 1 DNS 轮询 2 代理服务器负载均衡 3 地址转换网关负载均衡    4 NAT负载均衡 6混合型负载均衡

部署方案1:

适用范围:静态内容为主体的网站和应用系统,对系统安全要求较高的网站和应用系统。

Main Server:主服务器

承载程序的主体运行压力,处理网站或应用系统中的动态请求;

将静态页面推送至多个发布服务器;

将附件文件推送至文件服务器;

安全要求较高,以静态为主的网站,可将服务器置于内网屏蔽外网的访问

DB Server:数据库服务器

承载数据库读写压力;

只与主服务器进行数据量交换 屏蔽外网访问,

File/Video Server:文件/视频服务器

承载系统中占用系统资源和宽带资源较大的数据流;

作为大附件的存储和读写仓库;

作为视频服务器将具备视频自动处理能力。

发布服务器组:

只负责静态页面的发布,承载绝大多数的web请求;

通过Nginx进行负载均衡部署。

部署方案2:

使用范围:以动态交互内容为主体的网站或应用系统;负载压力较大,且预算比较充足的网站或应用系统;

web服务器组:

web服务无主从关系,属平行冗余设计;

通过前端负载均衡设备或Nginx反向代理实现负载均衡;

划分专用文件服务器/视频服务器有效分离轻/重总线;

每台web服务器可通过DEC可实现链接所有数据库,同时划分主从。

数据库服务器组:

相对均衡的承载数据库读写压力;

通过数据库物理文件的映射实现多数据库的数据同步。

共享磁盘/磁盘阵列

将用于数据物理文件的统一读写

用于大型附件的存储仓库 通过自身物理磁盘的均衡和冗余,确保整体系统的IO效率和数据安全;

方案特性:

通过前端负载均衡,合理分配web压力;

通过文件/视频服务器与常规web服务器的分离,合理分配轻重数据流;

通过数据库服务器组,合理分配数据库IO压力;

每台web服务器通常只连接一台数据库服务器,通过DFC的心跳检测,可在极短时间内自动切换至冗余数据库服务器;

磁盘阵列的引用,大幅提升系统IO效率的同时,极大增强了数据安全性。

Web服务器:

Web服务器很大一部分资源占用来自于处理web请求,通常情况下也就是apache产生的压力,在高并发链接的情况下, nginx是apache服务器不错的替代品,nginx是俄罗斯人编写的一款高性能的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. 如果是在window平台下,尽可能使用IIS或者Nginx来替代我们平常用的apache;

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

eAccelerator eAccerator是一个自由开放源码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主要设计用于在unxi一类系统运行。

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

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

压力测试工具: webbench ApacheBench等

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

漏洞测试工具:Acunetix Web Vulnerability Scanner

No Related content found.

PHP解决网站大数据大流量与高并发的更多相关文章

  1. PHP 网站大流量与高并发的解决方法

    php 网站如何应对大流量与高并发呢? 首先,确认服务器硬件是否足够支持当前的流量. 普通的P4服务器一般最多能支持每天10万地理IP,如果访问量比这个还要大,则请配置一台更高性能的专用服务器. 否则 ...

  2. 高并发解决方案--负载均衡(HTTP,DNS,反向代理服务器)(解决大流量,高并发)

    高并发解决方案--负载均衡(HTTP,DNS,反向代理服务器)(解决大流量,高并发) 一.总结 1.什么是负载均衡:当一台服务器的性能达到极限时,我们可以使用服务器集群来提高网站的整体性能.那么,在服 ...

  3. MySql计数器,如网站点击数,如何实现高性能高并发的计数器功能

    MySql计数器,如网站点击数,如何实现高性能高并发的计数器功能 Clicks: Date: -- :: Power By 李轩Lane TagMysql计数器高性能 现在有很多的项目,对计数器的实现 ...

  4. 心知天气数据API 产品的高并发实践

    心知天气数据API 产品的高并发实践 心知天气作为国内领先的商业气象服务提供商,天气数据API 产品从公司创立以来就一直扮演着很重要的角色.2009 年API 产品初次上线,历经十年,我们不断用心迭代 ...

  5. PHP如何解决网站大流量与高并发的问题

    首先,确认服务器硬件是否足够支持当前的流量. 普通的P4服务器一般最多能支持每天10万独立IP,如果访问量比这个还要大, 那么必须首先配置一台更高性能的专用服务器才能解决问题 ,否则怎么优化都不可能彻 ...

  6. PHP如何解决网站大流量与高并发的…

    首先,确认服务器硬件是否足够支持当前的流量. 普通的P4服务器一般最多能支持每天10万独立IP,如果访问量比这个还要大, 那么必须首先配置一台更高性能的专用服务器才能解决问题 ,否则怎么优化都不可能彻 ...

  7. PHP解决网站大流量与高并发

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

  8. PHP如何解决网站大流量与高并发的问题(一)

    高并发的相关概念 在某个时间点,有多少个访问量 如果一个系统的日PV在千万以上,有可能是一个高并发的系统 QPS: 每秒钟请求或者查询的数量,在互联网领域,指每秒相应请求数(指HTTP请求) 吞吐量: ...

  9. PHP如何解决网站大流量与高并发的问题(四)

    动态语言的并发处理 相关概念 什么是进程.线程.协程 什么是多进程.多线程 同步阻塞模型 异步非阻塞模型 php并发编程实践 什么是进程.线程.协程 进程 进程是一个执行中的程序 进程的三态模型:多道 ...

随机推荐

  1. 利用Google翻译成多国语言的见解

    1.首先注意,英语句子中的 第一个单词的首字母要大写, 2.句子结尾了,要用句号. 3.英语中单词和前面的标点符号要留一个空格,如:  you.Are   应该是 you. Are you..... ...

  2. [LeetCode] Level Order Traversal

    题目说明 Given a binary tree, return the level order traversal of its nodes' values. (ie, from left to r ...

  3. SpringMVC异常处理机制

    SpringMVC异常处理机制 springMVC会将所有在doDispatch方法中的异常捕获,然后处理.无法处理的异常会抛出给容器处理. 在doDispatch()中调用processDispat ...

  4. CentOS探索之路3---安装python3

    安装Python3 总述 ​ 一般来说Linux类型的操作系统都会自带安装python,但是系统默认安装的python都是2.x的版本.而现在一般使用的是python3.x版本,相比于python2. ...

  5. c# 获取应用程序exe文件路径及退出应用程序的几种方法

    this.GetType().Assembly.Location; Application.ExecutablePath; Application.StartupPath:和上面的相比缺少可执行文件 ...

  6. c#基础学习(0627)之类型转换、算数运算符++、--

    类型转换 我们要求等号两边参与运算的操作数的类型必须一致,如果不一致,满足下列条件会发生自动类型转换,或者称之为隐式类型转换 例如:int和double兼容(都是数字类型) 目标类型大于源类型 例如: ...

  7. vue常见知识点整理

    什么是 mvvm? MVVM 是 Model-View-ViewModel 的缩写.mvvm 是一种设计思想.Model 层代表数据模型,也可以在 Model 中定义数据修改和操作的业务逻辑:View ...

  8. .net core 2.2 部署CentOS7(2)给虚拟机安装CentOS7

    目录: .net core 2.2 部署CentOS7(1)安装虚拟机 .net core 2.2 部署CentOS7(2)给虚拟机安装CentOS7 .net core 2.2 部署CentOS7( ...

  9. EnyimMemcached(64位)使用实例

    1.安装:http://www.cnblogs.com/dudu/archive/2009/07/19/1526669.html 2.使用 using Enyim.Caching.Configurat ...

  10. SpringMVC+MyBatis+MySQL 8小时链接断开

    org.springframework.web.util.NestedServletException: Request processing failed; nested exception is ...