如何处理Java中的高并发问题

对于高并发问题,我认为总的来说可以分为三个方面:前端,服务器,数据库。

前端:web线程连接数不足

后台:服务器网络带宽不足

数据库:数据库连接查询速度上不去


针对于这三方面来说要各有针对性的优化方法

(对于高并发问题,只有不断优化,而不存在绝对的并发安全)

前端:实现负载均衡,配置前置代理服务器,如NGINX,Apache等;

后台:增加网络带宽,DNS域名解析分发多台服务器;

数据库:对数据处查询进行优化,实现读写分离


个人对处理高并发问题的一些理解:

对于处理高并发问题,顺序应该是 代码 > 软件 > 硬件 因为成本消耗是逐步提升的而且差距非常大,所以应该先从程序代码来优化在逐步考虑软件以及硬件。

下面具体来说一些高并发常需处理的问题:

代码方面(其实有很多细节可以做到优化代码,我只举几个例子)

比如 

不要频繁的new对象,对于整个应用中,只需存在一个实例的类要采用单例模式,不要用String 进行字符串连接,而使用StringBuffer或StringBuilder;

尽管Exception可以控制方法的退出,但Exception要保留stacktrace消耗性能;

尽量少使用instanceof作为条件判断,尽量使用‘比’作为条件;

在使用类的时候尽量选取效率高的类,比如ArrayList就比Vector要好。

尽量多使用缓存机制,多花点内存做缓存可以大量减少与数据库的交互提高性能;

前端使用静态页面,减少容器的解析;

优化数据库结构,多做索引提高效率;

统计功能尽量做缓存,每天定时统计相关的报表,避免必要时统计

………


硬件提升:搭建服务器集群,数据库集群,实现读写分离等等


正如短板决定水桶的盛水量,我们应该知道并发瓶颈到底出现在哪一方面,才能做出针对行的优化,所以我们可以利用一些类似于jprofiler工具来找出并发瓶颈再进行处理


  • 3
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值