这段时间项目中要整体改版,其中服务器架构从单机部署改为分布式集群部署(其实就是多了两台tomcat而已),其中遇到的坑很多,自己也是第一次尝试搭建没什么经验,一遍BD一遍自己尝试,现在终于初见眉目 ,压力测试也渐渐提升档次了,赶紧抽空记录一下:
其实我们的环境很简单,两台服务器部署4个tomcat节点,负载采用nginx进行负载均衡:
下面是简单的配置:192.168.1.11,12机器上分别启动端口为8881和8882的两个节点
在http中配置upstream
# 集群中的所有后台服务器的配置信息
upstream tomcats {
server 192.168.1.11:8881 weight=10;
server 192.168.1.11:8882 weight=10;
server 192.168.1.12:8881 weight=10;
server 192.168.1.12:8882 weight=10;
}
在nginx 配置的server中配置
location / {
#proxy_redirect on;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_pass http://tomcats;
}
}
这样使用nginx进行负载均衡 ,nginx负载均衡部署很简单 网上有很多好的帖子可以参考
环境搭建完之后测试开始进行压力测试,一开始3000/s并发成功率不足五成,没办法继续找可优化点,最后锁定tomcat优化配置
从apache官网搜索加上网上帖子的查阅最后决定connectors使用apr 这种运行模式来运行Tomact,
于是百度帖子来进行部署(参考原帖:http://blog.csdn.net/super_marioli/article/details/27240639) 进行部署安装
官网http://apr.apache.org/下载
apr-1.4.2.tar.gz
apr-iconv-1.2.1.tar.gz
apr-util-1.3.10.tar.gz
和tomcat-native-1.1.34-src.tar.gz
安装过程很简单(我也是从网上找来的)
1)安装apr
tar zxvf apr-1.4.2.tar
cd apr-1.4.2
./configure --prefix=/usr/local/apr
make
make install
2)安装apr-iconv
程序代码
tar -zxvf apr-iconv-1.2.1.tar.gz
cd apr-iconv-1.2.1
./configure --prefix=/usr/local/apr-iconv --with-apr=/usr/local/apr
make
make install
3)安装apr-util
程序代码
tar zxvf apr-util-1.3.10.tar.gz
cd apr-util-1.3.10
./configure --prefix=/usr/local/apr-util --with-apr=/usr/local/apr --with-apr-iconv=/usr/local/apr-iconv/bin/apriconv
make
make install
4)安装tomcat-native
程序代码
tar zxvf tomcat-native-1.1.20-src.tar.gz
cd tomcat-native-1.1.20-src/jni/native
./configure --with-apr=/usr/local/apr --with-java-home=/usr/local/jdk1.8.0_51
make
make install
5)添加环境变量
vi /etc/profile #在他文件末尾处添加下面的变量
# apr
export LD_LIBRARY_PATH=/usr/local/apr/lib
执行
source /etc/profile
此时环境变量生效果
安装完毕之后 配置tomcat /conf/server.xml 的connector
<Connector port="8881" protocol="org.apache.coyote.http11.Http11AprProtocol"
connectionTimeout="30000"
redirectPort="8443"
maxThreads="5000"
minSpareThreads="1000"
maxSpareThreads="5000"
acceptCount="2500"
enableLookups="false" />
之后启动tomcat,最后看到04-Mar-2016 19:33:30.798 INFO [main] org.apache.catalina.core.AprLifecycleListener.lifecycleEvent Loaded APR based Apache Tomcat Native library 1.1.34 using APR version 1.5.2.
说明加载成功了,据官网描述apr的运行模式比其他的nio模式性能还高,
部署成功之后 重新启动测试 OK了
》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》
期间遇到很多不是很懂的问题 比如请求并发太多 造成Linux文件句柄不足以及其他一些原因导致请求被拒绝或者被重置等情况;
Linux文件句柄的问题 最终配置:/etc/sysctl.conf
fs.file-max = 6553560
/etc/security/limits.conf
soft nofile 655350
hard nofile 655350
ulimit -n 655350
/***************************/
ulimit -Hn 655350
ulimit -Sn 655350