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

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就不占用太多源了

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

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

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

在网站上安装一个流量分析统计软件,可以即知道哪些地方耗了大量流量,哪些面需要再化,因此,解决流量问题还需要行精确的统计分析才可以。比如:Google Analytics(Google分析)。高并和高负载束条件:硬件、部署、操作系、Web 服器、PHP、MySQL、测试部署:服器分离、数据集群和表散列、像、负载均衡负载均衡分类: 1)、DNS循 2)代理服负载均衡 3)地址转换网关负载均衡 4)NAT负载均衡 5)反向代理负载均衡 6)混合型负载均衡

3:部署

部署方案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:

    国人开存器,

  • 测试

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

webbench,ApacheBench等

  • 漏洞测试

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

  • 漏洞测试工具:

    Acunetix Web Vulnerability Scanner

No related content found.