tomcat部署时war包解压慢

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了tomcat部署时war包解压慢相关的知识,希望对你有一定的参考价值。


旭勇 >《国内情况》
阅29转02021.05.11关注
Fiddler在使用的过程中经常会碰到一些问题。这章补充一些Fiddler的用法。

2.1 Fiddler必须要做的3个设置
Fiddler需要进行3个设置,这样做使用Fiddler的过程才能顺畅。

2.1.1 第1个设置:在Fiddler中安装证书
大部分网站都是使用HTTPS协议,所以必须安装证书,这样才能捕获HTTPS,如图2-1所示。

如果证书没有安装成功,那么Fiddler只能抓到HTTP请求,抓不到HTTPS请求,如图2-2所示。所以一定要想办法把证书安装好。

图2-1 Fiddler安装证书

图2-2 没有抓到HTTPS

2.1.2 第2个设置:自动解压HTTP响应
在Fiddler工具栏中选中“Decode”按钮,如图2-3所示。这样就会自动解压HTTP响应,否则我们看到的HTTP响应是乱码。

图2-3 Fiddler选中Decode按钮

2.1.3 第3个设置:隐藏“Tunner to”请求
可以在Fiddler中隐藏“CONNECT Tunnels”请求,如图2-4所示。隐藏的方法是选择菜单栏中的Rules→Hide CONNECTs。这样Fiddler就不会捕获大量无用的握手验证请求,如图2-5所示。这些“Tunnel to”的请求对我们没什么用处。因为我们平常根本不关心HTTPS是如何建立连接的。我们抓包是为了看HTTP请求和响应的数据内容,抓HTTPS也是看数据内容,而不关心HTTPS的通信是怎么建立的。

图2-4 在Fiddler中选中Hide CONNECTs

图2-5 Fiddler中的握手验证请求

2.2 不允许抓包
软件开发商并不希望自己的软件被人抓包,抓包意味着自己的接口全部被人看得一清二楚,存在很多安全隐患。有很多App采取各种措施来防止被抓包。

2.2.1 某些App抓不到包
某些App为了不被抓包,直接会在代码里设置不允许使用代理,这样Fiddler就抓不到了。

有些App能抓包,说明Fiddler的设置是正确的。某些App不能抓包,原因有很多,如下。

可能是Fiddler证书原因,解决方法是需要用证书插件来重新制作一个证书,然后重新配置。
这个App的开发者进行了特殊设置,不让抓包。
2.2.2 HTTP请求和响应全部加密
图2-6是一个查违章的App的抓包内容,可以看到这个App可以被抓包,但是其HTTP请求和HTTP响应全部被加密了,安全性很高。

图2-6 查违章App的接口全部被加密

2.2.3 不让抓包
银行的App对安全性要求很高,所以一般不允许抓包。某款银行App在用Fiddler抓包的时候,App会提示网络错误,不让抓包,如图2-7所示。

图2-7 某银行App不让抓包

2.3 Fiddler抓不到包
在使用Fiddler的过程中,有时候会发现Fiddler抓不到包。下面介绍如何解决抓包失败的问题。

2.3.1 Fiddler的抓包开关
Fiddler有一个抓包的开关。打开状态栏的时候,状态栏的最左边有个“Capturing”图标,如图2-8所示。如果没有这个图标,当然抓不到包了。初学者很容易忘记这个开关。

图2-8 Fiddler的抓包开关

2.3.2 浏览器抓不到包
Fiddler能抓包是因为它是一个代理服务器。需要抓包的程序必须把代理指向Fiddler才行。如果浏览器抓不到包,可能是因为浏览器的代理设置没有指向Fiddler。我们可以先重启Fiddler,然后查看浏览器的代理服务器设置,或者换不同的浏览器试试。

我们先来看一下Fiddler的抓包原理图,如图2-9所示。

图2-9 浏览器的抓包原理

如果是某一个浏览器抓不到包,解决方案是换其他的浏览器。比如IE和Chrome都能抓到,只是Firefox抓不到包,说明Fiddler本身没有问题,可能是Firefox的代理设置没有指向Fiddler。

如果是所有的浏览器都抓不到包,这说明整个Fiddler都不工作。那么要先重启Fiddler,再检查下系统的代理设置,如图2-10所示。

