导出、截图与日志
导出、截图、日志这三类问题经常表面看起来像一个问题,实际上分别可能卡在代理超时、渲染资源、日志库配置、调试方式选择等不同层面。这页先把高频排障路径理清楚。
应用集市导出数据或 PDF 时提示 Gateway Time-out,先查哪里?
先查代理层超时,不要一上来就怀疑导出功能本身坏了。
如果部署前面有 Nginx 之类的代理,优先检查:
proxy_connect_timeoutproxy_send_timeoutproxy_read_timeoutsend_timeout
如果页面提示的超时时间和代理配置里的超时时间一致,通常就是代理先把请求掐掉了。
如果代理超时时间已经调大,导出还是提前 timeout 呢?
这时就不能只盯 Nginx 了。
高频原因还包括:
- WAF 或中间安全设备有更短的超时策略
- 上层网关或 LB 有独立超时限制
- 中间网络层把长请求截断
也就是说,“页面导出 timeout”不一定是 HENGSHI 本身先超时,链路里的任意一层都可能先断。
导出日志时报 Connections could not be accquired from the underlying database,通常意味着什么?
高频原因是:日志数据库配置有问题,并不一定是 metadb 有问题。
先检查:
conf/hengshi-sense-env.sh- 其中的
HS_SYSLOG_*相关配置 - 对应用户名、密码、库权限是否真的可连通
如果你们把日志数据库和 metadb 分开配了,这类问题更常见。
实时调试导出和历史日志导出,应该用哪个?
按场景选:
| 场景 | 更适合 |
|---|---|
| 准备复现一个问题,希望从现在开始抓日志 | 实时调试导出 |
| 问题已经发生过,想回头导出某个时间段 | 历史日志导出 |
如果你是在排“刚刚发生的一次异常”,通常应该先把实时调试级别和时长设置好,再复现问题。
为什么开了实时调试,却导不出想要的日志?
最常见的原因不是系统没记,而是开启前日志级别没配好,或者太早退出了实时调试。
建议顺序:
- 先设置各模块日志级别
- 再开启实时调试
- 复现问题
- 立刻导出
如果你已经退出实时调试,再想补导,只能回头看历史日志里有没有对应时段。
日志是不是越多越好?
不是。
DEBUG / TRACE 虽然更利于排障,但也会:
- 增加日志量
- 占更多存储
- 拉高定位成本
所以更好的做法是:排障时短时间开启高等级日志,结束后及时关闭,并定期清理运行日志。
系统日志为什么还要专门清理?
因为系统运行时会持续产生大量日志,如果不清理,会占用大量存储并拖累运行。
系统支持:
- 每天定时自动清理
- 手动清理
关键不是“有没有清理功能”,而是你们要不要把“保留最近多少天日志”作为正式运维策略。
截图 / 导出 / 日志问题,排障时第一优先该收集什么?
通常先收集这三类信息:
- 浏览器里具体报错时间和报错提示
- 代理层 / 网关层是否有 timeout 或拦截记录
- 系统调试日志或导出的服务器端历史日志
如果没有这些材料,很多“导不出来”类问题很容易在产品、网络、数据库之间来回甩锅。
进一步阅读: