Nginx에와 바람둥이 통합
수입에 대한 프로젝트
1.nginx 장점 및 특징
의 nginx는 고성능 HTTP 서버와 리버스 프록시뿐만 아니라 IMAP / POP3 / SMTP 프록시 서버입니다. 그것은 주로 다음과 같은 장점이 있습니다
- 高并发连接:
官方测试能够支撑5万并发连接,在实际生产环境中跑到2~3万并发连接数。
- 内存消耗少:
在3万并发连接下,开启的10个Nginx 进程才消耗150M内(15M*10=150M)。
- 配置文件非常简单:
风格跟程序一样通俗易懂。
- 成本低廉:
Nginx为开源软件,可以免费使用。而购买F5 BIG-IP、NetScaler等硬件负载均衡交换机则需要十多万至几十万人民币。
- 支持Rewrite重写规则:
能够根据域名、URL的不同,将 HTTP 请求分到不同的后端服务器群组。
- 内置的健康检查功能:
如果 Nginx Proxy 后端的某台 Web 服务器宕机了,不会影响前端访问。
- 节省带宽:
支持 GZIP 压缩,可以添加浏览器本地缓存的 Header 头。
- 稳定性高:
用于反向代理,宕机的概率微乎其微
좋은 성능의 nginx에, 많은 국내 대형 기업이 사용중인 인해 주된 이유는 Nginx에있는 오픈 소스 무료입니다. 일련의 기능에 더하여 상술에서, 프로젝트는 주로 다음 세 가지 기능을 달성하기 위해 Nginx에 사용된다 :
- 动静分离
- 反向代理
- 负载均衡
- 网页、图片缓存
다섯 개 가지 주요 전략이있다 밸런싱 1.2의 nginx로드
- 轮询(默认)
每个请求按时间顺序逐一分配到不同的后端服务器,如果后端服务器down掉,能自动剔除。
- weight
指定轮询几率,weight和访问比率成正比,用于后端服务器性能不均的情况。
- ip_hash
每个请求按访问ip的hash结果分配,这样每个访客固定访问一个后端服务器,可以解决session的问题。
- fair(第三方)
按后端服务器的响应时间来分配请求,响应时间短的优先分配。
- url_hash(第三方)
按访问url的hash结果来分配请求,使每个url定向到同一个后端服务器,后端服务器为缓存时比较有效。
둘째, Nginx에 설치
yum -y install gcc gcc-c++ pcre-devel openssl-devel openssl wget
wget http://nginx.org/download/nginx-1.12.2.tar.gz
tar -zxvf nginx-1.12.2.tar.gz
cd nginx-1.12.2
./configure --prefix=/usr/local/nginx
make
make install
셋째, 설치 톰캣
3.1 설치 및 테스트 환경 JDK
[root@ c6s02 ~]# tail -5 /etc/profile
####java_env####
export JAVA_HOME=/usr/local/jdk1.8.0_60
export PATH=$JAVA_HOME/bin:$JAVA_HOME/jre/bin:$PATH
export CLASSPATH=.$CLASSPATH:$JAVA_HOME/lib:$JAVA_HOME/jre/lib:$JAVA_HOME/lib/tools.jar
source /etc/profile
[root@ c6s02 ~]# java -version
java version "1.8.0_60"
Java(TM) SE Runtime Environment (build 1.8.0_60-b27)
Java HotSpot(TM) 64-Bit Server VM (build 25.60-b23, mixed mode)
설치 3.2 (두 개의 노드) 톰캣
tar -zxvf apache-tomcat-7.0.47.tar.gz
#新建tomcat01项目
mkdir -p /opt/tomcat01
cp -a apache-tomcat-7.0.47/* /opt/tomcat01/
#新建tomcat02项目,并修改三处端口为18005,18080,18009
mkdir -p /opt/tomcat021
cp -a apache-tomcat-7.0.47/* /opt/tomcat02/
수동 테스트 페이지 및 테스트를 작성
echo 'this is tomcat01' >/opt/tomcat01/webapps/ROOT/index.jsp
echo 'this is tomcat02' >/opt/tomcat02/webapps/ROOT/index.jsp
curl 10.0.0.22:8080/index.jsp
curl 10.0.0.22:18080/index.jsp
톰캣과의 Nginx의 조합을 통해 넷째,
의 nginx 설정 파일을 설치하고 Nignx 수정
vim /usr/local/nginx/conf/nginx.conf
는 HTTP 모듈을 추가합니다 :
upstream tomcat { #定义服务器组tomcat
server 10.0.0.22:8080; #定义后Tomcat端服务器
server 10.0.0.22:18080;
}
서버 모듈에 추가합니다 :
location ~ \.jsp$ { #URL正则匹配,匹配jsp结尾的所有URL
proxy_pass http://tomcat; #proxy_pass反向代理参数,将匹配到的请求反向代理到tomcat服务器组!
}
시작의 nginx 및 테스트
/usr/local/nginx/sbin/nginx -t
/usr/local/nginx/sbin/nginx -s stop
/usr/local/nginx/sbin/nginx
5, 톰캣 성능 최적화
5.1 톰캣 메모리 최적화
리눅스 수정 TOMCAT_HOME / 빈 / catalina.sh는 앞에 추가
JAVA_OPTS=" -server -Xms512m -Xmx512m -XX:PermSize=128mM -XX:MaxPermSize=1024m"
-server : 수 있는지 첫 번째 매개 변수로, 좋은 성능을 때 CPU의 복수
-Xms : 힙 초기 힙 크기, 최소 메모리 사용량은 CPU의 고성능 값으로 설정해야 더 큰
-Xmx : 자바 힙 최대, JVM에서 사용되는 상기 두 값의 최대 메모리 할당 권고 물리적 메모리의 절반으로 설정되어, 실제 메모리의 크기에 따라, 최소 및 최대 메모리, 하드웨어이다.
-XX : PermSize : 설정 메모리 영구 보존 영역
-XX :를 MaxPermSize : 영구 보존 영역의 최대 메모리 설정
5.2 바람둥이 스레드 최적화
목적 : 동시성을 개선하기 위해
구성 server.xml 파일 바람둥이 수정
<Connector port="80" protocol="HTTP/1.1" maxThreads="600" minSpareThreads="100" maxSpareThreads="500" acceptCount="700"
connectionTimeout="20000" redirectPort="8443" />
maxThreads = 스레드의 "600"# 최대 번호
minSpareThreads = 생성 된 스레드의 수 때 "100"# 초기화
maxSpareThreads = 당신이 더 많은이 값보다 스레드를 생성하면 "500"#, Tomcat이 소켓 스레드가 더 이상 필요 종료하지 않습니다.
acceptCount = 모든 요청은 스레드의 수는 요청의 수는 큐 처리에 배치 될 수 있고, 사용하여 처리 할 수있는 경우 상기 요청의 수를 처리되지보다보다 지정 "700"#
5.3 세션 만료 시간 설정
의 conf \ web.xml을 매개 변수로 지정된 :
<session-config>
<session-timeout>180</session-timeout>
</session-config>
분합니다.