发表于: 2019-12-16 23:23:09

1 1292


今天完成的事情:


1.tomcat部署war包


把war包放到web-apps下


尝试运行   出现错误

The JSP specification requires that an attribute name is preceded by whitespace,


但idea本地运行是没问题的


最后发现原因,在pageEncoding="GBK"前面少了一个空格

<%@ page language="java" contentType="text/html; charset=GBK"pageEncoding="GBK"%>


加个空格,问题解决



不过这个url是必须带项目名的,想要去掉项目名


我有尝试百度,搜到3种方法


1.  Tomcat9部署WAR包访问不带项目名的方式 (保留webapps)

https://blog.csdn.net/h363659487/article/details/80796946


server.xml下增加最后一行内容

我加了  但并没有任何用  


2. Tomcat9部署WAR包访问不带项目名的方式 (不保留webapps)

https://blog.csdn.net/u014622229/article/details/86304973


也没有任何用


3.终极解决方法

直接删除webapps文件下的 ROOT      把自己war解压完的文件改成ROOT


不过这不是最好的解决方法,但目前没找到其他的


2. jetty部署war包


放入war文件后   需要重启jetty



直接点项目名称就可以进去


也可以直接输入URL



参考:

https://blog.csdn.net/hanshangzhi/article/details/75452415




resin    jetty  tomcat  三者部署项目差别 


都是把war文件放到webapps文件夹
resin   需要修改配置文件   跳过项目名称
tomcat  也需要修改项目文件  虽然我没成功哈哈

jetty需要在pom修改  在线上服务器没找到隐藏项目名称 方法  




resin    jetty  tomcat  生成access-log日志



Resin生成日志



关于resin  access-log配置命令的详解:


path  日志生成路径


