
高并发
米斯特程序猿
爱生活,爱自己,爱家人,不抛弃,不放弃,敢冒险
展开
-
谨慎使用redis 的zset 数据结构
问题发下过程如下最近两天连续收到redis闪断问题提交工单反馈说是有key集中过期造成,但是白天跑一天没事,后来按照参考加上随机时间,暂时没有发现新的闪断现象继续压测发现redis集群CPU利用率过高,维持在80%以上由于zset有排序动作,当值很少(十几kb)不会有太明显的CPU标高现象,但是依然有CPU长时间负载较高的风险,主要原因是数据过大,CPU一直在做排序动作,所以CPU标高最后解决办法是使用简单的k-v存储,CPU非常平稳,几乎不会超过10%,存储空间降低约50%~60%65万数原创 2021-04-26 15:12:51 · 1026 阅读 · 0 评论 -
线上 indexOf 引发的性能问题总结
因某次更新造成线上处理数据性能降2 ~ 3倍,没更新前处理时间在300毫秒左右,更新后为600 ~ 900毫秒经过代码排查,发现是因为增加如下代码 boolean mainSiteIdCheck = data.indexOf("main_site_id") == -1; if (mainSiteIdCheck) { log.warn("缺少[main_site_id]", data); TotalUtil.dataErro.原创 2021-04-22 10:03:03 · 796 阅读 · 0 评论 -
JAVA 并发与高并发知识笔记(一)
一、并发与高并发基本概念并发: 从业务上简单解释就是多个用户(编码层面就是多个线程)共同竞争(修改或读取)一个资源,并发问题更多体现在业务代码操作数据上,例如:秒杀场景,瞬间会有大量用户共同抢购一个商品,这时候如果没有并发控制,则极有可能出现超卖情况,即库存被扣成了负数。 从操作系统以及硬件层面解释并发:有多个线程运行在CPU上,当在单核处理上运行的时候,多个线程在单核处理上交替执...原创 2018-04-10 18:44:12 · 1801 阅读 · 0 评论 -
JAVA 并发与高并发知识笔记(二)
一、并发安全、不安全描述安全:多个线程操作同一个资源,最后的执行结果与单线程执行结果一致,则说明是线程安全的不安全:多个线程操作同一个资源,最后执行结果不确定的,则说明不是线程安全的这里我觉得还是解释一下并发与并行的一点区别比好(并非绝对概念),并发通常是多个线程去竞争相同资源,而并行通常是多个线程之间是协作关系,例如,在秒杀场景下,多个用户(线程)共同争抢某个资源,这个是并发。例如,多个线程统计...原创 2018-04-12 10:34:30 · 470 阅读 · 0 评论 -
JAVA 并发与高并发知识笔记(三)
一、原子性操作的几种方式先回顾一下原子性操作的解释:原子性要有互斥性,既:同一时刻只能有一个线程进行操作。1、synchronized 关键字(同步锁),由JVM 管理以及实现 a) 在这个关键字作用对象的对象范围内,多个线程操作是原子性的。(注意:是作用对象的作用范围内) b) 关键字常见使用方式 b.1 修饰代码块,作用于调用对象,被修饰的代码块同一个对象同一时刻只能有一...原创 2018-04-18 14:32:19 · 253 阅读 · 0 评论 -
记录一下 dubbo 并发性能调优
参考资料:https://blog.youkuaiyun.com/u013355797/article/details/80318309https://dubbo.apache.org/zh-cn/docs/user/references/xml/dubbo-protocol.html最近项目在使用dubbo 上遇到了性能问题1、业务场景每天早上6点A服务会并发(300 ~ 600)请求B服务获取下单...原创 2019-05-10 17:43:36 · 8676 阅读 · 4 评论