图2-10 系统代理设置

设置系统代理的打开方式为:控制面板→Internet选项→连接→局域网设置→代理服务器。

2.3.3 能抓HTTP不能抓HTTPS
如果发现Fiddler可以抓到HTTP的请求,但是抓不到HTTPS的请求,这说明没有安装Fiddler的证书或者安装Fiddler证书失败。Fiddler可能会提示你安装证书。解决办法是重新安装证书,再重启Fiddler,如图2-11所示。

图2-11 重新安装证书

重新安装证书的操作是Options→Actions→Trust Root Certificate。

2.3.4 抓不到手机中的包
很多人会碰到这种情况:Fiddler能抓本地计算机浏览器的包,但是抓不到手机的包。本地计算机和手机位于同一个网络,各种配置也正常,但是手机的包就是抓不到。

出现这样的问题的原因是Fiddler所在的计算机和手机之间的网络不通。即使Fiddler所在的计算机和手机连的是同一个Wi-Fi,也可能网络不通。在同一个Wi-Fi下,网络不一定是通的。操作系统上的防火墙或者其他软件的设置都会影响网络的通信。我们需要通过下面的步骤来检测网络是否是通的。

第1步:测试Fiddler能否捕获本地计算机的浏览器的包,如果本地浏览器都不能抓包,那就说明Fiddler的配置有问题。

第2步:如果Fiddler所在的计算机的IP地址是192.168.0.100,那么Fiddler证书网站的网址是http://192.168.0.100:8888。用计算机的浏览器访问Fiddler证书网站,如图2-12所示。

图2-12 Fiddler Echo Service网页

第3步:在手机没有设置代理的情况下,在手机上用浏览器打开Fiddler的证书网站。

如果网页打不开,说明网络不通,原因可能如下。

手机和计算机不在同一个网络。
Fiddler的允许远程连接的设置没有打开。
Windows的防火墙关闭(防火墙打开,可能会禁止8888端口对外开放)。
只有Fiddler证书网站能打开,才能说明手机和计算机的网络是通的。再去修改手机上的代理设置,Fiddler才能对App进行抓包。

2.3.5 经过上面的设置,还是抓不到包
可以考虑换台计算机、换个手机试试,或者换别的抓包工具试试。

2.3.6 mac OS系统上抓包
Fiddler是用C#开发的,目前对mac OS的支持不太友好。现在很多人都用Mac笔记本办公,在mac OS系统上抓包可以考虑用另外两个工具:浏览器开发者工具和Charles。

2.3.7 Fiddler证书安装不成功
有时候会碰到Fiddler安装证书不成功的情况,如图2-13所示。

图2-13 证书安装不成功

这种情况一般在Windows7系统中出现,可以试图用下面介绍的两种方法来解决。

方法1:从别的机器中复制一个Fiddler根证书“FiddlerRoot.cer”放到Fiddler的安装目录下面,然后再重新配置证书,如图2-14所示。

图2-14 Fiddler证书

方法2:使用Fiddler证书制作工具来重新制作证书,详细步骤如下。

第1步:在Fiddler中删除证书。打开Fiddler,依次打开Tools→Options,取消选中Decrypt HTTP traffic,并且在Actions中单击“Remove Interception Certificates”,如图2-15所示。

图2-15 Fiddler删除证书

第2步:卸载证书。找到Fiddler的安装目录,其中有个unCert.exe文件。如果没有unCert.exe就不需要卸载,如图2-16所示。

第3步:使用Fiddler证书制作工具来重新制作证书。下载Certificate Make插件,运行下载的文件之后会生成新的证书。

第4步:在Fiddler中重新配置证书。

图2-16 Fiddler卸载证书

2.3.8 ios系统10.3以上,手动信任证书
若iOS系统版本是10.3以上,那么证书可能没有被信任,需要手动设置信任证书。依次打开设置→通用→关于本机→证书信任设置,将Fiddler证书启用即可,如图2-17所示。

图2-17 iOS中启用Fiddler证书

2.4 Fiddler包太多找不到自己想要的
Fiddler启动后,Web Session列表就会抓到很多HTTP请求,初学者往往会比较迷茫,因为找不到自己要抓的包。下面介绍几个方法来找到自己要抓的包。

