一、添加缓存机制(redis消息队列)
1.安装redis
下载地址:https://redis.io/download
2.启动redis(redis相关命令:http://doc.redisfans.com/)
Linux: 进入redis根目录,执行命令:
#加上‘&’号使redis以后台程序方式运行
1 |
|
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源码包
-
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
<Listener className="org.apache.catalina.core.AprLifecycleListener" SSLEngine="on" />
是由于操作系统未安装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"
<Connector port="8080" protocol="org.apache.coyote.http11.Http11AprProtocol"
connectionTimeout="20000"
redirectPort="8443" />