请教一下 OBProxy 日志里 sm_id 的含义?

obproxy.log 里在建立连接后有一句日志:

INFO  [PROXY.CS] ob_mysql_client_session.cpp:236 [89116][Y0-7FB059DAA2E0] [lt=11] [dc=0] Starting new transaction using sm(cs_id=16, get_transact_count()=0, sm_id=21)

请问 这个 sm_id 是什么含义?是怎么来的? 跟客户端(比如说 JAVA)里的连接池里的连接的信息有什么联系吗?

sm_id 是 obproxy 的内部实现结构,对应一个客户端连接。主要是内部排查问题使用。

如果和客户端连接关联,可以关注cs_id字段

1 个赞

有一个疑问,在一个 wait_timeout 超时断开连接的场景中,我发现使用 cs_id 搜索 obproxy.log 只能找到如下断开连接的信息:

[2024-03-06 10:20:31.487588] INFO  [PROXY.SS] ob_mysql_server_session.cpp:177 [28971][Y0-7F9E7CEE63A0] [lt=76] [dc=0] server session is closing(ss_id=32260, server_sessid=3221628065, server_ip={10.186.56.90:2881}, cs_id=99558, proxy_sessid=772992245434613999)
[2024-03-06 10:20:31.487608] INFO  [PROXY.CS] ob_mysql_client_session.cpp:93 [28971][Y0-7F9E7CEE63A0] [lt=8] [dc=0] client session destroy(cs_id=99558, proxy_sessid=772992245434613999, client_vc=NULL)

而下面这句更关键的日志中并没有 cs_id 的信息,只有 sm_id 的信息,这对于搜索日志来说会很容易遗漏关键信息,对我造成了很大的困扰。另外使用 Y0-7F9E7CEE63A0 这个 trace_id 过滤 obproxy.log 会输出大量与这个连接无关的日志,无法用来筛选:

[2024-03-06 10:20:31.487072] WARN  [PROXY.SM] state_client_request_read (ob_mysql_sm.cpp:543) [28971][Y0-7F9E7CEE63A0] [lt=19] [dc=0] ObMysqlSM::state_client_request_read(event="VC_EVENT_INACTIVITY_TIMEOUT", sm_i
d=115222, client_vc=0x7f9e7ced6120)

请问:

  1. 未来日志中可以统一 cs_id 和 sm_id 吗?
  2. 未来 obproxy.log 可以通过 trace_id 来过滤一个连接的所有日志吗?
  3. 可以帮忙说明下日志中 [PROXY.SM]、[PROXY.CS]、[PROXY.NET]、[PROXY.SS] 的含义吗?