高并发一般是指咱们提供的系统服务可以同时处理不少请求。sql
了解下概念:数据库
QPS = 并发数 / 响应时间后端
二八原则:80%的业务量在20%的时间里完成缓存
假定总并发请求数量为10000,每一个请求的处理时间为t秒,服务器一次性能够处理的请求数量为n个,那么处理完全部的请求须要用时为T性能优化
T = (10000 / n ) * t服务器
反过来计算每秒处理多少请求则网络
QPS = (1 / t ) * n并发
假设咱们天天80%的访问集中在20%的时间里(峰值),若是天天有300万的pv,而 咱们的单台机器的QPS为58,运行在单机上(固然常常宕机),按照上面的系统性能数据,给出优化解决方案。负载均衡
qps = ( 300W x 0.8 ) / ( 24x3600x0.2 ) = 139
方案一:加机器
既然一台机器搞不定,咱们就多上几台机器。这就涉及到db主从、读写分离、负载均衡等技术。
它的原理就是分流,把之前集中的压力分散开来。改方案见效快,灵活,实践起来也更快。
因此机器上须要 139/58 台
方案二:增长单机性能
单机到底性能可以增长到一个什么程度,这取决于你的机器配置,也取决于你的服务到底有多复杂。
常见好比:提升机器cpu、memory(能够提升系统同时处理请求的数量);php启用opcache缓存;运用各类数据缓存技术;代码性能优化;数据库优化;运用常驻内存的技术;
假设如今须要你设计个系统,来分析当前产品各个接口的qps,及当前系统的qps状况。
qps = 时间段内请求数/时间段
假设咱们以每分钟或者每小时来运算。首先对每次请求记录日志包含响应时间、响应结果(每次请求用一个惟一标识标记)记录到日志文件,后端起个进程对日志文件读取,将数据发送到队列系统,另外一方队列消费,落地到数据库或者nosql,接下来
就是对这些数据进行分析,不难分析qps吧,这样的日志系统也能够做为全局日志系统,供公司各个业务线查询日志,也能够起到监控预警的做用(好比说请求超时、访问量激增异常)。为何不直接入库分析,这样的方案大流量下不会形成性能问题。
【feek 指定行指针;fgets 获取行内容;feof 判断是否是到达末尾】