常见问题 FAQ
接入相关
加了依赖之后,对性能有影响吗?
几乎没有。
业务线程总开销约 200-500 纳秒,比一次 SQL 执行小 1000 倍以上。一个 50ms 的接口,我们增加的开销不到 0.001%。
详细分析见 架构设计 → 性能数据。
队列满了怎么办?会丢数据吗?
会丢,但这是故意的。
dlz-lens 的设计原则是"永不阻塞业务线程"。队列满了直接丢弃,宁可丢几条调用记录,也不能影响业务接口的性能。
而且我们有分级丢弃策略——快 SELECT 最先丢,错误和事务最后丢。详细见 架构设计 → 过载保护。
如果觉得队列太小,可以调大 queue-capacity(默认 10000)。
生产环境可以用吗?
可以,但建议按需开启。
生产环境默认关闭,需要排查问题时通过配置中心临时打开,排完就关。
如果要常开,请:
- 设置用户名密码
- 通过网络策略限制访问 IP
- 根据实际流量调整队列和存储容量
支持多数据源吗?
支持。
所有 DataSource Bean 都会被自动包装,每条调用记录会带上数据源名称。
支持 ShardingSphere / MyCat 等分库分表中间件吗?
支持。
只要最终是走 JDBC 的,都能被拦截。分库分表中间件也是基于 JDBC 的。
IDE 跳转相关
点击跳转 IDE 不生效?
请检查:
- IDEA 是否正在运行 — 必须是打开的状态
- 项目是否在 IDEA 中打开 — 必须打开了对应的项目
- Allow unsigned requests 是否勾选 — Settings → Advanced Settings → Built-in server → Allow unsigned requests
- 63342 端口是否被占用 — IDEA 内置 HTTP API 默认用 63342 端口
- 文件路径是否匹配 — 确保 IDEA 中打开的项目路径和运行时的类路径对应
支持 VS Code / Eclipse 吗?
目前只支持 JetBrains 系列 IDE(IDEA / PyCharm / WebStorm 等)。
VS Code 支持在规划中(通过 vscode://file/ 协议)。
跳转的行号准确吗?
非常准确。
我们不是"猜"的行号,是直接从 StackTraceElement.getLineNumber() 拿的——这是 JVM 给出的精确行号,和你在 IDEA 里看到的行号完全一致。
Trace 相关
异步线程里的调用能追踪到吗?
目前版本只支持同步调用(同线程内的 Trace 传递)。
异步线程(@Async、线程池)的 Trace 传递在规划中,将通过 TransmittableThreadLocal (TTL) 实现。
微服务之间的 Trace 能串联吗?
目前版本不支持跨服务串联。
规划中:通过 HTTP Header 透传 TraceID,Feign / RestTemplate 自动传递,实现微服务全链路追踪。
MQ 消费端能续上 Trace 吗?
规划中。消息头里带上 TraceID,消费端自动恢复 TraceContext。
功能相关
支持 SQL 格式化吗?
当前版本显示原始 SQL。SQL 语法高亮和格式化在规划中(基于 Druid SQL Parser)。
支持 EXPLAIN 吗?
规划中。点击慢 SQL 可以一键执行 EXPLAIN,查看执行计划。
支持索引建议吗?
规划中(基础版本)。根据 SQL 条件和表结构,给出基础的索引建议。
Redis 支持到什么程度?
Redis 模块正在开发中。将支持:
- Lettuce 和 Jedis 两种客户端
- 所有常见命令(GET/SET/HGET/HSET/ZRANGE 等)
- Key、参数、返回值大小
- 慢命令标记
HTTP 调用支持哪些客户端?
HTTP 模块在规划中,将支持:
- RestTemplate
- WebClient
- Feign / OpenFeign
安全相关
控制台会不会泄露敏感数据?
有几点保护:
- 生产环境默认关闭 — 需要手动开启
- 可选登录认证 — 设置用户名密码后才能访问
- 参数脱敏选项 — 可配置敏感字段自动脱敏(规划中)
- 内存存储 — 数据只在内存里,不持久化,重启就没了
建议生产环境通过网络策略限制只有内网 IP 能访问。
会把 SQL 和参数发到外面吗?
绝对不会。
所有数据都存在应用进程的内存里,WebSocket 只推送到你本地的浏览器。没有任何外部数据上报,没有云端通信。
这也是嵌入式工具的一大优势——数据完全在你自己手里。
对比相关
和 P6Spy 比怎么样?
P6Spy 是 dlz-lens 的直接竞品,但 dlz-lens 是全面升级:
- P6Spy 只能打印 SQL 日志,dlz-lens 有完整的 Web 控制台
- P6Spy 没有调用者定位,dlz-lens 精准到行号且一键跳 IDE
- P6Spy 没有 Trace 概念,dlz-lens 有故事回放
- P6Spy 在业务线程上做格式化和写日志,开销比 dlz-lens 高 10-100 倍
详细对比见 竞品对比。
和 Druid 监控比怎么样?
Druid 是连接池监控,核心价值是连接池管理。SQL 监控只是附加功能,而且:
- 没有调用者定位
- 没有 Trace 串联
- 没有故事回放
- 没有 IDE 跳转
两个可以一起用——Druid 管连接池,dlz-lens 做调试。
和 SkyWalking 比怎么样?
不竞争,是互补。SkyWalking 是生产环境全链路 APM,功能全但很重,需要独立部署。dlz-lens 是开发测试环境的调试神器,嵌入式零部署,在行号级定位和故事回放上做得更细。
详细对比见 竞品对比。
其他
为什么叫 dlz-lens?
lens 是"透镜"的意思。
就像透镜能让你看清微小的细节,dlz-lens 能让你看透代码运行的每一次 IO 调用——谁调用的、参数是什么、花了多久、在不在事务里、前面执行了什么。
而且它不局限于 SQL——SQL Lens、Redis Lens、HTTP Lens,都是 dlz-lens 的一部分。
是开源的吗?
是的,遵循 Apache 2.0 协议。你可以自由使用、修改、分发。
怎么贡献代码?
欢迎提 Issue 和 PR!项目地址:GitHub - dlz-io/dlz-lens
有问题找谁?
- 提 GitHub Issue
- 加用户群(详见 GitHub README)
- 发邮件到 support@dlz.top