面试题
PHP如何解决网站大流量和高并发的问题?
整个架构方向去考虑,去回答
考官考点
1.相关概念
高并发:某个时间点,有多少个访问同时到来
PV:日PV(一天总浏览量或点击量)在千万以上,可能就是个高并发系统
UV:一定时间范围内相同访客多次访问网站,类似IP
QPS: 每秒钟响应请求数 每秒查询率
并发连接数: 系统每秒钟处理的请求数
吞吐量:单位时间内处理的请求数量
响应时间:请求到响应所花费的时间
日网站带宽=PV/统计时间(S)*平均页面大小(KB)*8
峰值每秒请求数 = 总PV*80%/6*3600*20%
80%的访问量集中在20%的时间
压力测试
测试能承受的最大并发
测试最大承受的QPS值
常用性能测试工具
ab,wrk,http_load.Web Bench.Siege.Apache JMeter
ab全程apache benchmark 创建多个并发访问线程,模拟多个访问者同时访问
ab基本使用
注意事项
1)测试机器与被测试机器分开
2)不要对线上服务做压力测试
3)cpu,内存,网络使用不超过75%
ab本身包含在Apache中
额外安装命令:yum -y install http-tools
查看参数信息命令:ab
模拟并发请求100ci,总共请求5000次
命令: ab -c 100 -n 5000 url网址
QPS达到50 一般服务器可以应付 不需要优化
QPS达到100 数据库缓存 数据库负载均衡
QPS达到800 CDN加速 负载均衡
QPS达到1000 静态HTML缓存
QPS达到2000 业务分离 分布式储存
2.解决方案
1)流量优化
防盗链处理
2)前端优化
减少HTTP请求 添加异步请求 启用浏览器缓存和文件压缩 CDN加速 建立独立图片服务器
3)服务端优化
页面静态化 并发 队列
4)数据库优化
数据库缓存 分库分表 分区操作 读写分离 负载均衡
5)web服务器优化
负载均衡