高并发分析

目录php

概念

高并发一般是指咱们提供的系统服务可以同时处理不少请求。sql

了解下概念:数据库

  • QPS(TPS):每秒钟reques/事务 数量,指每秒应对的请求数(http请求);
  • 吞吐量:单位时间内处理的请求数量(一般由QPS与并发数决定);
  • 响应时间:系统对一个请求作出响应的平均时间。例如系统处理一个HTTP请求须要200ms,这个200ms就是系统的响应时间(我认为这里应该仅包含处理时间,网络传输时间忽略)。
  • 并发是指,某个时刻有多少个访问同时到来,处理多个任务的能力,不必定要同时
  • 并行是同时刻在多个cpu核心发生的事件,并发是单个cpu核心在一个时间段内交替发生的事件

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 判断是否是到达末尾】

相关文章
相关标签/搜索