频道栏目
首页 > 程序开发 > 综合编程 > 其他综合 > 正文
有效的高并发处理方式解析
2018-09-28 15:18:13      个评论      
收藏   我要投稿

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

1.安装redis

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

2.启动redis(redis相关命令:https://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

maxmemory 268435456

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

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

①注入redis封装好的类

@Autowired

private RedisTemplate redisTemplate;

②将数据放入缓存

ListOperations listOperations = redisTemplate.opsForList();

listOperations.rightPush("answerList", map);

③将数据整体取出

ListOperations listOperations = redisTemplate.opsForList(); List 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 https://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源码

tar -zxvf tomcat-native.tar.gz

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

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

make

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

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

cd /usr

mkdir java

cd java/

mkdir packages

cd packages/

mkdir lib

cd lib/

mkdir amd64

cd amd64/

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

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

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"

点击复制链接 与好友分享!回本站首页
上一篇:HTTP协议解析
下一篇:Http报头的Accept与Content-Type的区别
相关文章
图文推荐
点击排行

关于我们 | 联系我们 | 广告服务 | 投资合作 | 版权申明 | 在线帮助 | 网站地图 | 作品发布 | Vip技术培训 | 举报中心

版权所有: 红黑联盟--致力于做实用的IT技术学习网站