mirror of
https://gitee.com/ulthon/ulthon_admin.git
synced 2026-08-30 20:55:32 +08:00
- XhprofProfileParserService(Base/App):纯数组解析 jsonl 行, meta 字段以真实 fixture 为准;simple_url 缺失兜底与采集端回调同算法; watch 正则按 callee 物化(ct/wt_sum/wt_max),非法正则编译计 fail 跳过 - XhprofLogReaderService(Base/App):增量读取,半行缓冲超限整行丢弃 (不照抄 nginx 8MB 强制切行);EOF 无换行半行不 yield 不推进 offset; 进度不自动落盘,由导入侧在同一事务内显式 savePosition - XhprofLogImport 定时任务(Base/App):不受 XHPROF_ENABLE 门控, runs-*.jsonl 按文件名序增量导入;run 逐条 insert + detail chunk 20 insertAll + run_watch insertAll 与 position 同事务落盘;导至 EOF 后 只删已导完文件 - 修复 T1 缺陷:request_time decimal(12,3) 装不下 10 位时间戳, Scheme 与 migration 同步改 decimal(13,3) - 新增 parser 单元测试(真实 fixture 断言,9 用例 42 断言) 与 jsonl fixture;phpunit 注册 unit 测试套件
56 lines
2.3 KiB
PHP
56 lines
2.3 KiB
PHP
<?php
|
||
|
||
namespace app\admin\scheme;
|
||
|
||
use app\common\scheme\BaseScheme;
|
||
use app\common\scheme\attribute\Table;
|
||
use app\common\scheme\attribute\Field;
|
||
use app\common\scheme\attribute\Component;
|
||
use app\common\scheme\attribute\Index;
|
||
|
||
#[Table(name: 'ul_xhprof_run', comment: 'XHProf 性能采样记录(每次请求一条)')]
|
||
#[Index(columns: ['simple_url', 'request_time'], name: 'idx_simple_url_time', type: 'NORMAL')]
|
||
#[Index(columns: ['request_time'], name: 'idx_request_time', type: 'NORMAL')]
|
||
#[Index(columns: ['wall_time'], name: 'idx_wall_time', type: 'NORMAL')]
|
||
class XhprofRun extends BaseScheme
|
||
{
|
||
#[Field(type: 'int', length: 11, nullable: false, unsigned: true, autoIncrement: true, primary: true)]
|
||
public $id;
|
||
|
||
#[Field(type: 'varchar', length: 64, nullable: false, default: 'default', comment: '节点ID(区分不同采集节点)')]
|
||
#[Component(type: 'text', options: [])]
|
||
public $node_id;
|
||
|
||
#[Field(type: 'varchar', length: 500, nullable: false, comment: '请求完整 URL(超长截断)')]
|
||
#[Component(type: 'text', options: [])]
|
||
public $url;
|
||
|
||
#[Field(type: 'varchar', length: 255, nullable: false, default: '', comment: '规范化 URL(去 query、数字段替换,聚合用)')]
|
||
#[Component(type: 'text', options: [])]
|
||
public $simple_url;
|
||
|
||
#[Field(type: 'varchar', length: 10, nullable: false, default: '', comment: 'HTTP 方法')]
|
||
#[Component(type: 'text', options: [])]
|
||
public $method;
|
||
|
||
#[Field(type: 'bigint', default: '0', comment: '总耗时(微秒,main() 的 wt)')]
|
||
#[Component(type: 'text', options: [])]
|
||
public $wall_time;
|
||
|
||
#[Field(type: 'bigint', default: '0', comment: 'CPU 耗时(微秒,main() 的 cpu)')]
|
||
#[Component(type: 'text', options: [])]
|
||
public $cpu_time;
|
||
|
||
#[Field(type: 'bigint', default: '0', comment: '内存峰值(字节,main() 的 pmu)')]
|
||
#[Component(type: 'text', options: [])]
|
||
public $memory_peak;
|
||
|
||
#[Field(type: 'decimal', precision: 13, scale: 3, default: '0.000', comment: '请求开始时间(REQUEST_TIME_FLOAT 浮点秒)')]
|
||
#[Component(type: 'text', options: [])]
|
||
public $request_time;
|
||
|
||
#[Field(type: 'int', length: 11, unsigned: true, comment: '入库时间戳')]
|
||
#[Component(type: 'date', options: [])]
|
||
public $create_time;
|
||
}
|