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

高并发架构的概念

相同的时间点有多少个访问同时到达

  • QPS:每秒请求或者查询的数量,在互联网领域,指每秒响应请求数(http)
  • 吞吐量:单位时间处理的请求数
  • PV:24小时内综合浏览量,页面数量
  • UV:独立访客,时间范围内访问相同网站,只算为1个独立访客
  • 带宽:日网站的带宽 = PV/统计时间(秒) * 平均页面大小(kb) * 8
  • (总PV数 * 80%) / (6小时秒数 * 20%) = 峰值每秒请求数(QPS)

压力测试

  • 测试能承受的最大并发
  • 测试最大承受的QPS

测试工具:ab(apache benchmark)

  • ab的使用:模拟并发请求100次,从工请求5000次
  • ab -c 100 -n 5000 待测试网站
  • 注意事项
  • 测试机器预备测试机器要分开
  • 不要对线网站做压力测试
  • 观测测试工具ab所在的机器,以及被测试的前端机的CPu,内存,网络等都不要超过最好限度的75%
  • QPS 达到50
  • 方案:小型网站,不需要优化
  • QPS达到100
  • 方案:数据库缓存层,数据库的负载均衡
  • QPS达到800
  • 方案:CDN加速,负载均衡
  • QPS达到1000
  • 方案:静态HTML缓存
  • QPS达到2000
  • 方案:做业务分离,分布式存储

高并发解决方案案例

  • 流量优化
  • 防盗链处理
  • 前端优化
  • 减少HTTP请求(css,js,图片)
  • 添加异步请求(数据异步加载)
  • 启用浏览器缓存和文件压缩
  • CDN加速
  • 建立独立的图片服务器
  • 服务端优化
  • 页面静态化
  • 并发处理
  • 队列处理
  • 数据库优化
  • 数据库缓存
  • 分库分表,分区操作
  • 优化sql语句
  • 读写分离
  • 负载均衡
  • web服务器优化
  • 负载均衡