高并发场景下,有哪些减少卡顿的优化方案?
回答·26
最热
最新
- 1-判断优先返回原则,是最有效的,有些条件不符合的,直接 return 减少代码执行,自然效率就高了 2-减少一些 db 操作,尽量使用缓存机制(本地缓存),可以减少 jdbc 操作,线程处理也执行效率高效 3-增加一些机器资源,虚拟机可以有条件完成调优 -Xms Xmx 等(堆的内存大了,多线程对象自然可以大量提升) 4-根据业务场景,你甚至可以把事物忽视(毕竟事物也是吃损耗时间) 5-合理管理的创建线程,不要用游离线程(比如 new thread) 因为这样利用价值不高,就算机器资源强悍,也会因为线程生命周期管理不当,导致性能下降 6-减少锁的捆绑,线程安全,最吃锁开销,有些地方可以不用锁,就不要用,否则造成任务堵塞,服务器也会宕机 7-合理的丢弃机制,有一些逻辑代码执行太长,可以适当丢弃,而不是一直等着,也会造成任务堵塞 8-你猜……
- 操作系统层面 线程 go 协程 jvm 层面 减少 gc 频率 调优 tomcat 层面 调优 接口层面 使用合理的数据库 es mongo es 等 减少数据库慢查询 根据业务使用合理的缓存设计架构 异步 比如一些接口无关业务 可以异步调用 一些接口无需串行 可以并发 future 上 mq 使用高性能的 rpc 比如 dubbo 等
- 这个是因问题而异,1.代码层面,优雅精简,优先返回策略,有一些费时间的可以异步执行,2.数据库层面 sql 优化 3.缓存层面,适当的增加缓存,提高吞吐量,提高响应速度。4.JVM 层面,减少 Full GC 的次数,假如 Full GC 了,需要根据对应的服务器配置大小,进行优化垃圾回收器。5.服务器层面,多节点配置,避免因为响应速度缓慢导致服务挂掉。6.硬件层面,提高配置。
- 静态化,缓存,jvm 调优,sql 优化,网络带宽,至于代码只要不是特别复杂问题不会很大,主要还是接口之间的访问速度要搞上去!!!
- 1-预判并识别可能出现的卡顿原因 2-如果是 CPU 内存等硬件资源,需考虑分布式处理(超过处理能力了,自然就要考虑并行化分流) 3-如果是磁盘 io 资源,考虑使用缓存 4-如果争抢的是其他关键资源,应做好关键资源的线程同步,并尽量减少锁定资源的时间 5-尽可能增加关键资源,提高并发量
- 多搞几台服务器 什么都不是问题
- 提升性能一般有三个方向, 1、从业务上分析入手,优化结构设计,分摊资源占用,避免特殊场景引起的问题。 2、优化程序。 3、硬件扩容。
- 减少计算,减少通讯环节,减少公共资源占用,减少网络流量,增加异步,增加排队机制。
- Jvm 层面就是减少 full gc 代码层面就是根据环境来设置并发线程的数量,优化代码质量,计算复杂度的减少,缓存的合理使用。 Db 层面就是 sql 本身优化,减少笛卡尔乘积的出现。首先最大范围过滤选择。
- 增加集群节点数,网关拦截过滤,服务端缓存,代码优化,数据库读写分离及分库分表,jvm 调优,可以的话,硬件资源如增加 cpu 核心数、内存容量、增加带宽等。