摘要:0 不允许在循环内打日志 1 主要策略:限制某个循环体内打日志的次数 主要困难:调用链太长,传递循环当前次数要改很多方法,类似于事务的connction,这种不方便传递参数的东西就想到了threadlocal 2 不想永久某线程到100就一直不让打了,想第二天的job清0 同时也不想用timer——
阅读全文
摘要:假设qps为500 request 平均长度1K,response平均长度200K 则每秒流量为入站1K*500=500KB/s=4Mbit/s 出站200K*500=10MB/s=80Mbit/s
阅读全文
摘要:https://blog.csdn.net/csd753111111/article/details/100428512 脚本: #cat mysql_qps.sh #!/bin/bash MYSQL_CON="/usr/local/mysql/bin/mysql" TIME="$1" OLD_QU
阅读全文
摘要:如果想不过来,可以想1条连接的并发数、连接数 服务端同步 服务端异步 客户端同步 服务端无论同步异步,效果是一样的 想象一下1条连接的情况下,服务端同一时刻只有1个req被客户端发送到并处理 1条连接在处理完并写回前,永远不会收到第2个req tcp(netty)的调用同步化(异步阻塞)及与http
阅读全文
摘要:1 原则 1.1 同步: 上游最大生产速度(总最大生产速度)==下游最大生产速度==qps==qps1 * qps2/qps1 + qps2 <min{qps1, qps2} 池n2==下游服务并发数(看客户端异步、服务端异步与并发事务处理数、连接数的关系),n2 <= n1,开多了也没用,当n2=
阅读全文
摘要:http://www.sohu.com/a/342596009_120054825 netstat 查看过多的TIME_WAIT 0 经常出现Address already in use (Bind failed)的问题。很明显是一个端口绑定冲突的问题,于是大概排查了一下当前系统的网络连接情况和端口
阅读全文
摘要:限流怎么做 1 信号量 2 线程池 3 Redis 的 INCR 和 EXPIRE zset 4 redis 漏斗桶 reply 5 令牌桶 6 连接池 7 滑动窗口 原则: 假定:下游极限吞吐量qps,出现在最大并发数n,则 1)下游最大生产速度<=qps 2)上游同步生产的情况下,下游(限流池)
阅读全文
摘要:应当取(并发线程数+1)*保险系数,遵循以下原则:(为什么+1:线程池的取值(三)阻塞队列边界取值+1,还需要全面了解线程池源码) 1 根据 组合设计qps ,避免过小的连接池压缩上游线程池并发数,进而影响整理吞吐量,只有当n2=n1时,整体吞吐量理论最大 2 也要从限流角度限流怎么做(战略),避免
阅读全文
摘要:在上一篇中,线程池的取值(二)设计吞吐量 重要,使用无界的LinkedBlockingQueue来接收等待队列,我们将阻塞队列改为36来看看: 循环次数 2 jhm 自己压测 阻塞队列长度 36 多个放弃,响应时间28~19 1个放弃,相当稳定地每次出现在第4个打印“0”后 阻塞队列长度 37 没有
阅读全文
摘要:(2)补充,对于任务型,比如推送,也会有一个推送延迟的要求,可用n1来压测取得其吞吐量和响应时间,对比是否在要求以内 实测数据: 线程数 吞吐量 响应时间 1 0.5 2 2 1 2 3 1.5 2 4 2 2 5 2 2.5 6 2 3 40 2 20 测试代码: import java.util
阅读全文
摘要:还是来看这张图: 由于此前redis分布式锁超时事故,所以中间那个线程池设置为有界队列,并配置了放弃策略,故当disruptor消费者不给力时,经阻塞模式的disruptor逆推到生产者阻塞,导致堆积的线程超出队列上限被放弃 那为什么消费者会不给力? 在消费者中,消费频率大约是一个合约每秒4次,在2
阅读全文
摘要:1 背景 由于股票撮合中,我们使用zset构建到价成交,故这里对rangebyscore命令进行原位压力测试 撮合、止盈止损 使用redis zset触发股票成交 行情丢失导致无法撮合成交【重点】 redis线程池如何定,为什么开10个disruptor消费线程(redis连接): 1)io密集型4
阅读全文
摘要:public static void main(String[] args) throws RunnerException { // 使用一个单独进程执行测试,执行5遍warmup,然后执行5遍测试 Options opt = new OptionsBuilder().include(FirstBe
阅读全文
摘要:https://mp.weixin.qq.com/s?__biz=MjM5ODYxMDA5OQ==&mid=2651959542&idx=1&sn=2494bbea9a855e0e1c3ccd6d2562a600&scene=0#rd 一,需求缘起 互联网公司,这样的场景是否似曾相识: 场景一:pm
阅读全文
摘要:1 https://segmentfault.com/a/1190000019152276?utm_medium=referral&utm_source=tuicool 其实在编程领域,异步的场景还是挺多的,比如 TCP 协议本身就是异步的,我们工作中经常用到的 RPC 调用,在 TCP 协议层面,
阅读全文
摘要:1 业务线程池 加快io线程效率(不处理业务) 避免 同步处理回执时 意外阻塞 io线程,或handler处理太慢拖累io线程,从而导致堆外溢出 缺点是:业务处理完后,待写入,发现要切换线程到io线程,加大线程切换的开销,与netty3读写非同一线程有些像 如果仅仅handler处理慢,加大work
阅读全文
摘要:根据: https://blog.csdn.net/blogofwill/article/details/69568575 https://blog.csdn.net/JustinQin/article/details/79530038 最主要的参数: maxIdleTime:最大空闲时间,超过这个
阅读全文
摘要:public ThreadPoolExecutor(int corePoolSize, int maximumPoolSize, long keepAliveTime, TimeUnit unit, BlockingQueue<Runnable> workQueue, ThreadFactory t
阅读全文
摘要:https://zhidao.baidu.com/question/1495951065865595059.html 每秒查询率QPS是对一个特定的查询服务器在规定时间内所处理流量多少的衡量标准,在因特网上,作为域名系统服务器的机器的性能经常用每秒查询率来衡量。原理:每天80%的访问集中在20%的时
阅读全文
摘要:想着探讨nginx负载均衡的作用 服务器A 4核 B 8核 nginx 部署在A,tomcat1 tomcat2部署在B(因为没第三台机器了,只能先这样看看效果) nginx worker_connections 51200 后台worker process进程的最大并发链接数 worker_con
阅读全文