关于内存快照的上传下载和分析

2019-08-15  本文已影响0人  well4050

1、基本流程

上传:手机端点按钮生成内存快照,自动上传到服务器

下载:Jenkins定时触发下载程序,从服务器获取最新的内存快照文件名称,并下载,并通知服务器删除该文件。

分析:下载程序下载内存快照文件到本地后,调用Unity编辑器模式下的静态函数,分析该内存快照,生成.json文件。

2、Jenkins配置相关

安装好Jenkins后(https://jenkins.io/zh/doc/pipeline/tour/getting-started/),新建Item,类型为Freestyle Project。

点这个project的“配置”,

在“构建触发器”部分,勾选“Build periodically”,填“日程表”为“H/2 * * * *”,表示每2分钟触发一次(已经是最小时间间隔),也可以配置为其他数字。

在“构建”部分,点“增加构建步骤”,“Execute Windows Batch Command”,填写downloader.bat的完整路径,保存。

3、服务器部分

使用xampp,打开xampp-control.exe控制面板,点start Apache,其他不用开。

根据配置的端口号,把防火墙的该端口号打开。

把php.ini里的upload_max_filesize和post_max_size的值改大一些。这里设置了upload_max_filesize=1024M,post_max_size=1024M。

设置虚拟目录snapshot,用来存放快照文件,方法见搜索引擎。

期间可能还会遇到其他问题,搜索引擎解决。

三个php文件:

SnapshotUpload.php:用来接收手机端上传的快照文件。可以通过类似 http://61.129.46.203:8081/SnapshotUpload.php 格式的URL进行访问。

$_REQUEST['Name']、$_REQUEST['OperatingSystem']、$_REQUEST['Version']分别用来获取手机端程序里的WWWForm.AddField()添加的三个字段,name是快照文件名,另外再生成.info文件用来保存OperatingSystem、Version等信息。

GetLatestSnapshotName.php:通过它可以获取最新的快照文件名。有个小细节是,限定了要同时有xx.snap和xx.info存在。

DeleteSnapshot.php:删除指定的快照文件。

4、处理下载和分析的程序

downloader.bat:

用于下载的批处理文件。

其中,“D:\aa\profiler.exe -batchmode -localPath D:\bb -analyzeOutputPath D:\cc”,D:\aa是profiler.exe所在目录,D:\bb是下载的快照文件存放的目录,D:\cc是分析快照文件后输出的.json文件存放的目录。

profiler.exe:

用Unity API写的下载程序,下载完快照文件后,会触发snapshotAnalyze.bat(需要把它放在profiler.exe所在的目录下),用于分析内存快照。

snapshotAnalyze.bat:

其中,“D:\cc\unity.exe -projectPath D:\dd -batchmode -executeMethod "CustomProfiler.Editor.Menu.LoadSnapshotCMD" -quit -snapshotPath %1 -outputPath %2”,

D:\cc是unity.exe所在目录,D:\dd是分析内存快照的Unity工程目录(内存快照分析只能在编辑器模式下执行,所以采用这种方式);CustomProfiler.Editor.Menu.LoadSnapshotCMD是执行快照分析的静态函数;

%1表示从调用者profiler.exe传入的内存快照文件路径,%2表示表示从调用者profiler.exe传入的即将要输出的分析结果.json文件路径。

把上面提到的4个路径(D:\aa,D:\bb,D:\cc,D:\dd)修改为实际路径即可。

上一篇下一篇

猜你喜欢

热点阅读