有效的高并发处理方式

 

一、添加缓存机制(redis消息队列)

1.安装redis

下载地址:https://redis.io/download

2.启动redis(redis相关命令:http://doc.redisfans.com/

Linux: 进入redis根目录,执行命令:
  #加上‘&’号使redis以后台程序方式运行

1

./redis-server &

 

windows:从cmd进入redis本地目录后开启服务:

 

redis-server.exe redis.conf

3.配置redis最大空间

打开redis配置文件,找到如下段落,设置maxmemory参数,maxmemory是bytes字节类型,注意转换。修改如下所示:

1

2

3

4

5

6

# In short... if you have slaves attached it is suggested that you set a lower

# limit for maxmemory so that there is some free RAM on the system for slave

# output buffers (but this is not needed if the policy is 'noeviction').

#

# maxmemory <bytes>

maxmemory 268435456

本机服务器redis配置文件路径:/etc/redis/6379.conf,由于本机自带内存只有2G,一般推荐Redis设置内存为最大物理内存的四分之三,所以设置1.5G,换成byte是1503238552.

4.redis的存入、取出与删除

①注入redis封装好的类
@Autowired
private RedisTemplate redisTemplate;
②将数据放入缓存
ListOperations<String, Object> listOperations = redisTemplate.opsForList();
listOperations.rightPush("answerList", map);
③将数据整体取出 
ListOperations<String, String> listOperations = redisTemplate.opsForList(); List<String> answerList = listOperations.range("answerList", 0, -1);
④将数据全部删除
listOperations.trim("answerList", answerRecordEntity.size(),-1);
⑤将第一条数据删除
listOperations.trim("answerList", 0,1);

二、将页面静态化

  1.减少http请求

  2.使用http加速器

  3.动静分离

三、使用Ngnix负载均衡

   1.配置负载均衡

#这里的域名要和下面proxy_pass的一样

upstream fengzp.com {

server

192.168.99.100:42000 weight=1;

server 192.168.99.100:42001 weight=2;

}

server {

listen 80;

server_name 192.168.99.100;

location / {

proxy_pass http://fengzp.com;

proxy_redirect default;

}

error_page 500 502 503 504 /50x.html; location = /50x.html { root html; }

}

四、提高Tomcat性能

1.Tomcat Connector(连接器)有三种运行模式:bio nio apr

bio(blocking I/O)阻塞式I/O操作,表示Tomcat使用的是传统的Java I/O操作(即java.io包及其子包)。是基于JAVA的HTTP/1.1连接器,Tomcat7以下版本在默认情况下是以bio模式运行的。一般而言,bio模式是三种运行模式中性能最低的一种。我们可以通过Tomcat Manager来查看服务器的当前状态。(Tomcat7 或以下,在 Linux 系统中默认使用这种方式)

nio(new I/O)是Java SE 1.4及后续版本提供的一种新的I/O操作方式(即java.nio包及其子包)。Java nio是一个基于缓冲区、并能提供非阻塞I/O操作的Java API,因此nio也被看成是non-blocking I/O的缩写。它拥有比传统I/O操作(bio)更好的并发运行性能。要让Tomcat以nio模式来运行只需要在Tomcat安装目录/conf/server.xml 中将对应的中protocol的属性值改为 org.apache.coyote.http11.Http11NioProtocol即可;利用 Java 的异步请求 IO 处理,可以通过少量的线程处理大量的请求。(注意: Tomcat8 以上版本在 Linux 系统中,默认使用的就是NIO模式,不需要额外修改 ,Tomcat7必须修改Connector配置来启动)

apr(Apache Portable Runtime/Apache可移植运行时) ( 安装配置过程相对复杂)Tomcat将以JNI的形式调用Apache HTTP服务器的核心动态链接库来处理文件读取或网络传输操作,从而大大地提高Tomcat对静态文件的处理性能。Tomcat apr也是在Tomcat上运行高并发应用的首选模式。从操作系统级别来解决异步的IO问题

 

即高并发处理时应采用APR运行模式!!!!!

2.APR运行模式的启动

①安装apr

apr需要APR库和OpenSSL相关库。

yum install apr-devel openssl-devel

②安装native

进入Tomcat的bin目录,比如:

/opt/soft/tomcat_8180/bin ,解压native源码包

  1. tar -zxvf tomcat-native.tar.gz

  2. cd tomcat-native-1.1.32-src/jni/native

  3. ./configure--with-apr=/usr/bin/apr-1-config--with-java-home="/opt/soft/jdk1.8.0_60" --with-ssl=yes

  4. make

  5. make install 

native 会被安装到/usr/local/apr/lib(我们需要把/usr/local/apr/lib/ libtcnative-1.so.0.1.32指向Tomcat可识别路径。)

③配置apr包到Tomcat可识别的路径

15-Apr-2016 22:18:54.209 INFO [main] org.apache.catalina.core.AprLifecycleListener.lifecycleEvent

The APR based Apache Tomcat Native library which allows optimal performance in production environments was not found on the java.library.path: /usr/java/packages/lib/amd64:/usr/lib64:/lib64:/lib:/usr/lib

Tomcat8默认apr是开启的,配置在server.xml

<Listener className="org.apache.catalina.core.AprLifecycleListener" SSLEngine="on" />

是由于操作系统未安装apr或者apr路径未指到Tomcat默认可识别的路径,则apr模式无法启动,自动切换启动nio模式。

  1. cd /usr

  2. mkdir java

  3. cd java/

  4. mkdir packages

  5. cd packages/

  6. mkdir lib

  7. cd lib/

  8. mkdir amd64

  9. cd amd64/

把/usr/local/apr/lib/ libtcnative-1.so.0.1.32软链接到上面创建的目录。

  1. ln -s /usr/local/apr/lib/libtcnative-1.so.0.1.32 libtcnative-1.so

  2. ln -s /usr/local/apr/lib/libtcnative-1.so.0.1.32 libtcnative-1.so.0

④重新启动,即可将Tomcat以APR模式运行

3.配置server.xml

protocol="org.apache.coyote.http11.Http11NioProtocol"

<Connector port="8080" protocol="org.apache.coyote.http11.Http11AprProtocol"
connectionTimeout="20000"
redirectPort="8443" />

 

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值