发表于: 2020-06-01 23:20:50
1 1553
今天完成的事情:今天完成jetty,resin,tomcat,各自配置,进行对比,查看并修改日志,kill命令,top,cat等命令循环运用
明天计划的事情:明天上午应该要做编写自动化部署脚本,rsin内存优化,以及service生成数据,测试是否返回成功和上传到git,最后下午要搞一搞Nginx.
遇到的问题:暂无
收获:
运用师兄的提示的方法上传文件
1.先进入你要上传文件的目录下,用rz,查看有没有安装lrzsz,第一次使用,一般都没有
2.然后直接yum -y install lrzsz 安装就能用了
3.从新rz,就弹出上传窗口
resin的安装部署
参考的周师兄的日报,写的很详细http://www.jnshu.com/daily/109933?total=42&page=29&uid=9152&sort=0&orderBy=3
1.官网https://caucho.com/products/resin/download下载需要的安装包,我下载的pro,上传到自己指定的文件夹
resin 普通版本和pro版本主要区别是 pro支持缓存和负载均衡。pro因为有强大的cache功能,独立作为web服务器处理静态页面性能都可以和apache有一比。但普通版本独立作为web服务器性能就要差一些。
2.解压安装包,我喜欢重命名短一点文件名,然后删除压缩包(加-rf后缀表示强制删除,-f是表示省去后面yes),服务器内存比较小,能腾一点是一点。
tar -zxvf resin-4.0.59.tar.gz
mv resin-4.0.59.tar.gz resin
rm resin-4.0.59.tar.gz -rf
配置安装路径和 JDK 路径:./configure --prefix=/usr/local/resin --with-java=/usr/local/jdk1.8.0_201
编译并安装 make&make install
3.如果需要修改端口就修改,可选的 ,进入resin安装目录的conf下打开resin.properties
修改app.http :8080 为 app.http :8088
4.准备启动,启动文件在/etc/init.d/resin
进入目录启动:cd /etc/init.d
浏览器输入
5.部署应用,在服务器开发环境部署Resin,用"document-directory"的方式配置好War包
我把打包好的war包放在你想放的位置,我放在 /software/jnshu
然后在resin的conf文件夹下的resin.conf(4.0版本是resin.xml)中,配置路径
加红的是待会url的前缀
前面那个是运行项目后自动生成的目录
6. resin关闭
可以用kill,也可以
tomcat自己一直在用,就不贴步骤了
tomcat,resin,jetty三者之间的比较
来自师兄小课堂https://blog.csdn.net/jnshu_it/article/details/85991099
1.各自的简介
1)tomcat是Apache的Jakarta 项目中的一个核心项目,由Apache,Sun等其他公司及个人开发,因为有sun公司参与,所以最新的Servlet 和JSP 规范总是能在Tomcat 中得到体现,当下比较流行的Web应用服务器
2) Jetty 是一个开源的servlet容器,它为基于Java的web容器,例如JSP和servlet提供运行环境。Jetty是使用Java语言编写的,它的API以一组jar包的形式发布。开发人员可以将Jetty容器实例化成一个对象,可以迅速为一些独立运行(stand-alone)的Java应用提供网络和web连接.
3) Resin是一个非常流行的支持servlets和jsp的引擎,速度非常快的web服务器,Resin支持负载均衡(Load balancing),可以增加WEB站点的可靠性。
2.tomcat和jetty的区别
相同点:Tomcat和Jetty都是一种Servlet引擎,他们都支持标准的servlet规范和JavaEE的规范。
不同点:
(1)架构方面
Jetty架构更简单,是基于Handler来实现的,主要的扩展功能都可以用Handler来实现,扩展简单。
Tomcat的架构是基于容器设计的,进行扩展是需要了解Tomcat的整体设计结构,不易扩展。
(2)性能方面
Jetty和Tomcat性能方面差异不大
Jetty可以同时处理大量连接而且可以长时间保持连接,适合于web聊天应用等等。长连接。Jetty可以按需加载组件,减少不需要的组件,减少了服务器内存开销,从而提高服务器性能。默认采用NIO在处理I/O请求上更占优势,在处理静态资源时,性能较高
Tomcat适合处理少数非常繁忙的链接,也就是说链接生命周期短的话,Tomcat的总体性能更高。Tomcat默认采用BIO处理I/O请求,在处理静态资源时,性能较差。
(3)其它方面
Jetty的应用更加快速,修改简单,对新的Servlet规范的支持较好。
Tomcat目前应用比较广泛,对JavaEE和Servlet的支持更加全面,很多特性会直接集成进来。
Jetty更轻量级。Tomcat是较重量级的,扩展了大量J2EE特性以满足企业级应用的需求,而且配置较Jetty亦复杂许多。
但对于大量普通互联网应用而言,并不需要用到Tomcat其他高级特性,所以在这种情况下,使用Tomcat是很浪费资源的。这种劣势放在分布式环境下,更是明显。换成Jetty,每个应用服务器省下那几兆内存,对于大的分布式环境则是节省大量资源。而且,Jetty的轻量级也使其在处理高并发细粒度请求的场景下显得更快速高效。
Jetty更灵活,体现在其可插拔性和可扩展性,更易于开发者对Jetty本身进行二次开发,定制一个适合自身需求的Web Server。相比之下,重量级的Tomcat原本便支持过多特性,要对其瘦身的成本远大于丰富Jetty的成本。
然而,当支持大规模企业级应用时,Jetty也许便需要扩展,在这场景下Tomcat便是更优的。
3.tomcat和resin的区别
相同点
都是web服务器,并且支持集群部署。
不同点
(1)速度方面
resin的速度要比tomcat快
(2)机制方面
resin的启动与关闭机制以及报错机制都比tomcat好,tomcat则相对臃肿一些。
(3)开发环境热部署支持方面
tomcat较好,可根据需要配置。修改Jsp或java文件时,可配置是否重启服务。
resin较差,更新class及jsp文件,系统都会自动重新部署,并重启,配置了Session会话时开发比较麻烦。
(4)生产环境下热部署支持
tomcat一般。更新配置文件时,必须手动重启。更新其他文件时,大部分不用重启。但一次性更新太多文件时,经常会造成Tomcat重启失败。
resin较好。更新配置文件时,Resin会自动重启。
具体选择依具实际需要选择,Jetty更满足公有云的分布式环境的需求,而Tomcat更符合企业级环境。
配置Access.log日志
cd tomcat安装目录下conf 然后vim server.xml。
生成的日志在logs/localhost_access_log.txt
配合日志可以查看到系统性能,用户的信息等,可以进行相关维护和优化。
Pattern 属性的相关参数:
%a - 远程IP地址
%A - 本地IP地址
%b - 发送的字节数(Bytes sent), 不包括HTTP headers的字节,如果为0则展示'-'
%B - 发送的字节数(Bytes sent), 不包括HTTP headers的字节
%h - 远程主机名称(如果resolveHosts为false则展示IP)
%H - 请求协议
%l - 远程用户名,始终为'-'(Remote logical username from identd)
%m - 请求的方法(GET, POST等)
%p - 接受请求的本地端口
%q - 查询字符串,如果存在,有一个前置的'?'
%r - 请求的第一行(包括请求方法和请求的URI)
%s - response的HTTP状态码(200,404等)
%S - 用户的session ID
%t - 日期和时间,Common Log Format格式
%u - 被认证的远程用户, 不存在则展示'-'
%U - 请求URL路径
%v - 本地服务名
%D - 处理请求的时间,单位为毫秒
%T - 处理请求的时间,单位为秒
%I - 当前请求的线程名(can compare later with stacktraces)
top,kill,cat,tailf命令,查看进程号,端口号
1.top是用来监控Linux系统状况,比如cpu、内存的使用。
top 后可跟的选项 top -c
-b:以批处理模式操作;
-c:显示完整的治命令;
-d:屏幕刷新间隔时间;
-I:忽略失效过程;
-s:保密模式;
-S:累积模式;
-i<时间>:设置间隔时间;
-u<用户名>:指定用户名;
-p<进程号>:指定进程;
-n<次数>:循环显示的次数。
top的相关解释
top - 20:23:33[当前系统时间],
29 days[系统已经运行了16天],
4 user[个用户当前登录],
load average: 0.00, 0.00, 0.00[系统负载,即任务队列的平均长度]
Tasks: 1 total[总进程数],
0 running[正在运行的进程数],
1 sleeping[睡眠的进程数],
0 stopped[停止的进程数],
0 zombie[冻结进程数],
Cpu(s): 0.0%us[用户空间占用CPU百分比],
0.0%sy[内核空间占用CPU百分比],
0.0%ni[用户进程空间内改变过优先级的进程占用CPU百分比],
100.0%id[空闲CPU百分比], 0.0%wa[等待输入输出的CPU时间百分比],
0.0%hi[],
0.0%st[],
Mem: 1019852k total[物理内存总量],
950468k used[使用的物理内存总量],
69384k free[空闲内存总量],
103792k buffers[用作内核缓存的内存量]
Swap: 0k total[交换区总量],
0k used[使用的交换区总量],
0k free[空闲交换区总量],
182300k cached[缓冲的交换区总量],
进程信息区(横圈的部分)
统计信息区域的下方显示了各个进程的详细信息。首先来认识一下各列的含义。
序号 | 列名 | 含义 |
a | PID | 进程id |
b | PPID | 父进程id |
c | RUSER | Real user name |
d | UID | 进程所有者的用户id |
e | USER | 进程所有者的用户名 |
f | GROUP | 进程所有者的组名 |
g | TTY | 启动进程的终端名。不是从终端启动的进程则显示为 ? |
h | PR | 优先级 |
i | NI | nice值。负值表示高优先级,正值表示低优先级 |
j | P | 最后使用的CPU,仅在多CPU环境下有意义 |
k | %CPU | 上次更新到现在的CPU时间占用百分比 |
l | TIME | 进程使用的CPU时间总计,单位秒 |
m | TIME+ | 进程使用的CPU时间总计,单位1/100秒 |
n | %MEM | 进程使用的物理内存百分比 |
o | VIRT | 进程使用的虚拟内存总量,单位kb。VIRT=SWAP+RES |
p | SWAP | 进程使用的虚拟内存中,被换出的大小,单位kb。 |
q | RES | 进程使用的、未被换出的物理内存大小,单位kb。RES=CODE+DATA |
r | CODE | 可执行代码占用的物理内存大小,单位kb |
s | DATA | 可执行代码以外的部分(数据段+栈)占用的物理内存大小,单位kb |
t | SHR | 共享内存大小,单位kb |
u | nFLT | 页面错误次数 |
v | nDRT | 最后一次写入到现在,被修改过的页面数。 |
w | S | 进程状态。 D=不可中断的睡眠状态 R=运行 S=睡眠 T=跟踪/停止 Z=僵尸进程 |
x | COMMAND | 命令名/命令行 |
y | WCHAN | 若该进程在睡眠,则显示睡眠中的系统函数名 |
z | Flags | 任务标志,参考 sched.h |
默认情况下仅显示比较重要的 PID、USER、PR、NI、VIRT、RES、SHR、S、%CPU、%MEM、TIME+、COMMAND 列。可以通过下面的快捷键来更改显示内容。
kill掉java的进程,进程号21524
kill -9 21524
查看进程号,端口号
1.查看java对应的进程号,某个应用
ps aux | grep java

- 1
- 2
- 3
2.查看端口对应的进程号
lsof -i:9092
- 1
3.根据进程号查看对应的信息,比如端口啥的
netstat -anop | grep PID
tailf命令,我一般拿来查看tomcat启动日志,输出的就是平时在idea上启动的控制台信息
./startup.sh &tailf ../logs/catalina.out
评论