目录

  • 前言
  • 1. 测试QPS的方法
  • 2. 提高QPS的方法

前言

这类题型在面试中或者实战中都是一个很有深度的题目
今天单独拎出来深度探讨一下

主要的QPS:每秒钟request/事务 数量.也就是每秒请求数,就是说服务器在一秒的时间内处理了多少个请求。
以下解释来源于百度百科:

每秒查询率(QPS,Queries-per-second)是对一个特定的查询服务器在规定时间内所处理流量多少的衡量标准,在因特网上,作为域名系统服务器的机器的性能经常用每秒查询率来衡量。

区分TPS的概念:一个事务是指一个客户机向服务器发送请求然后服务器做出反应的过程。客户机在发送请求时开始计时,收到服务器响应后结束计时,以此来计算使用的时间和完成的事务个数。

QPS基本类似于TPS,但是不同的是,对于一个页面的一次访问,形成一个TPS
一次页面请求,可能产生多次对服务器的请求,服务器对这些请求,就可计入“QPS”之中

一般qps多了,通过加其服务器横向扩展也是不错的选择,但具体情况还是具体分析(集群规模上去之后,也会引入一堆服务发现、服务治理的新问题)

1. 测试QPS的方法

关于测试QPS的方法有很多,主要参考了如下文章:
面试官之问:知道你的接口“QPS”是多少吗?

大致意思如下:

  1. 在接口中书写请求次数,在日志中统计请求次数即可logger.info
  2. 在tomcat服务器中的access log指定属性,默认访问的url会有统计其数量
    (在日志中这么查询)cat xx.log |grep 'GET /mvc2'|cut -d ' ' -f4|uniq -c|sort -n -r
    cut过滤空格,取第4列,uniq -c 在每列旁边显示该行重复出现的次数,sort排序

如果用了各个容器服务器,通过top命令查看其哪个用的多
再进到该容器或者服务器中,使用jstat查看gc状态

iftop可以用来监控网卡的实时流量(可以指定网段)、反向解析IP、显示端口信息等( iftop是类似于top的实时流量监控工具)

2. 提高QPS的方法

在集群化的架构下,可以采用池化(内存池,连接池,线程池),分布式缓存,分布式消息队列,流控技术(服务降级,应用拆分,限流)和数据库高并发(分库分表,读写分离等)提高并发能力

  • 增加并发数
    后端开发的尽量无服务状态,可以更好的横向扩展
    数据库的连接请求量、服务器的连接数、以及与服务器匹配的线程数,满足更多的需求
    内存池:通过malloc的分配(大小合适的内存适应相应的内存)
    线程/线程池:充分利用资源,减少开销
    连接池:数据库预先创建好连接给线程等(提高速度)

  • 减少平均响应时间
    Mq:流量削峰,适当的给流量减压,还可以使用mq进行降低接口的延迟
    redis缓存:进行写少读多的缓存压力
    算法:优化程序(通过调用一些算法),可看我这篇文章:java中常见的限流算法详细解析
    网络层面:减少网络开销,适当长连接或者短连接
    数据库层面:尽量命中索引(单库中尽量MVCC在不加锁的情况下,实现并发读写,同时通过事务隔离级别控制并发效率。)(集群中分库分表,读写分离等)
    流控:通过服务降级服务优化等

