如何解决PHP的高并发和大流量的问题
基础知识
TFS : 吞吐量 (吞吐量是指系统在单位时间内处理请求的数量)
RT : 响应时间 (从请求发出到收到响应时间)
并发数 : 在一段时间内同时访问站点的用户数
QPS : 每秒查询率 (每秒请求或者相应数,在互联网领域,值每秒相应请求数(值HTTP请求))
PV : page view 页面访问量
UV : user view 用户访问量
一般来说,日pv(访问量)大于1000万就可以算做高并发
日网站带宽 = PV / 统计时间 (秒) * 页面平均大小(KB) * 8
压力测试
推荐使用apache自带的压力测试工具 ab
使用方法:进入apache目录,在当前目录下运行(windows):
ab.exe -n 总请求量 -c 并发请求量 http://请求地址
请求结束后我们可以得到数据:
Server Software: Apache/2.4.18 服务器类型 Server Hostname: eko.xiao.com 域名 Server Port: 80 端口 Document Path: /index.html 请求文件 Document Length: 529 bytes 文件大小 Concurrency Level: 100 并发数 Time taken for tests: 1.240 seconds 总响应时间 Complete requests: 1000 请求数 Failed requests: 0 失败次数 Total transferred: 800000 bytes 总共传输数据量 HTML transferred: 529000 bytes Requests per second: 806.41 [#/sec] (mean) QPS(每秒查询率) Time per request: 124.007 [ms] (mean) 平均响应时间 Time per request: 1.240 [ms] (mean, across all concurrent requests) Transfer rate: 630.00 [Kbytes/sec] received Connection Times (ms) min mean[+/-sd] median max Connect: 0 1 1.4 1 38 Processing: 42 114 34.2 103 204 Waiting: 41 113 33.9 102 204 Total: 43 115 34.5 104 207 Percentage of the requests served within a certain time (ms) 50% 104 66% 117 75% 133 80% 136 90% 173 95% 197 98% 204 99% 204 100% 207 (longest request)
优化
随着QPS增长,每个阶段需要做不同的优化措施,优化的方案也与硬件,网络条件相关
QPS达到50
无需优化
QPS达到100(数据库层)
假设数据库每次查询0.01S,每个页面只有一个sql查询,那么此时已经是数据库极限
优化措施:数据库缓存,数据库负载均衡,redis,memcache
QPS达到800 (网络带宽)
假设每个页面只有10K,那么在800QPS下,带宽已经耗尽
优化措施:CDN加速 负载均衡
QPS达到1000
优化措施:静态页面
流量优化:
防盗链处理
前端优化:
减少HTTP请求
添加异步请求
启用浏览器缓存
服务器优化:
页面静态化
并发处理
队列处理
数据库优化:
数据库缓存
分库分表,分区操作
以上就是本文的全部内容,希望对大家的学习有所帮助,更多相关内容请关注PHP中文网!
相关推荐:
以上就是如何解决PHP的高并发和大流量的问题的详细内容,更多请关注其它相关文章!
上一篇: php如何删除cookie实例详解
下一篇: 怎么外部引入css