发表于: 2020-06-12 23:14:11

1 1717


今天完成的事情:

首先使用导入war包的方式部署resin:

将war包放入/usr/resin/webapps目录下,地址栏输入http://81.68.101.220:8088/task2/

各接口都能使用。


然后使用document-directory的方式,这种方式网上搜不到什么有效信息,只有一个:


但是不知道是不是由于版本原因,我的conf文件夹下并没有resin.conf这个文件,找了下别的资料发现好像是修改resin.xml这个文件就可以了:


将原来的root-directory注释掉,加上document-directory即可,输如服务器地址:


发现不用加上/项目名就出现了,而且按钮也可以用了。


各接口测试也正常。


接下来使用jetty。

为了避免端口占用,我将tomcat端口设为8080,Resin端口设为8088,jetty端口设为8099

官网下载之后上传到服务器,解压即可。

输入./jetty.sh start 启动

由于项目还没有放进去所以会404报错:


接下来将war包放入webapps中:

测试各接口:

查询全部:


根据ID查询:


更新:


测试结果都正常。


这里有点不解,使用tomcat,jetty,resin的时候明明使用的是同一个war包,但是有的直接输入地址栏就可以了,有的又要加上/项目名,还有的要加上/index.jsp才能显示主页。


配置好Resin,Tomcat,Jetty的Access.log(不同的WEB服务器的访问日志命名有区别),列出来每一个请求的响应时间,以MS为单位.

Tomcat:

在conf/server.xml文件中加上:


<Valve className="org.apache.catalina.valves.AccessLogValve" directory="logs"

               prefix="localhost_access_log." suffix=".txt"

               pattern="%h %l %u %t &quot;%r&quot; [%{postdata}r] %s %{Referer}i %{User-Agent}i %T %b" />

这里我打开发现已经有这一段了。


其中各参数含义为:

%a - 远程IP地址

%A - 本地IP地址

%b - 发送的字节数,不包括HTTP标头,如果为零则为“ - ”

%B - 发送的字节数,不包括HTTP标头

%h - 远程主机名(如果resolveHosts为false,则为IP地址 )

%H - 请求协议

%l - 来自identd的远程逻辑用户名(始终返回' - ')

%m - 请求方法(GET,POST等)

%p - 收到此请求的本地端口

%q - 查询字符串(前缀为'?',如果存在)

%r - 请求的第一行(方法和请求URI)

%s - 响应的HTTP状态代码

%S - 用户会话ID

%t - 日期和时间,采用通用日志格式

%u - 经过身份验证的远程用户(如果有),否则为“ - ”

%U - 请求的URL路径

%v - 本地服务器名称

%D - 以毫秒为单位处理请求所用的时间

%T - 处理请求所用的时间,以秒为单位

%I - 当前请求线程名称


加上%D即可列出来每一个请求的响应时间:



Resin的日志设置在cluster-default.xml里面

加上%D即可:

最后面就是显示的时间,但是好像不是毫秒。


3.0.16版本以后输出的是微秒了,


9,修改Resin的内存配置,给当前的WEB程序分别设置1G内存,512兆内存,32兆内存,测试最小启动的大小。


Resin的内存配置,在resin4.x版本中修改resin.xml文件和resin.properties文件都可以:

resin.xml加上:

<server-default>

        <jvm-arg>-Xms1024m</jvm-arg>

        <jvm-arg>-Xmx1024m</jvm-arg>

        <jvm-arg>-XX:PermSize=256m</jvm-arg>

        <jvm-arg>-XX:MaxPermSize=256m</jvm-arg>

 </server-default>


resin.properties中加:

jvm_args  : -Xms1024m -Xmx1024m -XX:PermSize=256m -XX:MaxPermSize=256m


其中,-Xms1024m 表示启动时,初时内存大小,-Xmx1024m 表示最大内存占用大小,-XX:MaxPermSize=256m 表示:内存的永久保存区域的大小


测试发现内存越小好像启动越慢,最小启动大小好像就是32M了,我测的设为16M就连不上了。


10,用Top命令查看WEB程序的进程号,用Kill 命令 杀掉WEB进程。


kill会将指定的信号发送给指定的进程

1 SIGHUP 挂起进程

2 SIGINT 终止进程

3 SIGGQUIT 停止进程

9 SIGKILL 无条件终止进程

15 SIGTERM 尽可能终止进程

17 SIGSTOP 无条件停止进程,但不是终止

18 SIGTSTP 停止或者暂停进程,但不终止进程

19 SIGCONT 继续运行停止的进程

默认发送的是15


kill和kill -9,两个命令在linux中都有杀死进程的效果,然而两命令的执行过程却大有不同,在程序中如果用错了,可能会造成莫名其妙的现象。

执行kill命令,系统会发送一个SIGTERM信号给对应的程序。当程序接收到该signal信号后,将会发生以下事情:

程序立刻停止

当程序释放相应资源后再停止

程序可能仍然继续运行

大部分程序接收到SIGTERM信号后,会先释放自己的资源,然后再停止。

但是也有程序可能接收信号后,做一些其他的事情(如果程序正在等待IO,可能就不会立马做出响应,我在使用wkhtmltopdf转pdf的项目中遇到这现象),也就是说,SIGTERM多半是会被阻塞的。

然而kill -9命令,系统给对应程序发送的信号是SIGKILL,即exit。exit信号不会被系统阻塞,所以kill -9能顺利杀掉进程。

重启resin


编写部署脚本:

这里我用比较笨的方法自己写的:


运行之后:


17,用Spring messageSource 配置错误信息,在接口处做校验,根据错误的类型返回对应的错误信息。

不知道Spring messageSource是什么东西,网上查到的都是什么国际化之类的。


收获:

学会了tomcat,resin,jetty都在服务器的部署,部署脚本的编写。


明天计划完成的事情:

配置Nginx,配置域名指向Resin,本地配置Host,通过域名在浏览器,Postman等测试数据。整理任务二的代码,准备提交任务二。


碰到的问题:

17步那个用Spring messageSource 配置错误信息,在接口处做校验,根据错误的类型返回对应的错误信息。


返回列表 返回列表
评论

    分享到