2.4.1 停止抓包
最推荐使用这个方法。在抓包之前,先把Web Session里面抓到的数据包全部清空,然后再操作网页。在抓到想要的包后,就暂停抓包,这个方法简单、实用。熟练使用这个方法后,就不需要使用其他过滤的方法了。抓包开关如图2-18所示。

图2-18 抓包开关

2.4.2 只抓手机,不抓本地的包
在专门抓App的包的时候,Fiddler里面混杂了本地计算机和手机App的包,如果只想抓手机App的包,这时候可以选择“…from remote clients only”,如图2-19所示。

图2-19 设置只抓远程的包

2.4.3 过滤会话
Fiddler有非常强大的过滤会话的功能,假如不想看到localhost的数据包,就可以把它隐藏。过滤的设置如图2-20所示。注意,在设置时两个Host之间要用分号隔开。

图2-20 用Filters选项卡隐藏localhost

注意:使用了Filters选项卡后,记得取消Filters选项卡。可能下次抓包的时候,忘记设置Filters选项卡而抓不到包。很多人犯过这个错误。

2.4.4 只抓特定的进程
在状态栏中选择Web Browsers或者Non-Browser来选择进程,如图2-21所示。此外,工具栏中还有个按钮:Any Process,单击这个按钮把十字图标拖曳到想要抓包的程序上面,就只会抓特定进程的包,如图2-22所示。

图2-21 状态栏上按进程过滤

图2-22 只抓特定的进程

2.4.5 观察URL和HOST
观察图2-23中的URL,可知这是登录相关的数据包。URL的命名都会是有意义的。比如登录的接口会包含login,注销的URL中会包含logout。

图2-23 观察URL

2.4.6 查看进程发包
进程是计算机中程序的一次运行活动。Fiddler的Process列对应本地Windows进程。通过这一列我们可以知道是哪个进程在发包,如图2-24所示。

图2-24 在Fiddler中查看进程

2.5 HTTPS是否安全
Fiddler能分析HTTPS流量是不是意味着HTTPS协议不安全?

HTTPS是安全的,Fiddler抓HTTPS的时候安装了一个Fiddler的证书,所以Fiddler可以解密HTTPS的内容。HTTPS请求从计算机上发送到网络后,HTTPS的内容全部是加密的。

2.6 计算机连接手机热点抓包
在没有Wi-Fi的情况下,我们用手机开热点,计算机连接手机的热点来上网,这个时候计算机上的Fiddler能否抓到手机上的包呢?答案是不能。因为手机开热点后,采用的是GPRS手机流量上网,这个时候手机不能设置代理服务器的,如图2-25所示。

图2-25 WLAN热点

如果有两个手机,一台计算机,那么就可以抓包了。一个手机当成热点,另外一台手机和计算机都使用这个热点上网,手机的代理就可以指向计算机了。

客户端如何抓包
如果程序是用.NET开发的,那么Fiddler可以抓到包。因为.NET程序默认会使用系统代理。如果程序是用别的语言开发的,只要这个程序支持用户自定义代理,那么Fiddler也可以抓到包,比如Fiddler可以抓QQ。

如果客户端程序不支持代理,那么Fiddler就抓不到包了。

2.7 Fiddler测试App升级
Fiddler常用于App的升级测试,我们可以利用Fiddler伪造响应来测试App升级。

2.7.1 App升级原理
App是否升级的检查是在启动App访问服务器时进行的,把本地计算机上App的最新版本号与服务器端的最新版本号作对比,如果不一致就提示升级。

App升级的时候,App会发送一个HTTP请求,来问服务器有没有最新版。如图2-26所示,如果没有最新版,服务器返回的HTTP响应中会说没有更新。

图2-26 App没有新版本

如果有最新版,服务器返回的响应会告知有新版本,并且App端会有弹窗提示,如图2-27和图2-28所示。

图2-27 App有新版本

图2-28 App更新提示

2.7.2 App升级的测试
在实际测试中,我们一般不会去修改服务器,因为修改服务器会遇到下述问题。

修改服务器的代码,需要有很好的代码能力,99%的人做不到。
修改服务器的代码,还需要重新部署,耗时耗力。
不灵活,升级的情况有好几种,每次修改都要重新部署。
用Fiddler来模拟升级比较简单,如图2-29所示。

