Arthas实践
<h1>命令监听</h1>
<p>watch com.alibaba.youku.search.business.proc.merger.AllMergerProc resetStandardBaseList '{params,returnObj}' 'params[0].utdid=="YUWpMk2PeaADAGXxltQFQ/xb"' -n 5 -x 3
watch com.alibaba.youku.search.business.standard.sort.StandardComplexSort sort '{params,returnObj}' 'params[2].utdid=="YUWpMk2PeaADAGXxltQFQ/xb"' -n 5 -x 2
watch com.alibaba.youku.search.business.standard.util.BtsUtil isModuleRank '{params,returnObj}' 'params[0].utdid=="YUWpMk2PeaADAGXxltQFQ/xb"' -n 5 -x 3
watch com.alibaba.youku.search.business.proc.AppendChannelPageProc buildHeaderNode '{params,returnObj}' -n 5 -x 3
watch com.alibaba.youku.search.business.proc.AppendChannelPageProc buildTabItems '{params[1].getRequestQuery("originalParamMap"),returnObj}' 'params[0].ugcChannelTag == "1076737516@219642"' -n 5 -x 3 </p>
<h1>监听命令并回放</h1>
<p>tt -t com.alibaba.youku.search.business.proc.ranker.ModuleDocRankerProc getModuleMap 'params[5].utdid=="YUWpMk2PeaADAGXxltQFQ/xb"'
tt -t com.alibaba.youku.search.business.proc.merger.AllMergerProc resetStandardBaseList 'params[0].utdid=="YUWpMk2PeaADAGXxltQFQ/xb"'
tt -t com.alibaba.youku.search.business.standard.sort.StandardComplexSort sort 'params[2].utdid=="YUWpMk2PeaADAGXxltQFQ/xb"'
tt -t com.alibaba.youku.search.business.standard.convert.ScgShowConvertUtilSd processShowScgInfo 'params[1].utdid=="YUWpMk2PeaADAGXxltQFQ/xb"'
tt -t com.alibaba.youku.search.business.standard.util.BtsUtil isModuleRank 'params[0].utdid=="YUWpMk2PeaADAGXxltQFQ/xb"' </p>
<h1>热更新文件</h1>
<h2>反编译代码</h2>
<p>jad --source-only com.alibaba.youku.search.service.service.impl.SearchServiceImpl > /tmp/SearchServiceImpl.java</p>
<h2>编辑反编译之后的代码,加了一行日志看效果</h2>
<p>vim /tmp/SearchServiceImpl.java</p>
<h2>sc查找加载SearchServiceImpl的ClassLoader</h2>
<p>sc -d *SearchServiceImpl | grep classLoaderHash</p>
<h2>mc内存编绎代码(-c指定classLoaderHash)</h2>
<p>mc -c 3c153a1 /tmp/SearchServiceImpl.java -d /tmp
编译完会有一个class到输出路径,如:
/tmp/com/alibaba/youku/search/service/service/impl/SearchServiceImpl.class</p>
<h2>redefine热更新代码</h2>
<p>redefine /tmp/com/alibaba/youku/search/service/service/impl/SearchServiceImpl.class</p>
<p>Arthas实践--使用redefine排查应用奇怪的日志来源
<a href="https://github.com/alibaba/arthas/issues/263">https://github.com/alibaba/arthas/issues/263</a></p>