JAVA中怎么处理高并发的情况?

中超00
JAVA中怎么处理高并发的情况?
导读:JAVA中怎么处理高并发的情况一、背景综述并发就是可以使用多个线程或进程,同时处理(就是并发)不同的操作。高并发的时候就是有很多用户在访问,导致系统数据不正确、糗事数据的现象。对于一些大型网站,比如门户网站,在面对大量用户访问、高并发请求方

JAVA中怎么处理高并发的情况

一、背景综述

并发就是可以使用多个线程或进程,同时处理(就是并发)不同的操作。

高并发的时候就是有很多用户在访问,导致系统数据不正确、糗事数据的现象。对于一些大型网站,比如门户网站,在面对大量用户访问、高并发请求方面,基本的解决方案集中在这样几个环节:使用高性能的服务器、高性能的数据库、高效率的编程语言、还有高性能的Web容器。这几个解决思路在一定程度上意味着更大的投入。

使用一般的synchronized或者是lock或者是队列都是无法满足高并发的问题。

二、解决 *** 有三:

1使用缓存

2使用生成静态页面

html纯静态页面是效率更高、消耗最小的页面。我们可以使用信息发布系统来实现简单的信息录入自动生成静态页面,频道管理、权限管理和自动抓取等功能,对于一个大型网站来说,拥有一套高效、可管理的信息发布系统CMS是必不可少的。

3服务器分离

是最消耗资源的,僵和页面分离可以降低提供页面访问请求的服务器系统压力,并且可以保证系统不会因为问题而崩溃。

3写代码的时候减少不必要的资源浪费:

不要频繁得使用new对象,对于在整个应用中只需要存在一个实例的类使用单例模式对于String的连接操作,使用StringBuffer或者StringBuilder对于utility类型的类通过静态 *** 来访问。

避免使用错误的方式,如Exception可以控制 *** 推出,但是Exception要保留stacktrace消耗性能,除非必要不要使用 instanceof做条件判断,尽量使用比的条件判断方式使用JAVA中效率高的类,比如ArrayList比Vector性能好。)

使用线程安全的 *** 对象vector hashtable

使用线程池

*** 1

1jps 获取Java进程的PID。

2jstack pid >> javatxt 导出CPU占用高进程的线程栈。

3top -H -p PID 查看对应进程的哪个线程占用CPU过高。

4echo “obase=16; PID” | bc 将线程的PID转换为16进制,大写转换为小写。

5在第二步导出的Javatxt中查找转换成为16进制的线程PID。找到对应的线程栈。

6分析负载高的线程栈都是什么业务操作。优化程序并处理问题。

*** 2

1使用top 定位到占用CPU高的进程PID

top

通过ps aux | grep PID命令

2获取线程信息,并找到占用CPU高的线程

ps -mp pid -o THREAD,tid,time | sort -rn

3将需要的线程ID转换为16进制格式

printf "%x\n" tid

4打印线程的堆栈信息

jstack pid |grep tid -A 30

1、配置DNS解析:将多个域名指向同一个服务器的IP地址。可以通过域名注册商或者DNS服务提供商进行配置。

2、配置Web服务器:在Web服务器上配置多个虚拟主机,每个虚拟主机对应一个域名。

3、配置CMS:在CMS系统中,根据域名的不同,为每个虚拟主机创建对应的站点配置。这样,每个域名就可以访问到不同的站点内容。

4、处理URL路由:根据不同的域名,CMS系统可以通过URL路由机制,将请求分发到对应的站点处理。