tomcat是什么:java开发的开源服务器
处理动态页面,静态页面处理能力一般
jvm参数优化
配置添加 在119行之前
以2cpu 4G内存为例
JAVA_OPTS="$JAVA_OPTS -server -Xms2048m -Xmx2048m -Xmn768m -XX:ParallelGCThreads=2 -XX:PermSize=1024m -XX:MaxPermSize=1024m -Djava.awt.headless=true -XX:+DisableExplicitGC"
cygwin=false之前
-server 一定要作为第一个参数,再多个cpu时使用
-Xmx 堆内存的最大大小
-Xms 内存初始大小
-Xmx -Xms最好相等且等于内存的一半,避免回校后机制后重新整理堆
-Xmn新创建的对象给的内存空间
-xx:premSizea:非堆内存初始值
-xx:maxPermSize:非堆的最大
伸缩堆带来的大小
-xx:parallelGCThreads:设置并行垃圾收集器的线程数最好等于cpu数
-xx:premSizea -xx:maxPermSize:最好设置相且等于物理内存的四分之一
-Djava.awt.headless=true 避免再linux/unix环境下web网页不能正常显示图片
-XX:+DisableExplicitGC 关闭系统级别的垃圾回收机制,以防大起打落导致响应变慢
两个tomcat实例
Nginx+Tomcat负载均衡,动j静分离群集
nginx负载均衡是通过反向代理实现的
upstream
proxy_pass转发http://服务名称
location匹配请求通过 http反向代理转发给后台
nginx配置
#定义tomcat服务器组集群
weight权重,默认为1proxy_pass http://
优化,图片内容保存
负载均衡模式:
rr模式轮询
每个请求按时间顺序逐一分配到不同的后端服务器,超过最大失败次数后(max_files默认为1)后端服务器死机,自动剔除故障,时访问不受影响
least_conn最少连接
优先将客户机请求调度到当前连接最少的服务器
ip_hash
每个球球按IP的hash结果分配会话断开保持
每个顾客固定一个服务器session共享问题可用后端的session共享同步
fair 第三方负载
按照后端服务器的响应时间进行分配,响应时间段的优先分配
url_hash(第三方)
根据用户请求的u人来做hash,对每个url的hash结果分配
反向代理两种模式
七层转发
http{
stream{
upstream 服务器组名称{
server IP1:PORT 【weight=1 ...】 ;
server ip2: PORT;
. . . . .
调度算法(rr轮询/加权轮询/least_conn最小链接,ip_hash,url_hash,fair/)
server {
location ~ . . . {
proxy_pass http://tomcat_server;
proxy set header HosT $host;
proxy set header X-Real-Ip $remote addr;
proxy set header X-Forwarded-For $proxy_add_x_forwarded_for;
}
}
}
四层反向代理:配置--with-stream 模块
http模块添加同一级的stream块(一般配置在http块上面)
proxy_pass
关闭长连接keeptimeout=0四层代理
tomcat的长连接
四层反向代理
stream {
upstream 服务器组名称 {
server ip1:PORT ;
server ip2: PORT;
server ip3:PORT;
. . . . .
}
}
server {
listen 监听端口;
server_name 网站主机名;
proxy_ pass 服务器组名称
}
}
总结nginx支持哪些类型的反向代理
基于七层的http/https/mail等应用协议的代理
基于四层的ip+tcp或udp端口的代理
例题
三台nginx需要重新编译,添加 --with-stream 编译安装
到源安装的nginx目录下
./configure --prefix=/usr/local/nginx --user=nginx --group=nginx --with-file-aio --with-http_stub_status_module --with-http_gzip_static_module --with-http_flv_module --with-stream
make
然后把 新的objs目录下的nginx复制usr/local/nginx/sbin/下的ningx
nginx -V查看是否加载模块成功
四层反向代理的nginx配置
http {
include mime.types;
default_type application/octet-stream;
#log_format main '$remote_addr - $remote_user [$time_local] "$request" '
# '$status $body_bytes_sent "$http_referer" '
# '"$http_user_agent" "$http_x_forwarded_for"';
#access_log logs/access.log main;
sendfile on;
#tcp_nopush on;
keepalive_timeout 0;
# keepalive_timeout 65;
#gzip on;
upstream tomcat_server {
server 192.168.232.33:8080;
server 192.168.232.105:8080;
}
server
{
listen 81;
server_name localhost;
#charset koi8-r;
如果使用80端口,需要将下面localhost端口改为80之外的端口,这里设为81.
七层反向代理的配置
upstream tomcat_server {
server 192.168.232.33:8080;
server 192.168.232.105:8080;
}
在tomcat中创建动态网页 :
cd /usr/local/tomcat/webapps/
vim index.jsp
<%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%>
<html>
<head>
<title>JSP test1 page</title>
</head>
<body>
<% out.println("动态页面 1,http://www.test1.com");%>
</body>
</html>
在nginx中创建静态网页:
cd /usr/share/nginx/html
vim index.html
<html>
<body>
<h1>this is nginx1 test web!</h1>
</body>
</html>
动态页面一定要在webapps下建立test要不会跳到tomcat默认页面
测试