zoukankan      html  css  js  c++  java
  • (转载)如何提高系统的吞吐量(QPS/TPS)

    转载自:https://juejin.im/post/6844903605036662797

    如何提高系统的吞吐量(QPS/TPS)

    一.系统吞度量要素:

    一个系统的吞度量(承压能力)与request对CPU的消耗、外部接口、IO等等紧密关联。单个reqeust 对CPU消耗越高,外部系统接口、IO影响速度越慢,系统吞吐能力越低,反之越高。

    系统吞吐量几个重要参数:QPS(TPS)、并发数、响应时间

    QPS(TPS):每秒钟request/事务 数量

    并发数: 系统同时处理的request/事务数

    响应时间: 一般取平均响应时间

    (很多人经常会把并发数和TPS理解混淆)

    理解了上面三个要素的意义之后,就能推算出它们之间的关系:

    QPS(TPS)= 并发数/平均响应时间 或者 并发数 = QPS*平均响应时间

    举个例子:

    银行窗口业务,早上8点上班,窗口数量为10个窗口,平均每个人办理业务的时候为5分钟。可以用下面的方法计算。

    并发数=10个窗口

    平均响应时间为 = 5*60 秒

    QPS = 10/(5*60) 事务/秒

    一个系统吞吐量通常由QPS(TPS)、并发数两个因素决定,每套系统这两个值都有一个相对极限值,在应用场景访问压力下,只要某一项达到系统最高值,系统的吞吐量就上不去了,如果压力继续增大,系统的吞吐量反而会下降,原因是系统超负荷工作,上下文切换、内存等等其它消耗导致系统性能下降。

    web_5

    决定系统响应时间要素

    我们做项目要排计划,可以多人同时并发做多项任务,也可以一个人或者多个人串行工作,始终会有一条关键路径,这条路径就是项目的工期。

    系统一次调用的响应时间跟项目计划一样,也有一条关键路径,这个关键路径是就是系统影响时间;

    关键路径是有CPU运算、IO、外部系统响应等等组成。

    二.如何提高系统QPS?

    由前面的公式:QPS(TPS)= 并发数/平均响应时间 可以看出,要提高qps,我们必须做2个方面努力

    2.1增加并发数

    1.比如增加tomcat并发的线程数,开喝服务器性能匹配的线程数,可以更多满足服务请求。

    2.增加数据库的连接数,预建立合适数量的TCP连接数

    3.后端服务尽量无状态话,可以更好支持横向扩容,满足更大流量要求

    4.调用链路上的各个系统和服务尽量不要单点,要从头到尾都是能力对等的,不能让其中某一点成为瓶颈。
    5.RPC调用的尽量使用线程池,预先建立合适的连接数。

    2.2减少平均响应时间

    1.请求尽量越前结束,越好,这样压力就不要穿透到后面的系统上,可以在各个层上加上缓存

    2.流量消峰。放行适当的流量,处理不了的请求直接返回错误或者其他提示。和水坝道理很类似

    3.减少调用链

    4.优化程序

    5.减少网络开销,适当使用长连接

    6.优化数据库,建立索引

    最后,要优化的地方还有很多,上面只是列举常见一些要注意的地方,优化的指导原则就是

    增加并发数 和减少平均响应时间
  • 相关阅读:
    javascript实现禁止右键和F12查看源代码
    网页头部meta标签
    apache多站点vhost.conf配置
    dedecms织梦(一)
    PHP开发微信公众号
    wordpress学习(五)----插件
    wordpress学习(四)---url伪静态简单了解
    wordpress学习(三)-----add_action动作钩子和add_filter()过滤器钩子
    wordpress学习(二)
    原生JS实现addClass,removeClass,toggleClass
  • 原文地址:https://www.cnblogs.com/yourstars/p/13717030.html
Copyright © 2011-2022 走看看