• 公号-云原生程序员
    2018-10-05
    除了本文提供的方式外,还可从考虑从以下方面进行调整:
    1 提升硬件条件:CPU核数、主频、内存、磁盘I/O、SSD、网卡等
    2 JVM性能调优
    3 缓存

    作者回复: 👍

    
     13
  • godtrue
    2018-11-13
    很棒,如醍醐灌顶!

    性能优化的核心就一个字-减

    如果还继续减的
    1:异步化-减少等待响应的时间
    2:降日志-减本地磁盘的交互
    3:多级缓存-再减少获取数据路径
    4:减功能-非核心功能或后补功能去掉
    展开

    作者回复: 👍

    
     9
  • Sven
    2018-12-22
    我也刚发现原来大神是java技术内幕作者本尊>o<
    
     4
  • 饭粒
    2018-12-17
    自己道行浅,看这有点泛啊..

    作者回复: 还是要自己去实践:)

    
     4
  • speedfirst
    2018-10-07
    能否再具体解释下“合并部署”如何避免序列化的?我的理解是不管在不在一个tomcat都要走一次http,所以总要序列化。tomcat提供某种机制可以跨进程非序列化通信?

    作者回复: 这个里面实现比较复杂,几句话很难讲清楚,《架构演进与性能优化》有专门一章介绍了实现方案

    
     4
  • Hana
    2018-10-23
    拜读过您的 《深入分析 Java Web 技术内幕》 这一本书,讲解非常通俗易懂,也不失深度,今天才反应过来作者跟您是同一个人🤥

    作者回复: 😉

    
     3
  • One day
    2018-11-01
    想问下有dubbo相关的书籍推荐一下吗?在网上没找到。。。

    作者回复: Dubbo专门的书籍我也没看到过,不过可以去看看他的官方文档,再结合他的源码,相信你能够搞明白😉

    
     2
  • Schelor
    2018-10-05
    许老师行文流畅,文章有层次。
    部分文字如统一接入层,Tair等还是可以看出,阿里技术还是渗透很深的。

    作者回复: 😉

    
     2
  • 跃然
    2019-09-27
    通过减少序列化提高性能,合并部署时为什么不能走本机的socket呢
    
     1
  • 张祎
    2019-07-09
    一个办法就是看当 QPS 达到极限时,你的服务器的 CPU 使用率是不是超过了 95%,如果没有超过,那么表示 CPU 还有提升的空间,要么是有锁限制,要么是有过多的本地 I/O 等待发生。

    如果cpu使用率不到95%,说明此时cpu不是瓶颈?因为我理解如果cpu是瓶颈,需要优化的话,应该是cpu先到达了阈值而其他的诸如iops ,带宽使用没有到达阈值,希望老师能够指点一下
    
     1
  • ailei
    2019-03-31
    这个老师比讲linux的刘老师响应留言多,超赞👍
    
     1
  • linx
    2019-02-18
    千兆带宽下 10KB 数据的极限 QPS 为 1.25 万 QPS=1000Mbps/8/10KB
    不太明白这个8 是指什么呢?

    作者回复: 大B和小b的区别

    
     1
  • 看不到de颜色
    2018-10-15
    看完这章内容有一点跟之前了解到不一致的地方。就是通常设置线程数大小会根据任务类型进行区分。通常会划分为IO密集型和CPU密集型。印象中CPU密集型的任务通常线程数建议就是 CPU核心数+1。那么老师在文中提到的 2*CPU核心数+1指的是IO密集型任务的通常线程数设置嘛?
    看完这章内容还有一个感受就是设置JSF(类似于Dubbo的一个RPC框架)线程池大小时是否也可以先从接口的QPS入手。之前都是凭感觉设置,线上出问题了再扩大😂

    作者回复: 关于线程数的设定我给出的是一个经验公式,不是所有的线程池都要根据这个设置,那肯定也不合理,例如,一个Java系统里可能都很多线程池,如果每个线程池都设置这个值,那会有很多的线程。

    我说的这个设置,其实主要是想把最重要处理用户请求的线程池设置这个数,或者是系统中最核心的处理用户请求的线程池建议按照这个来设置,另外像Dubbo中的线程池的数量还要根据每个请求的rt以及并发数来综合考量,例如如果每个请求的rt比较长,那么并发数一多的话,很容易就满了,这时你为了提升并发请求数,肯定要多设置一些线程数,否则很容易请求失败。当然你也可以增加机器来解决,总之你还是要有个平衡。

    
     1
  • 吴浩
    2018-10-08
    读的场景可以允许一定的脏数据,导致少量原本无库存的下单请求被误以为有库存,可以在写数据的时候再保证最终一致性



    想问下,这里在写的时候保证是该如何保证了?库存量大于1么?

    作者回复: 嗯,写的一致性主要是通过数据库来保证

    
     1
  • SpoutAndBolt
    2018-10-06
    如果让前端无效请求数降低 能否可以使用Nginx的配置 limit_connect来控制

    作者回复: 可以到是可以,就是比答题的方式更暴力一点,呵呵

    
     1
  • 黄金的太阳
    2018-10-06
    老师,总QPS那个公式不是很理解,请问是如何推导出来的?1000ms指的是1000毫秒的意思?
    正常的公式不应该是QPS=总请求数/(线程数*响应时间)嘛?

    作者回复: 是1000毫秒

    单线程是1000毫秒/每个请求的rt
    所以多线程就近似等于单线程的qps乘以线程数了

    
     1
  • wuhulala
    2018-10-05
    有个疑问:比如dubbo默认线程池大小是200 这个线程配置 其实在我们的机器往往是8c的 并且是计算密集型 那么就过于大了吧 默认配置这么大是因为大部分机器都是64c+么?

    作者回复: Dubbo的线程池的大小还要看看你的远程调用的rt是多少,如果rt比较长,那线程数就要多一点,不然你的系统连接很容易就满了,就拒绝服务了。

    
     1
  • 李瑞
    2019-12-04
    请问老师,线程CPU时间及线程等待时间如何计算呢?
    
    
  • yang11111
    2019-11-01
    老师 一台机器一般qps能到多少 很想知道
    
    
  • 美美
    2019-10-17
    缓存秒级别的被动更新---是不是会出现秒杀在几秒钟都结束了,缓存还没更新?
    
    
我们在线,来聊聊吧