QPS常用的测试以及优化方法相关推荐

  1. 几种常用的优化方法梯度下降法、牛顿法、)

                                                                       几种常用的优化方法 1. 前言 熟悉机器学习的童鞋都知道,优化方法 ...

  2. 梯度下降法 —— 经典的优化方法

    梯度下降法 -- 经典的优化方法 机器学习基础算法python代码实现可参考:zlxy9892/ml_code 1 原理 在机器学习的核心内容就是把数据喂给一个人工设计的模型,然后让模型自动的&quo ...

  3. webpack打包vue反编译_2020年你必须知道的webpack打包优化方法

    本文字数:3534字 预计阅读时间:10分钟 随着我们的项目项目越做越大,引入的第三方库会越来越多,打包的依赖也越来越多,每次 build 的时间越来越长,打包出来的文件会越来越大.最糟糕的是单页面应 ...

  4. 模型效果差?我建议你掌握这些机器学习模型的超参数优化方法

    模型优化是机器学习算法实现中最困难的挑战之一.机器学习和深度学习理论的所有分支都致力于模型的优化. 机器学习中的超参数优化旨在寻找使得机器学习算法在验证数据集上表现性能最佳的超参数.超参数与一般模型参 ...

  5. 积神经网络的参数优化方法——调整网络结构是关键!!!你只需不停增加层,直到测试误差不再减少....

    积神经网络(CNN)的参数优化方法 from:http://blog.csdn.net/u010900574/article/details/51992156 著名: 本文是从 Michael Nie ...

  6. 测试mktime和localtime_r性能及优化方法

    // 测试mktime和localtime_r性能及优化方法 // // 编译方法:g++ -g -o x x.cpp或g++ -O2 -o x x.cpp,两种编译方式性能基本相同. // // 结 ...

  7. Algorithm:机械优化设计的数学模型简介、常用优化方法、优化计算工具简介之详细攻略

    Algorithm:机械优化设计的数学模型简介.常用优化方法.优化计算工具简介之详细攻略 目录 机械设计中基于算法模型的机械优化设计 1.优化设计的数学模型

  8. HiveSQL常用优化方法全面总结

    转载自  HiveSQL常用优化方法全面总结 Hive作为大数据领域常用的数据仓库组件,在平时设计和查询时要特别注意效率.影响Hive效率的几乎从不是数据量过大,而是数据倾斜.数据冗余.job或I/O ...

  9. 常用的优化方法-梯度下降、牛顿法、坐标下降法

    最优化问题在机器学习中有非常重要的地位,很多机器学习算法最后都归结为求解最优化问题.在各种最优化算法中,梯度下降法是最简单.最常见的一种,在深度学习的训练中被广为使用. 最优化问题是求解函数极值的问题 ...

最新文章

  1. C++ 笔记(27)— 指针变量、数组和指针、指针数组、数组指针、指针常量与常量指针
  2. [泰然翻译] cocos2d programming guide翻译(10)
  3. 记忆的天空:“崩塌型”记忆活动原理
  4. 夜间模式的开启与关闭,父模板的制作
  5. docker学习笔记(二)创建自己的镜像
  6. C++11中的右值引用
  7. 鸿蒙系统会不会影响游戏,令人担心,鸿蒙系统会不会让人失望?未来难说
  8. linux apache目录权限配置,Linux系统架构-----Apache的用户访问权限的设置
  9. 开源在线文档编辑工具_开源暑期实习,在线教育新工具等
  10. python抽取指定url页面的title_Python新手写爬虫全过程记录分析
  11. [leetcode] 472. 连接词
  12. C++万能头文件(真心佩服!)
  13. 日本公司为东京大学开设区块链课程捐款80万美元
  14. 关于CUDA,cuDNN,TF,CUDA驱动版本兼容问题
  15. 使用GPS和velodyne 64拼接地图
  16. 2019第一季度工作总结
  17. lol比尔吉沃特服务器未响应,LOL比尔吉沃特9月30日网络波动公告 引起卡机掉线丢包状况...
  18. Swift5 字符串(String)操作
  19. 求函数在x0处的增量_设函数y=2x^2,已知其在点x0处自变量增量时,对应函数增量的线性主部为-0.6,则x0=()A.0B.1C.-0....
  20. rnnlm源码分析(二)

热门文章

  1. Intel Core 2 Duo处理器DMI总线技术和i7处理器QPI总线技术的概述
  2. win系统下Scrapy安装
  3. 论文解读 | 美人秀色空绝世,我用PS-GAN试伊妆
  4. 【无限思维画布】制作思维导图第三步,节点移动与编辑
  5. node开通阿里云短信验证服务,代码演示 超级详细
  6. win7无法找到网络计算机用户,win7不能访问局域网其他电脑怎么办_win7不能访问局域网电脑怎么解决-win7之家...
  7. python O2O网站优惠券使用率数据分析
  8. Linux线程JOINABLE与DETACHED的区别
  9. TCP、UDP报文格式
  10. VR全景的应用以及优势