JAVA中高访问量高并发的问题怎么解决?
你指的高并发量大概有多少?
几点需要注意:
尽量使用缓存,包括用户缓存,信息缓存等,多花点内存来做缓存,可以大量减少与数据库的交互,提高性能。
用jprofiler等工具找出性能瓶颈,减少额外的开销。
优化数据库查询语句,减少直接使用hibernate等工具的直接生成语句(仅耗时较长的查询做优化)。
优化数据库结构,多做索引,提高查询效率。
统计的功能尽量做缓存,或按每天一统计或定时统计相关报表,避免需要时进行统计的功能。
能使用静态页面的地方尽量使用,减少容器的解析(尽量将动态内容生成静态html来显示)。
解决以上问题后,使用服务器集群来解决单台的瓶颈问题。
基本上以上述问题解决后,达到系统最优。
至于楼上有人提到别用JAVA来做,除非是低层的连接数过大(如大量的端口占用需求),这种情况下考虑直接C来写,其他的可以用JAVA来做。
synchronizedmap 一写一读
如果数据量达到10TB以上 那建议用 Hadoop 或 spark
这个问题问的太广了,
首先要了解高并发的的瓶颈在哪里?
1、可能是服务器网络带宽不够 2.可能web线程连接数不够 3.可能数据库连接查询上不去。
根据不同的情况,解决思路也不同。
像第一种情况可以增加网络带宽,DNS域名解析分发多台服务器。
负载均衡,前置代理服务器nginx、apache等等
数据库查询优化,读写分离,分表等等
还有其他多种,多学习学习!!!具体情况具体分析。 想要做到淘宝那样,每一个细节都要扣出来。想网页传输的内容压缩等等
java不适合做这种方面的工作,它在web上的用途更多是用来做行业性软件开发,对讲求效率方面的网站性工作不太适合。
如果非要用java做的话,一是调优,二是采用集群模式布署。三是写好网站的程序。4是不要做实时性要求比较高的工作,降低对严谨性方面的要求。
2:引入多线程Thread
3:多设临时状态(好控制)
4:详谈qq:863432026