图2-29 Fiddler模拟

我们用Fiddler伪造一个HTTP响应就可以了。可以用下断点的方式修改HTTP响应,或者用Fiddler中的AutoResponder。接下来以坚果云为例介绍一下升级。

2.7.3 坚果云的升级
坚果云每次启动的时候,都会调用一个latestVersion的接口来查询服务器,看客户端有没有更新的版本,如图2-30所示。

对比HTTP响应中的版本和本地版本,如果服务器返回的版本更高,那么客户端就会弹出对话框,提醒用户升级App。

图2-30 坚果云的升级

2.8 短链接
短链接就是把普通网址转换成比较短的网址(如https://dwz.cn/8oVtHHyH)。在微博或者其他限制字数的应用里,短链接有很多好处:网址短、字符少、美观、便于发布和传播。

我们平常工作中写邮件使用短链接也会让邮件更加简洁和美观。

2.8.1 短链接原理解析
当我们在浏览器里输入https://dwz.cn/8oVtHHyH时:

浏览器会发送一个HTTP GET请求给dwz.cn;
dwz.cn服务器会通过短码8oVtHHyH获取对应的长网址;
服务器返回HTTP 301或者302的响应,响应中包含了长网址;
浏览器会跳转到长网址。
2.8.2 使用短链接
短链接的服务提供商有很多,比如:百度短网址http://dwz.cn,如图2-31所示。

图2-31 使用百度短网址

2.8.3 Fiddler抓包短链接
打开Fiddler,再打开浏览器,输入网址https://dwz.cn/8oVtHHyH。用Fiddler抓包短链接如图2-32所示。

图2-32 Fiddler抓包短链接

从图2-32中可以看到短链接的原理很简单,利用HTTP协议的跳转,用301或者302都可以。

2.9 本章小结
本章介绍了Fiddler的常用使用技巧,包括抓包设置、抓不到包的解决方法等。读者可以对照本章排查Fiddler使用过程中遇到的问题。此外,读者还可以了解用Fiddler测试App升级和短链接的概念。

本文摘自:《HTTP抓包之接口自动化测试》

本书的内容都是我多年从事接口测试的经验总结,非常贴近我们的实际工作,能帮助大家解决实际工作中的难题。

本书的内容比较简单,实例丰富,读者阅读起来会感觉比较轻松、容易上手,读完本书不需要花费太多时间。通过本书的学习,如果读者能够自行开发出一个订票工具,或者实现一个电商网站的自动下订单操作,那么恭喜你,已经掌握了本书的所有知识。

本书的主要内容有HTTP的基础知识;如何使用Fiddler来抓HTTP包;如何分析HTTP包;如何通过JMeter和Postman等发送HTTP包,从而实现软件自动化测试和接口的自动化测试;如何使用抓包工具来实现安全测试和性能测试等;几个日常生活中应用比较广泛的综合实例。

本站仅提供存储服务,所有内容均由用户发布,如发现有害或侵权内容,请点击举报。
展开剩余内容
打开APP阅读全文并永久保存
更多类似文章
猜你喜欢

类似文章
Fiddler和app抓包
fiddler对浏览器、app抓包及证书安装
你想要的Fiddler抓包实操小技巧
python爬虫教程:教你通过 Fiddler 进行手机抓包
利用Fiddler 可以抓取HTTPS
抓包|获取移动app里的数据
更多类似文章 >>
生活服务


首页万象文化人生生活健康
教育职场理财娱乐艺术上网
留言交流回顶部
联系我们
触屏版| 下载APP

京ICP证090625号 京ICP备05038915号

京网文[2019]6000-697号 京公网安备 11010502030377号

关注公众号
保存
生成长图
分享
参考技术A 首先准备好tomcat ,可以百度下载解压即可
2
/8
然后把准备好的war包复制粘贴到webapps目录即可,不用创建目录,直接复制粘贴即可
3
/8
然后修改service.conf配置文件,在conf目录下
4
/8
右键用文本编辑器打开即可,主要修改两个地方,其实也可以默认不修改,不修改访问的话,端口是8080, url上下文是war包的名字,这里我们修改端口号
5
/8
然后复制host,在其中添加一句,或者也可以直接修改原来的host在里面添加一句<Context path="/app" docBase="app" reloadable="false" source="org.eclipse.jst.jee.server:tsj-spring"/> 其中主要是path 是指url的上下文,app是指文件war的路径名称
6
/8
最后在tomcat目录下双击startup.bat启动app.war,会弹出一个窗口一直运行
7
/8
运行完就可以看到下面启动成功了,注意不要关闭,该窗口,关闭了服务也就停止了
8
/8
组后测试一下接口,访问为ip:9301/app/即可,这里根据自己设置的做相应改动既可。
参考技术B 使用封装的tomcat组件进行web服务部署时,导致tomcat服务在服务启动和停止中用时比较长,结合tomcat的运行日志进行问题分析。

运行日志如下:

二、tomcat服务停止慢问题
1、现象
根据tomcat的运行日志发现,进行了3次tomcat停止操作过程中,第一次tomcat服务停止用时接近5分钟,第二次和第三次tomcat服务停止用时仅10秒。

Line 9: 30-Aug-2017 10:39:44.981 信息 [Thread-3861] org.apache.catalina.core.StandardService.stopInternal Stopping service Catalina
Line 61218: 30-Aug-2017 10:44:36.076 信息 [Thread-3861] org.apache.coyote.AbstractProtocol.stop Stopping ProtocolHandler ["http-apr-8081"]
Line 61219: 30-Aug-2017 10:44:36.278 信息 [Thread-3861] org.apache.coyote.AbstractProtocol.stop Stopping ProtocolHandler ["ajp-apr-8009"]
Line 61279: 30-Aug-2017 11:11:09.873 信息 [Thread-102] org.apache.catalina.core.StandardService.stopInternal Stopping service Catalina
Line 62640: 30-Aug-2017 11:11:18.030 信息 [Thread-102] org.apache.coyote.AbstractProtocol.stop Stopping ProtocolHandler ["http-apr-8081"]
Line 62641: 30-Aug-2017 11:11:18.084 信息 [Thread-102] org.apache.coyote.AbstractProtocol.stop Stopping ProtocolHandler ["ajp-apr-8009"]
Line 62810: 30-Aug-2017 13:54:20.342 信息 [Thread-788] org.apache.catalina.core.StandardService.stopInternal Stopping service Catalina
Line 73508: 30-Aug-2017 13:54:29.552 信息 [Thread-788] org.apache.coyote.AbstractProtocol.stop Stopping ProtocolHandler ["http-apr-8081"]
Line 73509: 30-Aug-2017 13:54:29.608 信息 [Thread-788] org.apache.coyote.AbstractProtocol.stop Stopping ProtocolHandler ["ajp-apr-8009"]

2、问题分析及结果
通过查看tomcat运行日志发现如下问题:

(1)通过查看tomcat日志catalina.2017-08-30.log,在关闭tomcat的 web服务时无法去掉已经注册的DruidDriver,为了内存泄漏,tomcat强制去掉了注册的DruidDriver,通过日志查看多个应用中都使用了druid连接池,并出现了这个问题。
参考技术C tomcat部署时war包解压慢:tomcat对war包的加载是串行处理的,所有的war包加载时间总和就导致应用启动过慢。

Tomcat下实现热部署和自动解压war包替换现有文件夹的操作

插播小广告,本人的《大话Java性能优化》一书已经在亚马逊、京东、当当、天猫出售,提前谢谢大家支持。

自动解压war包替换现有文件夹的操作:

因为tomcat默认不会再次解压已经存在的war包对应的目录,所以可以在catalina.bat里面加入以下dos命令来帮助该功能的实现。

cd D:\\software\\apache-tomcat-6.0.32\\webapps

for %%a in (*.war) do rd /q /s "%%~na"


Tomcat下实现热部署:

这个需要在conf/server.xml里面看是否reloadable选项设置为了false,默认是true.


以上是关于tomcat部署时war包解压慢的主要内容,如果未能解决你的问题,请参考以下文章

在tomcat管理界面部署war包项目失败

spring boot项目打成war包部署到tomcat

Tomcat下实现热部署和自动解压war包替换现有文件夹的操作

自动部署批处理

部署Web项目的War包到TomCat服务器

Linux环境部署war包到tomcat