发表于: 2019-12-22 20:46:14
4 1339
啥也不说就是干!!!
由于公司接近年底项目特别忙再加上个人的私事,没有时间写任务日报,接下来要抓紧时间赶丢下的进度了
今天完成的事情:









Jetty 部署
1、下载 Jetty 并安装至远程服务器:https://www.cnblogs.com/freeweb/p/5942972.html
2、启动jetty
将 Jetty 端口号修改为 8088
编辑start.ini 如下,找到这行,修改端口号
## HTTP port to listen on jetty.port=8081
在上面图中jetty目录下的start.jar可以用于启动,执行命令: java -jar start.jar 即可启动,这个是在当前命令行启动,如果想在后台启动也可以使用nohup和screen
另一种启动方式是执行: ./bin/jetty.sh start 启动,这个默认会在后台运行 jetty
可以看到 Jetty 已经启动,端口号为 8088,在浏览器中访问:f0t1.top:8088
暂时还没在 webapp/ 目录下部署任何应用。
将 JnshuTask2.war 直接放在 webapps目录下即可,重启jetty
postman 访问接口 :GET /jnshuTask2/student/100002/高世豪
数据返回正常
Tomcat 部署
之前已经安装了 Tomcat 到远程服务器了:sh /usr/local/tomcat_cluster/tomcat1/apache-tomcat-7.0.94/bin/startup.sh
正常启动 tomcat:
部署 war 包:先停止 tomcat 服务,将 JnshuTask2.war 上传至服务器 tomcat /webapps/ 目录下
重启 tomcat,Postman 测试接口,正常返回数据:
2、服务器配置相关
Tomcat 目前应用比较广泛,对 JavaEE 和 Servlet 的支持更加全面,很多特性会直接集成进来。
虽然 Jetty 更轻量级,采用 NIO 在处理 I/O 请求上更占优势,在处理静态资源时,性能较高 ,扩展也更加方便。
然而当支持大规模企业级应用,集群部署时候,Tomcat 还是更优选择。
常用配置
修改端口号
apache-tomcat-7.0.94/conf/server.xml
修改 connector 标签的 port 属性
配置内存大小:
apache-tomcat-7.0.94/bin/catalina.sh 增加:
JAVA_OPTS="-Xms256m -Xmx512m -Xss1024K -XX:PermSize=128m -XX:MaxPermSize=256m"//位置在cygwin=false前。
Xms 指最小内存,Xmx 指最大内存
配置 Access.log
apache-tomcat-7.0.94/conf/server.xml
<Valve className="org.apache.catalina.valves.AccessLogValve" directory="logs"
prefix="localhost_access_log" suffix=".txt"
pattern="%h %l %u %t %r" %s %b" />
//<Valve className="org.apache.catalina.valves.AccessLogValve" directory="logs"
// prefix="localhost_access_log." suffix=".txt"
// pattern="%h %l %u %t "%r" [%{postdata}r] %s %{Referer}i %{User-Agent}i %T %b" />
产生的访问日志文件在 apache-tomcat-7.0.94/logs/localhost_access_log.2019-12-22.txt
当做web application性能分析的时候,我们经常会借助Tomcat的访问日志。例如可以列举出所有请求访问耗时最长的,然后对接口进行优化
其中 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)
182.119.1.219 - - [22/Dec/2019:19:57:48 +0800] "GET /JnshuTask2/static/jquery-3.3.1.min.js HTTP/1.1" 400 1093
如果配置了 %T 可以根据处理请求的时间排序:
<Valve className="org.apache.catalina.valves.AccessLogValve" directory="logs"
prefix="localhost_access_log." suffix=".txt"
pattern="%h %l %u %t "%r" [%{postdata}r] %s %{Referer}i %{User-Agent}i %T %b" />
按照倒数第二个字段由大到小显示接口及访问时间:
cat logs/localhost_access_log.2019-12-22.txt | awk '{print $(NF-1)" "$0}' | sort -n -r| awk '{$1="";print $0}'
top 命令:显示或管理执行中的程序
选项:
-b:以批处理模式操作;
-c:显示完整的治命令;
-d:屏幕刷新间隔时间;
-I:忽略失效过程;
-s:保密模式;
-S:累积模式;
-i<时间>:设置间隔时间;
-u<用户名>:指定用户名;
-p<进程号>:指定进程;
-n<次数>:循环显示的次数。
top -p 7926
解释:
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[缓冲的交换区总量],
3、自动部署项目脚本编写
1)停止 tomcat 服务
2)备份并删除项目
3)拉取最新代码并执行 mvn clean package 生成最新 war 包
4)复制 war 包至 ${tomcat_home}/webapps/ 目录下
5)重新启动 tomcat 服务
#!/bin/bash
source /etc/profile
tomcatPath=/usr/local/tomcat_cluster/tomcat1/apache-tomcat-7.0.94
backPath=/usr/local/jnshu/workspace/backup
echo =================================
echo 自动化部署脚本启动
echo =================================
#echo 进入/data/interactive
cd /local/jnshu/workspace
echo 开始pull版本
git pull
echo 开始编译文件
mvn clean package -Dmaven.test.skip=true
echo 编译完成
sleep 2 #休眠2s
echo 关闭tomcat服务器
sh service.sh stop
sleep 2 #休眠2s
echo 备份并删除原项目
cp $tomcatPath/webapps/JnshuTask2.war $backPath/JnshuTask2.war.$(date +%Y%m%d)
rm -rf $tomcatPath/webapps/JnshuTask2*
echo 部署新文件
cp target/JnshuTask2.war $tomcatPath/webapps/
sleep 5 #休眠5s
echo 重启服务器
sh service.sh start
执行脚本,完成自动部署
明天计划的事情:
1、Nginx 学习
2、任务二的剩余部分及深度思考
遇到的问题:
暂无
收获:
学习了服务器项目配置及常用的命令,以及部署脚本的编写
评论