发表于: 2020-06-01 23:20:50

1 1554


今天完成的事情:今天完成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)中,配置路径

<web-app id="/springmvc" document—directory="/software/jnshu/SpringMVC" archive-path="/software/jnshu/SpringMVC.war"/>

加红的是待会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 - 请求的方法(GETPOST等)
%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天],
       user[个用户当前登录],
load average: 0.00, 0.00, 0.00[系统负载,即任务队列的平均长度]
Tasks: total[总进程数],
       0 running[正在运行的进程数],
       sleeping[睡眠的进程数],
       stopped[停止的进程数],
       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: 1019852total[物理内存总量],
       950468used[使用的物理内存总量],
        69384free[空闲内存总量],
        103792buffers[用作内核缓存的内存量]
Swap: 0total[交换区总量],
       0used[使用的交换区总量],
       0free[空闲交换区总量],
        182300cached[缓冲的交换区总量],

进程信息区(横圈的部分)

统计信息区域的下方显示了各个进程的详细信息。首先来认识一下各列的含义。

序号列名含义
aPID进程id
bPPID父进程id
cRUSERReal user name
dUID进程所有者的用户id
eUSER进程所有者的用户名
fGROUP进程所有者的组名
gTTY启动进程的终端名。不是从终端启动的进程则显示为 ?
hPR优先级
iNInice值。负值表示高优先级,正值表示低优先级
jP最后使用的CPU,仅在多CPU环境下有意义
k%CPU上次更新到现在的CPU时间占用百分比
lTIME进程使用的CPU时间总计,单位秒
mTIME+进程使用的CPU时间总计,单位1/100秒
n%MEM进程使用的物理内存百分比
oVIRT进程使用的虚拟内存总量,单位kb。VIRT=SWAP+RES
pSWAP进程使用的虚拟内存中,被换出的大小,单位kb。
qRES进程使用的、未被换出的物理内存大小,单位kb。RES=CODE+DATA
rCODE可执行代码占用的物理内存大小,单位kb
sDATA可执行代码以外的部分(数据段+栈)占用的物理内存大小,单位kb
tSHR共享内存大小,单位kb
unFLT页面错误次数
vnDRT最后一次写入到现在,被修改过的页面数。
wS进程状态。
D=不可中断的睡眠状态
R=运行
S=睡眠
T=跟踪/停止
Z=僵尸进程
xCOMMAND命令名/命令行
yWCHAN若该进程在睡眠,则显示睡眠中的系统函数名
zFlags任务标志,参考 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


返回列表 返回列表
评论

    分享到