@ronaldoooo
2015-02-02T03:42:31.000000Z
字数 1550
阅读 1004
2015/02/02 蔡乾
接口调用
TRS数据库
性能
2014年11月13日,移动站进入自动运行测试。2015年1月20日,由于评论频道进行了整站发布(于22日查明),导致移动站自动转稿程序重复请求超过70000条数据,导致TRS接口持续崩溃。
2月2日,TRS平台又发现资源占用较高的现象。经核查移动站运行状况正常。为了确保移动站以及TRS后台的正常运行,以及发现移动站转稿逻辑中可能的潜在漏洞,现整理移动站所有调用TRS接口的位置以及调用频率,以供参考。
项目 | 描述 |
---|---|
接口名称 | ID参数接口 |
接口功能 | 根据单篇稿件ID,返回xml格式稿件相关信息 |
接口地址 | http://trs.cnhubei.com:8000/wcm/docbyid |
调用范例 | http://trs.cnhubei.com:8000/wcm/docbyid?id=3137359 |
参数名称 | id |
参数说明 | 稿件在TRS中创建时所分配的唯一ID |
调用背景 | 各首页数据每5分钟更新一次,在更新时会将 首页XML数据中 的 PC页链接地址 转换成对应 MOB站链接地址 。在此过程中,会根据稿件ID查询其创建日期,再根据其创建日期得到其MOB站存放路径。 但由于此处已用缓存优化,最近的5000条稿件地址不会重复调用接口查询,仅会在缓存未命中时才会发起接口调用。 |
调用频率 | 在 2015/02/02 10:00 粗略统计了现有的12个首页XML数据,在首页生成时一共需要转换的url地址在100条左右。目前的首页数据缓存量为5000条,故可以认为单篇稿件在5分钟一次的频繁更新中,只会调用ID参数接口 一次。 依照之前测试中的统计,缓存的命中率平均在95%以上,所以此接口平均调用频率在每5分钟5次以内。峰值时调用频率可能高于此数值,为首页中这5分钟内新增的稿件数量。 |
实际调用情况 | 在 9:00-10:00 进行了8次测试,从本机发起转换首页的请求,到服务器处理完成并返回数据,相差时间都在 1s 以内。故转换首页的进程对数据库CPU及内存的占用时间很低。 由于此时段可能不是首页更新高峰时期,具体峰值的情况尚待日志记录。 |
最坏情况测试 | 最坏情况是缓存全都不命中。此接口会对每一篇需要转成移动站url的地址调用一次接口。 测试中我删除了缓存文件,再进行生成首页的操作。从发起请求,到服务器处理完成返回响应,实际处理时间为16秒,接口占用时间只会小于16秒。(由于包含了本地服务器重新部署缓存的时间,实际接口占用时间应该远小于此值。) |
项目 | 描述 |
---|---|
接口名称 | 时间参数接口 |
接口功能 | 根据设定的起始时间,查询这一段时间发出的新稿信息 |
接口地址 | http://trs.cnhubei.com:8000/wcm/docbypubtime |
调用范例 | http://trs.cnhubei.com:8000/wcm/docbypubtime?last_time=1422836678 |
参数名称 | last_time |
参数说明 | 设定的起始时间,所有在此时间之后发布的稿件信息都会被返回。 此值会被转稿程序记录,并在每一次转稿完成后保存为此次所转稿件的最大pubtime,在下一次请求中以此保存的值为参数来发起请求。 |
调用背景 | 转稿程序会记录一个 last_time 值,每5分钟调用一次该接口,请求自 last_time以后发布的所有稿件信息。 |
调用频率 | 每5分钟一次 |
实际调用情况 | |
最坏情况 | 当TRS平台在短时间内大量发布,接口方会将大量数据一起加入内存,此时可能导致JVM内存溢出。 调用方对于这种情况已加入邮件功能,在TRS接口未正常返回数据时发送邮件告知管理员。 |