obsidian/笔记文件/2.笔记/性能检测平台 临时记录_第一章.md
2025-05-21 17:07:14 +08:00

4.6 KiB
Raw Permalink Blame History

#灵感

局域网 服务端地址

服务器 IP[192.168.1.177](http://192.168.1.177/) 用户root 密码cZr8YTtp

参考的上报日志 分析平台 演示:

https://creporter.inspiregames.cn:81/ lg753951

这里是采集到,客户端发过来数据的接口逻辑:

!Pasted image 20250314184241.png

安卓端,采集内存占用,统计采集耗时,逻辑参考

    public static int getRSSMemoryMBProc() {
        long startTime = System.nanoTime(); // 记录开始时间
        try (BufferedReader br = new BufferedReader(new FileReader("/proc/self/status"))) {
            String line;
            while ((line = br.readLine()) != null) {
                if (line.startsWith("VmRSS:")) {
                    String[] parts = line.split("\\s+");
                    int kb = Integer.parseInt(parts[1]);
                    
                    long duration = (System.nanoTime() - startTime) / 1000; // 微秒耗时
                    Log.d("PerfMonitor", "getRSSMemoryMBProc took " + duration + "μs");
                    
                    return kb / 1024;
                }
            }
            // 如果没有找到VmRSS行也记录耗时
            long duration = (System.nanoTime() - startTime) / 1000;
            Log.d("PerfMonitor", "getRSSMemoryMBProc (no data) took " + duration + "μs");
        } catch (Exception e) {
            long duration = (System.nanoTime() - startTime) / 1000;
            Log.e("PerfMonitor", "getRSSMemoryMBProc failed after " + duration + "μs", e);
            e.printStackTrace();
        }
        return -1;
    }

耗时统计:

!Pasted image 20250407134056.png

微秒和毫秒的换算:

!Pasted image 20250407134132.png

!Pasted image 20250407134143.png

这里是go服务器检测和创建数据库表的相关逻辑

!Pasted image 20250410175502.png

这里是整个go服务器的main启动函数入口

!Pasted image 20250410175637.png

main函数运行到这里就可以判断和创建数据库了

!Pasted image 20250410175756.png

也是这里,就是服务端,采集到的,相关数据和解析

!Pasted image 20250411111816.png

然后这里是之前的相关封装其中Msg和ExtMsg等 额外附加数据可以看到是封装放到Report里的

!Pasted image 20250411111957.png

客户端的拼接和上报

!Pasted image 20250411112239.png

结构体这里,也要加上:

!Pasted image 20250411115605.png

断点可以采集到非空的fpsData相关数据

!Pasted image 20250411141921.png

三消的lua初始化相关

!Pasted image 20250411154812.png

解析一下,主逻辑脚本; 首先,是收集的结构体

!Pasted image 20250415100528.png

是一个mono的单例设置上报的时间间隔是5秒还有其他声明的变量例如SkipFrame就是跳过的帧数FailCheckInterval是发送失败后间隔多久才开始重新发送这里设定是60秒

!Pasted image 20250415100730.png

这是获取,对应操作系统的名称

!Pasted image 20250415102109.png

在Update函数里先跳过上述提及的5帧然后才开始采集

!Pasted image 20250415102418.png

这里是检测上次失败的时间间隔这里是大于60秒才会继续重发

!Pasted image 20250415102956.png

这里是发送网络消息的接口设置了超时是10秒然后重发次数还有失败多次后设置enable使能为false

!Pasted image 20250415103219.png

非常朴素的获取内存占用相关这个是不可以直接使用的因为还使用到Profiler性能检测的一些接口后面需要替换成各原生层的获取内存的相关接口

!Pasted image 20250415103921.png

这里是,上报拼接的,具体逻辑

!Pasted image 20250415105531.png

如果要还原原本的服务器上报逻辑参考这个注释操作即可一共修改3个地方

!Pasted image 20250418094607.png

跟日志上报区分一下服务端改成collect

!Pasted image 20250418151214.png

客户端也同步修改一下后缀:

!Pasted image 20250418151248.png

性能工具 内网服务器:运行测试程序,相关指令

cd /usr/local/games/lgcollecter/
nohup ./lgcollecter > output.log 2>&1 &
ps -elf | grep lgcollecter

可以看到,是正常运行的:

!Pasted image 20250421114219.png

如果需要,正常中止程序,在获取到进程号之后,直接kill就好,例如上述是这个

!Pasted image 20250423160259.png

kill 2400

进阶参考获取进程号和kill相关