字节实习经历

image-20210830164334990

[TOC]

线上线下表现不一致?

1.查看日志

方式1 通过日志查看:通过 LogID 查询调用链,查看上下游调用耗时,详细查看包括上游 call log 和下游 access log

  1. 上游 call log 在实例的 /opt/tiger/toutiao/log/rpc/ 路径下,日志中包含了:

    1. 调用总耗时(cost=xx us)

    2. 建立连接耗时(conn_cost=xx us)

    3. 从连接读数据耗时(read_cost=xx us)

    4. 向连接写数据耗时(write_cost=xx us)

2.下游 access log 在实例的 /opt/tiger/toutiao/log/app/ 路径下的 p.s.m.access.log 中,包含:

  1. 处理总耗时(cost=xx us)
  2. 从连接读数据耗时(read_cost=xx us)
  3. 向连接写数据耗时(write_cost=xx us)
  4. 业务逻辑处理耗时(handler_cost=xx us)

2.开始怀疑是不是下游接口没有对。去平台调用接口。 2.确定相互的idl

3.发现没有日志。迁移实例。

(1)access 耗时逻辑 handler

(2) Mesh 的问题。

4.部分请求打基准环境。有些没打。

5.咨询Oncall。

webshell发送的请求,或者版本太低。

6.接口的idl。

上游超时,下游没有日志

此类错误都属于 RPC 调用超时,通过以下方式排查:

  1. 通过调用链或日志查看阶段耗时:
    1. 方式1 通过日志查看:通过 LogID 查询调用链,查看上下游调用耗时,详细查看包括上游 call log 和下游 access log
      1. 下游 access log 在实例的 /opt/tiger/toutiao/log/app/ 路径下的 p.s.m.access.log 中,包含:
        1. 处理总耗时(cost=xx us)
        2. 从连接读数据耗时(read_cost=xx us)
        3. 向连接写数据耗时(write_cost=xx us)
        4. 业务逻辑处理耗时(handler_cost=xx us)
    2. 方式2通过Tracing查看:访问 https://pigeon.byted.org/trace/search,输入psm,可以输入耗时来过滤高耗时请求,点开要确认的psm的耗时详情,展开Logs,就可以看到如下的阶段耗时:

如果下游没 access 日志,access 日志是在业务的 handler 逻辑执行完毕后打印的(因为要统计 handler 耗时等),因此如果上游超时,而下游没有对应的 access 日志,说明代码执行卡在 handler 逻辑里了。

什么叫迁移数据到DB?

兜底策略是什么情况?