format 日志输出格式     (我增加了一个%D    %D含义为完成请花费花费的时间,以微妙为单位(微妙=毫秒)


格式变量 : 可以参照此文章

https://www.xuebuyuan.com/839009.html


rollover-preiod     表示回滚的周期,1D表示以一天为单位回滚,所谓的回滚是将当前所有写日志操作都先锁住,然后将文件的内容复制到文件名带时间戳的文件里,完成之后access.log文件继续使用。


啥意思呢   就是把access.log里的内容   备份到上方的access.log.20191207里
我这里设置的一天一次         也可以设置为W   意思一周一次

D  W 时间戳格式是哪里来的呢      还是参考上方的那篇连接     都有


rollover-size    回滚的大小,这里是5M     用处是假如碰到大量用户请求时,日志会快速增加    caaess.log的大小如果超过5M  就备份到上方access.log.20191207 里  (2分钟扫描一次)


rollover-count  备份文件数   我设置的是2      表示最多只备份两个备份文件,超过的就将更早的那个备份文件删除。

运行后打开日志    后面的数字为毫秒数



tomcat生成日志


修改tomcat  bin目录下的  server.xml文件



此处在后方增加了  

%m   (显示GET  POST等方法的运行返回结果)

%D   (统计时间 以毫秒为单位)


格式参考连接:

tomcat设置access日志

https://www.cnblogs.com/cbwleft/articles/6728440.html


运行后


jetty生成日志

这个好难找啊   我看师兄的日报


在jetty的  start.ini文件增加了以下内容



--module=requestlog

## Logging directory (relative to $jetty.base)

# jetty.requestlog.dir=logs

## File path

jetty.requestlog.filepath=logs/yyyy_mm_dd.zzz.log

## Date format for rollovered files (uses SimpleDateFormat syntax)

# jetty.requestlog.filenameDatemat=yyyy_MM_dd

## How many days to retain old log files

# jetty.requestlog.retainDays=90

## Whether to append to existing file

# jetty.requestlog.append=false

## Whether to use the extended log output

# jetty.requestlog.extended=true

## Whether to log http cookie information

# jetty.requestlog.cookies=true

## Timezone of the log entries

# jetty.requestlog.timezone=GMT

## Whether to log LogLatency

# jetty.requestlog.LogLatency=false


但并没有什么用    


logs文件里还是空的  什么都没有

网上搜到的配置都是修改 idea的插件jetty配置      和这个不相符



resin修改内存      



在resin.xml   <cluster id="app">下添加以下配置
<server-default>
                <jvm-arg>-Xms1024m</jvm-arg>
                <jvm-arg>-Xmx1024m</jvm-arg>
                <jvm-arg>-XX:PermSize=512m</jvm-arg>
                <jvm-arg>-XX:MaxPermSize=512m</jvm-arg>

    </server-default>


关于内存设置


Xms 表示启动是初始内存的大小
Xmx 最大内存占用大小
XX:PermSize指定方法区的最小值

XX:MaxPermSize内存的永久保存区域大小


我同时修改的Xms xmx    

以下是分别运行的结果:

1024m(1G) 可以正常运行
512m 可以正常运行
32m 无法运行

64m 可以运行


运行最小内存大概为64m



看到一篇文章 是推荐的resin配置  后面可能用得到 先收藏起来 

resin 4.0 配置优化建议

https://blog.csdn.net/weixin_33874713/article/details/91603588



top命令  


作用: 显示服务器相关进程内容


第一行显示了当前的系统时间,up是指系统运行时间,user 是指用户登录数,以及load average是指系统平均负载。

在平均负载有3个值:最近1分钟,最近5分钟,最近15分钟点。值越大说明系统的负载越高。由于进程短期的突发性活动,出现最近1分钟的高负载值也很常见。但近15分钟内平均负载都很高,说明说系统可能有问题。通常系统的负载值超过了2,就说明系统比较繁忙了

第二行显示了进程概要信息。 Tasks是进程数叫做任务。包括几种状态:运行,休眠,停止,僵化。上图显示了1个进程运行, 208个进程休眠。

第三行显示了CPU概述信息。us和 sy 是进程的属主(用户还是系统)。us 是运行用户进程的cpu时间。sy 是运行内核进程的cpu时间。  ni 是指niced 运行已调整优先级的用户进程cpu时间。 wa 是指IO wait 等待IO完成的cpu时间。Hi是指处理硬件中断的cpu时间。Si是处理软件中断的cpu时间。

最后二行是系统内存的状态。 第一行说的是系统的物理内存总量。Used当前用了多少内存。Free还有多少空闲内存。Buff/cache缓存的内存量。第二行说的是系统的交换空间。


关于top中列名的含义



默认情况下,top命令会按照%CPU值对进程排序。当top命令运行监控时,可以使用多种交互命令。例如按下f 键允许你选择对输出进行排序字段,默认是%CPU字段排序。按d键允许修改轮询间隔,按q键退出t监控。使用这个工具能经常找出占用系统大部份资源的进程。


kill命令


也可以用ps -ef|grep  +进程名    查找resin进程




然后用kill命令结束进程  

kill-9 可以强制结束进程  
kill all 结束所有进程

再次查看   已经结束运行


参考:linux top命令与结束进程命令 kill killall
linux进程命令   ps  top kill  

https://www.cnblogs.com/Selling-fish-bears/p/10327791.html



使用resin 自带命令停止resin运行





思考kill命令和停止脚本的区别


先看kill, 当我们执行一个"kill"命令,实际上是发送了一个信号给系统,让它去终结不正常的应用。

而常用的kill命令有3种


1. kill pid 关闭进程  
发送的是SIGTERM信号 ——— 此信号请求一个进程停止运行。此信号是可以被忽略的。进程可以用一段时间来正常关闭,一个程序的正常关闭一般需要一段时间来保存进度并释放资源。换句话说,它不是强制停止。

2.kill -9 pid 强制关闭进程

发送的是SIGKILL信号 ——— 此信号强制进程立刻停止运行。程序不能忽略此信号,而未保存的进度将会丢失。


3.kill all  关闭所有(顾名思义,不推荐用)


再看停止脚本,就是正常去执行  resin的关闭

和kill命令是一样的   程序可以在关闭的时候保存进度并释放资源



个人觉得,相比于程序自带的停止脚本     kill命令比较好   


原因:

1.kill命令可以快速,精准的关闭进程  (先top查看pid)

2.在一个进程出故障,无法正常运行停止脚本时,就可以用kill命令强制关闭


明天计划的事情:


编写部署脚本


推进剩下的任务




返回列表 返回列表
评论

    分享到