4.实时推荐系统性能优化-GC排查优化

经过上节匹配优化后,通过对结果集分组,降低数据量级,使得系统接口访问量得到了显著的提升。但此时需要注意的是,我们通过业务区分降低数据量级并没有优化系统代码运行性能。由此节开始,我们来进行系统性能优化。首先是在系统运行时,通过监控发现运行时系统GC频繁。所以详细分析了下系统中存在的GC问题。

继续阅读4.实时推荐系统性能优化-GC排查优化

3.实时推荐系统性能优化-匹配优化

(1)流程优化

上节说到在实时匹配中,map.putAll被丢入了大量数据导致。由于HashMap这里我们无法得到实质的性能优化,所以只能从业务流程上来进行优化。

我们先来看一下原匹配流程

优化后匹配流程

这里将map.putAll对于结果处理进行前置,通过配置后台更新过配置后,系统先将所有结果集处理完成后,丢入内存。这里对于系统有两点显著提升。

1.系统在匹配时无需对map进行重复计算。节约系统性能开销。

2.系统匹配时无需创建大量map对象,系统young gc次数显著降低。

(2)业务分组

上述优化中,虽然解决了系统中map对象重复多次操作问题。但是对于系统中大量配置的奖品,O(n)复杂度是避免不了的。以此带来的问题是系统使用越久、奖品越多,运算性能将逐渐降低。

解决此问题有两种方式

1.采用rate算法,涉及到系统匹配逻辑重构。

2.奖品分组,降低O(n)中n值得取值范围。

由于时间有限,需赶在618大促前达到预期性能。在刚接手系统随即对系统进行重构难度大、风险高。而且人手有限,整个项目只有我一个人,即要跟进业务需求上线,又需进行系统性能优化。所以这里采用第二种方案,对奖品根据发奖通道进行分组。

尽力保证单一场景下奖品数量在50个左右。相较于无分组时在数千奖品中进行匹配,此优化可以对系统性能带来大幅提升。复杂度问题得解决,使用rate算法是治本方案。在此我们两步走,先满足大促峰值性能,再进行提升优化。

2.实时推荐系统性能优化-系统性能瓶颈分析

很多人拿到系统的第一步,估计就是直接看代码,找瓶颈点了。其实这样的效率并不高。很多系统结构复杂,直接修改代码很有可能结果时改了一片代码,最后进行性能测试发现几乎没用提升。这里我们使用jProfiler进行代码性能分析。

继续阅读2.实时推荐系统性能优化-系统性能瓶颈分析

1.实时推荐系统性能优化-背景

18年底时,接手了实时推荐系统。系统设计之初为了进行千人千面,精准营销活动。对用户实时推送广告等消息。由于在经历了18年双11时,系统性能瓶颈,无法满足实时运算需求,导致整体实时推荐服务被降级。所以在接手系统后,必须对系统进行性能优化改造。

此次优化使得系统单机性能由qps30提升至qps300,使得300台服务器集群下可以在大促期间满足qps6万的预期目标。

继续阅读1.实时推荐系统性能优化-背景

在集群环境下,偶尔数据无法取出的问题解决

最近在用户使用系统时,出现偶尔数据无法取出,但有时又正常的奇怪现象。刚开始以为是用户操作是session超时等问题,后来排查代码一直也没有发现问题。就搁置没有处理。

今天在部署新系统时,采用灰度发布的形式。在上线部分机器后查看日志,发现了一些空指针异常。看异常抛出的位置,感觉跟前段时间的问题应该相关。

继续阅读在集群环境下,偶尔数据无法取出的问题解决

OS X 在QQ语音时,背景音变小的解决方法

用了近两年的OS X的QQ,一直被在QQ语音或视频时不能看视频或听歌所困扰。后来终于在网上搜到了解决方法:
1. 打开QQ,但是不要视频,或者挂断现有的视频连接。
2. 打开终端,输入
printf “p *(char*)(void(*)())AudioDeviceDuck=0xc3\nq” | lldb -n QQ
3. 然后在视频时背景音量就正常了

为网站开启HTTPS协议

1.为什么要使用HTTPS协议

目前互联网中HTTP是一种非常不安全的明文传输协议,在用户使用HTTP协议访问网站时,其通信数据非常容易被中间人获取。由于传输数据没有被加密、用户数据可以直接被恶意攻击者获取。
使用SSL证书可以有效的保护客户端与服务器间通信内容不被轻易获取。HTTPS加密传输协议通过SSL加密通道对客户端与服务器间数据进行加密后进行传输,即便被人抓包也很难获取其通信内容。

继续阅读为网站开启HTTPS协议

在使用xstream解析xml文件时抛出com.thoughtworks.xstream.io.StreamException: : 前言中不允许有内容 的异常

在使用xstream时解析文件一直都很正常,但是突然有一天部分xml文件解析时,会抛出com.thoughtworks.xstream.io.StreamException: : 前言中不允许有内容 的异常。

1

继续阅读在使用xstream解析xml文件时抛出com.thoughtworks.xstream.io.StreamException: : 前言中不允许有内容 的异常