mirror of
https://gitee.com/ulthon/ulthon_admin.git
synced 2026-08-30 12:45: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 测试套件
32 lines
2.0 KiB
PHP
32 lines
2.0 KiB
PHP
<?php
|
||
|
||
use think\migration\Migrator;
|
||
|
||
/**
|
||
* XHProf 性能日志 - 采样记录表
|
||
*
|
||
* 每次被采样的请求一条记录。耗时字段库内统一微秒、内存统一字节,展示层换算。
|
||
*/
|
||
class XhprofRun extends Migrator
|
||
{
|
||
public function change()
|
||
{
|
||
$table = $this->table('xhprof_run', ['id' => false, 'primary_key' => ['id']])
|
||
->setComment('XHProf 性能采样记录(每次请求一条)')
|
||
->addColumn('id', 'integer', ['limit' => 11, 'null' => false, 'signed' => false, 'identity' => true, 'comment' => '主键ID'])
|
||
->addColumn('node_id', 'string', ['limit' => 64, 'null' => false, 'default' => 'default', 'comment' => '节点ID(区分不同采集节点)'])
|
||
->addColumn('url', 'string', ['limit' => 500, 'null' => false, 'comment' => '请求完整 URL(超长截断)'])
|
||
->addColumn('simple_url', 'string', ['limit' => 255, 'null' => false, 'default' => '', 'comment' => '规范化 URL(去 query、数字段替换,聚合用)'])
|
||
->addColumn('method', 'string', ['limit' => 10, 'null' => false, 'default' => '', 'comment' => 'HTTP 方法'])
|
||
->addColumn('wall_time', 'biginteger', ['default' => 0, 'comment' => '总耗时(微秒,main() 的 wt)'])
|
||
->addColumn('cpu_time', 'biginteger', ['default' => 0, 'comment' => 'CPU 耗时(微秒,main() 的 cpu)'])
|
||
->addColumn('memory_peak', 'biginteger', ['default' => 0, 'comment' => '内存峰值(字节,main() 的 pmu)'])
|
||
->addColumn('request_time', 'decimal', ['precision' => 13, 'scale' => 3, 'default' => 0, 'comment' => '请求开始时间(REQUEST_TIME_FLOAT 浮点秒)'])
|
||
->addColumn('create_time', 'integer', ['limit' => 11, 'comment' => '入库时间戳', 'signed' => false])
|
||
->addIndex(['simple_url', 'request_time'], ['name' => 'idx_simple_url_time'])
|
||
->addIndex(['request_time'], ['name' => 'idx_request_time'])
|
||
->addIndex(['wall_time'], ['name' => 'idx_wall_time'])
|
||
->create();
|
||
}
|
||
}
|