jetty官网:http://www.eclipse.org/jetty/
具体配置流程如下1, 2:
1. Nginx 添加监听域名和路由端口.
#当前应用的可用流(可无限添加)
upstream pisaTbt0 {
server 10.221.12.182:8051 weight=1;
server 10.221.12.182:8052 weight=1;
keepalive 256;
}
upstream pisaTbt1 {
server 10.221.12.182:8061 weight=1;
server 10.221.12.182:8062 weight=1;
keepalive 256;
}
#监听域名,此处可配置监听多个端口
server {
listen 80;
server_name 203.195.182.194;
location ^~ /pisa-tbt/ {
proxy_pass http://pisaTbt0;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
}
}
server {
listen 8080;
server_name 203.195.182.194;
location ^~ /pisa-tbt/ {
proxy_pass http://pisaTbt1;
proxy_set_header Host $host:8080;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
}
}
2. 配置和启动Jetty独立服务
1) 拷贝davinciDev或WukongDev为自己的应用目录(除了配置文件和日志目录其余全部为软连接, 不用担心版本问题)
3) 进入{Jetty目录}/standalone/{自己的应用地址}
4) 修改server.conf, 指定当前服务的两个端口号, 和上方的Nginx流内的端口号对应.
5) 修改etc/jetty-http.xml中的jetty.host为要启动的host
6) 执行 server.sh start 启动服务, 启动后将自动在两个端口号内选择一个执行.
7) 如果需要热重启服务时则执行 server.sh switch 进行切换, 脚本会启动新服务并保证可用的情况下关闭老服务. Nginx则会自动路由请求到新服务.
注:单独启动方式
/opt/local/jetty/bin/jetty.sh start >/tmp/test.log 2>&1 &
Jetty独立服务介绍:
目录结构:
./data 存储PID和启动进度信息.
./etc 应用目录配置, 启动监听配置.(设置项会自动配置, 所以无需更改),此目录中主要包括jetty-deploy.xml和jetty-started.xml,这两个文件会替代全局配置
./log jetty的启动日志(针对当前独立应用)
./server.conf 启动端口号配置
./server.sh 独立服务执行脚本(包括三个命令, server.sh start:启动服务, server.sh stop:关闭服务, server.sh switch:切换服务)
./webapps 应用存放位置
jetty war包解压设置
自定义的解压路径设置比较复杂,最简的就是在jetty根目录下增加一work目录,jetty就会把war包解压路径放在work下面
jetty根目录下的start.ini可以配置jvm的一些参数,简要示例如下,jdk1.7在末尾添加以下参数:
--exec
-Xmx4096m
-Xms4096m
-Xmn1536m
-XX:PermSize=512m
-XX:MaxPermSize=512m
-XX:MaxTenuringThreshold=7
-XX:GCTimeRatio=19
-XX:+UseConcMarkSweepGC
-XX:ParallelGCThreads=8
-XX:+CMSClassUnloadingEnabled
-XX:+UseCMSCompactAtFullCollection
-XX:CMSFullGCsBeforeCompaction=5
-XX:-CMSParallelRemarkEnabled
-XX:+DisableExplicitGC
-XX:CMSInitiatingOccupancyFraction=40
-XX:SoftRefLRUPolicyMSPerMB=0
-XX:+PrintGCDateStamps
-XX:+PrintGCDetails
-Xloggc:logs/gc.log
jetty根目录下的start.d下的http.ini可以配置使用start.jar启动时使用的端口,此处如果使用了第二步standalone方式的启动形式,则最好把jetty.port注掉,否则有可能会有冲突
etc/jetty-http.xml可配置jetty总的监听端口
jdk1.8 G1示例参数
--exec
-Xmx1024m
-Xms1024m
-Xmn256m
-XX:CompressedClassSpaceSize=128m
-XX:MaxMetaspaceSize=128m
-XX:MaxDirectMemorySize=128m
-XX:+UseG1GC
-XX:MaxGCPauseMillis=100
-XX:InitiatingHeapOccupancyPercent=45
-XX:MaxTenuringThreshold=4
-XX:GCTimeRatio=19
-XX:ParallelGCThreads=5
-XX:+DisableExplicitGC
-XX:SoftRefLRUPolicyMSPerMB=0
-XX:+PrintGCDateStamps
-XX:+PrintGCDetails
-Xloggc:logs/gc.log
-XX:-HeapDumpOnOutOfMemoryError
-XX:HeapDumpPath=logs/oom_dump.log