xiaoyi's blog
首页
  • 后端文章

    • PHP
  • 学习笔记

    • 《Git》学习笔记
  • MySQL
  • NoSQL
  • 中间件
  • Linux
  • Nginx
  • 网络
  • Mac
  • 学习笔记

    • 《Nginx》学习笔记
  • 学习
  • 博客搭建
  • 技术文档
  • GitHub技巧
  • 面试
  • 心情杂货
  • 实用技巧
  • 友情链接
关于
  • 网站
  • 资源
  • 分类
  • 标签
  • 归档
GitHub

xuexuguang

后端新秀
首页
  • 后端文章

    • PHP
  • 学习笔记

    • 《Git》学习笔记
  • MySQL
  • NoSQL
  • 中间件
  • Linux
  • Nginx
  • 网络
  • Mac
  • 学习笔记

    • 《Nginx》学习笔记
  • 学习
  • 博客搭建
  • 技术文档
  • GitHub技巧
  • 面试
  • 心情杂货
  • 实用技巧
  • 友情链接
关于
  • 网站
  • 资源
  • 分类
  • 标签
  • 归档
GitHub
  • 学习

  • GitHub技巧

  • 面试

    • 面试问题集锦
    • PHP基础
    • 正则表达式
    • PHP文件操作
    • PHP会话控制
    • 自定义函数及内置函数
    • MVC对比
    • linux
    • MySQL数据库基础
    • MySQL创建高性能的索引
    • MySQL的SQL优化
    • MySQL的高可扩展和高可用
    • MySQL安全
    • 常见算法
    • 常见数据结构
    • 高并发解决方案
      • PHP如何解决网站大流量与高并发的问题?
      • 相关连接
    • 流量优化
    • 浏览器缓存和数据压缩
    • 图片优化
    • 静态化处理
    • 动态语言并发处理
    • 数据库缓存优化
    • 负载均衡
  • 博客搭建

  • 心情杂货

  • 技术文档

  • 实用技巧

  • 友情链接
  • 更多
  • 面试
xuexuguang
2020-12-31

高并发解决方案

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

# 考点

  1. 高并发架构相关概念
  2. 高并发解决方案案例

# 高并发是什么?

什么叫并发?所谓的并发就是某一个时间点,有多少个访问同时到来,那么什么叫高并发呢?通常一个系统的日PV在千万以上的,有可能是一个高并发系统。

# 高并发关心的问题

指标说明

指标 描述
QPS 每秒钟请求或者查询的数量
吞吐量 单位时间内处理的请求量
响应时间 从请求发出到响应花费的时间
PV 综合浏览量,即页面浏览量或者点击量,一个访客在24小时内访问的页面数量,同一个用户浏览一个页面作为一个PV
UV 独立访客,一定时间范围内相同访客多次访问网站,计算为一个独立访客
带宽 计算带宽大小需要关注峰值流量和页面的平均大小,峰值一般是平均值的倍数
日网站带宽 PV/统计时间(换算到秒)*平均页面大小(单位kb)*8
峰值每秒请求数(QPS) (总PV数80%)/(6小时秒数20%)=峰值每秒请求数(QPS),基础原则:80%的访问量集中在20%的时间

QPS不等于并发连接数,QPS是每秒HTTP请求数量,并发连接数是系统同时处理的请求数量

# 压力测试

压力测试:测试单台服务器能承受的最大并发、QPS值 常用性能测试工具:ab、wrk、http_load、web bench、siege ab:是Apache官方推出的工具,测试目标是基于url,用于测试Apache、Nginx的负载压力

ab -c 100 -n 5000
1

注意事项:

  1. 测试机器与被测试机器分开
  2. 不要对线上服务器做压力测试
  3. 观察测试工具ab所在的机器,以及被测试的前端机的cpu、内存、网络等都不超过最高限度的75%

# QPS峰值

QPS 场景描述 解决方案
QPS达到50 小型网站 一般的服务器可以应付
QPS达到100 假设关系型数据库每次请求在0.01s,单页面只有一个SQL查询,那么100QPS意味着1s完成100次请求,但是此时无法保证数据库查询可以完成100次 数据库缓冲层、数据库的负载均衡
QPS达到800 假设我们使用的百兆带宽,那么网站出口的实际带宽是8M左右,假设每个页面只有10k,在这个并发条件下,百兆带宽已经吃完 CDN加速,负载均衡
QPS达到1000 假设使用memcache缓冲查询数据,每个页面对Memcache的请求远大于直接对DB请求Memcache的悲观并发数在2w左右,但有可能在之前内网带宽已经吃完,表现出不稳定 静态HTML缓冲
QPS达到2000 这个级别下,文件系统访问锁称为了灾难 做业务分离,分布式存储

# 高并发解决案例

流量优化:

  1. 防盗链处理

前端优化:

  1. 减少http请求
  2. 添加异步请求
  3. 启用浏览器缓冲和文件压缩
  4. CDN加速
  5. 建立单独的图片服务器

服务端优化

  1. 动态语言静态化
  2. 动态语言并发处理

数据层优化

  1. 数据库缓冲层的优化
  2. MySQL数据层的优化

架构优化

  1. web服务负载均衡

# 相关连接

  • 高并发解决方案-负载均衡
  • Redis 开发建议
编辑
#高并发面试题
上次更新: 2020/12/31, 06:55:18
常见数据结构
流量优化

← 常见数据结构 流量优化→

最近更新
01
MVC对比
12-31
02
负载均衡
12-31
03
数据库缓存优化
12-31
更多文章>
Theme by Vdoing | Copyright © 2020-2020 Evan Xu | MIT License
  • 跟随系统
  • 浅色模式
  • 深色模式
  • 阅读模式