linux服务器测试-ctr计算逻辑整理

这一周一直在忙ctr的计算,也是第一次接触公式计算,一方面总结一下公式逻辑,另一方面说一下中间遇到的坑。

先说一下ctr,就是点击数(click)和展示数(show)的比值(show表示一个物料在列表在30天内总的展示次数和,click表示一个物料在列表30天内被点击的次数的和),这个不能简单说就是做除法,从show值不同的维度和max值(5万)比对除法不同公式。。ps:以下show和click都是30天的取值的和。

1.一个物料在一个城市30天内show值,如果show值>5万:

    ctr=click/show(click和show取值范围是一个城市的)

2.当一个物料在一个城市的show<=5万,但是物料在全国的show>5万(物料可以发布多个城市):

    ctr=click/show(click和show取值范围是全国的)

3.当一个物料在全国的show<=5万,会触发新的计算公式

公式=(((max-show)/max)*CTR平均+(show/max)CTR)=(((max-show)/max)*CTR平均+(click/max))

ps:max=5万,click是该物料的点击数,show是该物料展示数,CTR平均取得均值

    3.1 当该物料全国的show<=5万&&该物料的品类在发布城市show>5万:

          CTR平均=click/show(品类在该城市click和show的和),其他的代入公式即可

    3.2 当该物料全国的show<=5万&&该物料的品类在发布城市show<=5万&&该物料的品类在全国的show>5万:

           CTR平均=click/show(品类在全国的click和show的和),带入公式计算即可

    3.3 当类别全国的show<=5万:

          ctr=0.0188(默认值)

测试点:30天累计,物料的在一个cityid,物料在全国,物料品类在一个城市show,物料的品类在全国的show,边界值5万,物料品类计算CTR平均中click和show包含自己的数据和非自己数据的总和,此外数据中涉及多个表的和所以造数据要考虑多表累加(这个我下面一会写一下还有别的坑),ps:累计计数需要考虑当天存在redis数据+前29天数据库的数据。

上面就是一些背景介绍,公式介绍具体细节操作,下面说一下。

1.stataserver服务的调用:

先看一下rd写的方法,如下:


这是一个tcp链接,所以需要需要建立tcp链接后,才能调用buildCache()方法进行统计,

先看一下建立一个tcp链接,如图:


在ScfHelper.java中创建一个tcp链接(rd告知url),在方法参数EnvEnum参数是枚举类型表示3个环境:test,sandbox和online,requestIp表示请求ip,如图:


剩下就是请求buildCache()方法即可,如图:


LoggerHelper类就是过去logid用于打印日志作为日志标识,方法问题可以快速定位。使用getLogStr()方法获取logid参数methodName表示环境,就是上面说的枚举EnvEnum的三个值。参数s1是token值,固定的

token="e89592a67bfcf2485201b26e223a07bb".返回boolen类型的的值。这里面还有一个问题就是框架会查找wf的config文件,如图:


没有修改本地配置文件会失败,所以按照个路径在本地电脑查找,如图:



找到对应服务的name,修改host,host为部署服务器的ip,port是服务端口号,如果想确定可以查一下如图:


对应服务查看端口号.除此之外config也有可能走工程的default_scf.config文件如图:



运行成功后会打印出,host,port和返回结果,如图:


服务端查看info日志结果:



同理调用getProductHistoryCTR()方法,查看服务端info日志:


这面计数click和show是2个方面,当天存在redis中非当天的存在数据库中。如果是redis的话就需要通过key来置换value值。遇到一个坑就是,我起初以为和其他服务一样都是链接一个redis,但是始终无法exists到key的存在,后来问rd才知道不是一个需要查看配置文件,凡事先看配置文件要有这个习惯,如图:


通过cat命令查看内容,结果如图:


连接redis可以python连接rdis库区连接,方便点就是rdm工具直接改一下:


运行方法,查看日志打印结果是否真的是修改的值,如图:


数据方面其实就是插入数据,可以使用sqlachelmy库写一个数据库映射,往里面插入,大概如图:


大概这些,有点麻烦,上面python脚本写的比较糙,简单方便测试。



评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值