视频微服务

Date: 2019/12/02 Categories: 工作 Tags: mcp++



  • sched_info.cpp:SchedInfo::do_next_step():
    • 调用了proto_to_request()将输入转换为server特有的proto
  • req_rsp_helper.cpp: 一些格式转换工具
  • mod_video.h:CModVideo: 请求处理class
  • mod_video.h:CModVideo::m_ptr_ol : CRcmVideoInterface: 实际的处理类p_impl, 但并非指针
  • mod_video.cpp:CModVideo::run(): m_video_recommender.GetVideoRcmDocs() 召回函数, 在GetFinalFMRecallList()后是一些过滤和收集的代码-> m_video_fm_docs
  • GetFinalFMRecallList(): 实际调用的算法
  • PushVideoListToMap做最后的结果收集m_video_fm_docs ->m_video_rcm_docs_map
  • GetFinalRcmListEBatch(), 输入m_video_rcm_docs_map
  • PackResponsePkg(), 将返回的文档填入response pb

Command

  • dev: local_make_pkg.sh, 打好得包名为*-deploy.tar
  • whiteboard
  • deploy:

    ./local_deploy.sh debug  nodata kuaibao_score_online
    
  • score l5 = 65048705 : 65536

gdb

  1. forward_index, 查看mcd返回

    list search_quality::qrw::v2::CNetworkHelper::batch_send_and_recv_csthash
    dprintf 714, "retcode = %d\n", dst_arg._retcode
    
  2. 查看score结果

    l search_quality::news_rcm::Scorer::accept
    
  3. score是否打分, 在rcm_video_recall_fm下搜索PushVideoListToMap, bool变量表示是否要打分, 为啥不搞个配置文件呢

  4. 定义断点, 只在第一次触发时break

    break 61
    commands
    silent
    printf "%d\n", d.m_doc_id
    disable 1
    cont
    end
    

定义gdb函数

define P
enable 1
cont
end
  1. 正排超时->不同数据中心

流量复制

找一个源l5 score 64507969:196608 64500993:65536

按照约定的端口号,比如打分是60128, 启动服务时需要用相同端口

tcpcopy页面里建立流量复制

内存泄漏

原因: 打分的输入不同队列中有重复的doc, 而我们的容器实现时对doc id做了去重, 丢掉了重复的doc对应的指针, 导致内存泄漏

resource loading

这里问题很大, dict_manager.cpp