热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

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

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

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分析)。

 

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

 


推荐阅读
  • 一句话解决高并发的核心原则
    本文介绍了解决高并发的核心原则,即将用户访问请求尽量往前推,避免访问CDN、静态服务器、动态服务器、数据库和存储,从而实现高性能、高并发、高可扩展的网站架构。同时提到了Google的成功案例,以及适用于千万级别PV站和亿级PV网站的架构层次。 ... [详细]
  • Oracle优化新常态的五大禁止及其性能隐患
    本文介绍了Oracle优化新常态中的五大禁止措施,包括禁止外键、禁止视图、禁止触发器、禁止存储过程和禁止JOB,并分析了这些禁止措施可能带来的性能隐患。文章还讨论了这些禁止措施在C/S架构和B/S架构中的不同应用情况,并提出了解决方案。 ... [详细]
  • 本文介绍了OkHttp3的基本使用和特性,包括支持HTTP/2、连接池、GZIP压缩、缓存等功能。同时还提到了OkHttp3的适用平台和源码阅读计划。文章还介绍了OkHttp3的请求/响应API的设计和使用方式,包括阻塞式的同步请求和带回调的异步请求。 ... [详细]
  • 目录浏览漏洞与目录遍历漏洞的危害及修复方法
    本文讨论了目录浏览漏洞与目录遍历漏洞的危害,包括网站结构暴露、隐秘文件访问等。同时介绍了检测方法,如使用漏洞扫描器和搜索关键词。最后提供了针对常见中间件的修复方式,包括关闭目录浏览功能。对于保护网站安全具有一定的参考价值。 ... [详细]
  • ZABBIX 3.0 配置监控NGINX性能【OK】
    1.在agent端查看配置:nginx-V查看编辑时是否加入状态监控模块:--with-http_stub_status_module--with-http_gzip_stat ... [详细]
  • 本文介绍了在开发Android新闻App时,搭建本地服务器的步骤。通过使用XAMPP软件,可以一键式搭建起开发环境,包括Apache、MySQL、PHP、PERL。在本地服务器上新建数据库和表,并设置相应的属性。最后,给出了创建new表的SQL语句。这个教程适合初学者参考。 ... [详细]
  • 这是原文链接:sendingformdata许多情况下,我们使用表单发送数据到服务器。服务器处理数据并返回响应给用户。这看起来很简单,但是 ... [详细]
  • Android中高级面试必知必会,积累总结
    本文介绍了Android中高级面试的必知必会内容,并总结了相关经验。文章指出,如今的Android市场对开发人员的要求更高,需要更专业的人才。同时,文章还给出了针对Android岗位的职责和要求,并提供了简历突出的建议。 ... [详细]
  • 本文介绍了Java工具类库Hutool,该工具包封装了对文件、流、加密解密、转码、正则、线程、XML等JDK方法的封装,并提供了各种Util工具类。同时,还介绍了Hutool的组件,包括动态代理、布隆过滤、缓存、定时任务等功能。该工具包可以简化Java代码,提高开发效率。 ... [详细]
  • 基于事件驱动的并发编程及其消息通信机制的同步与异步、阻塞与非阻塞、IO模型的分类
    本文介绍了基于事件驱动的并发编程中的消息通信机制,包括同步和异步的概念及其区别,阻塞和非阻塞的状态,以及IO模型的分类。同步阻塞IO、同步非阻塞IO、异步阻塞IO和异步非阻塞IO等不同的IO模型被详细解释。这些概念和模型对于理解并发编程中的消息通信和IO操作具有重要意义。 ... [详细]
  • 本文介绍了高校天文共享平台的开发过程中的思考和规划。该平台旨在为高校学生提供天象预报、科普知识、观测活动、图片分享等功能。文章分析了项目的技术栈选择、网站前端布局、业务流程、数据库结构等方面,并总结了项目存在的问题,如前后端未分离、代码混乱等。作者表示希望通过记录和规划,能够理清思路,进一步完善该平台。 ... [详细]
  • Linux如何安装Mongodb的详细步骤和注意事项
    本文介绍了Linux如何安装Mongodb的详细步骤和注意事项,同时介绍了Mongodb的特点和优势。Mongodb是一个开源的数据库,适用于各种规模的企业和各类应用程序。它具有灵活的数据模式和高性能的数据读写操作,能够提高企业的敏捷性和可扩展性。文章还提供了Mongodb的下载安装包地址。 ... [详细]
  • 深入理解Java虚拟机的并发编程与性能优化
    本文主要介绍了Java内存模型与线程的相关概念,探讨了并发编程在服务端应用中的重要性。同时,介绍了Java语言和虚拟机提供的工具,帮助开发人员处理并发方面的问题,提高程序的并发能力和性能优化。文章指出,充分利用计算机处理器的能力和协调线程之间的并发操作是提高服务端程序性能的关键。 ... [详细]
  • PHP输出缓冲控制Output Control系列函数详解【PHP】
    后端开发|php教程PHP,输出缓冲,Output,Control后端开发-php教程概述全景网页源码,vscode如何打开c,ubuntu强制解锁,sts启动tomcat慢,sq ... [详细]
  • 如何搭建服务器环境php(2023年最新解答)
    导读:本篇文章编程笔记来给大家介绍有关如何搭建服务器环境php的相关内容,希望对大家有所帮助,一起来看看吧。本文目录一览:1、怎么搭建p ... [详细]
author-avatar
angel青彤雪
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有