当前位置: 首页 > news >正文

化妆品的网站设计方案企业网站引导页模板

化妆品的网站设计方案,企业网站引导页模板,乐清开发网站公司,wordpress正计时代码冲突 在看到项目工程里kafka 生产端配置的batch.size为500,而实际业务数据平均有1K大小的时候;我有点懵了。是的,这里矛盾了;莫非之前的作者认为这个batch.size是发送的条数,而不是kafka生产端内存缓存记录的大小&…

冲突

在看到项目工程里kafka 生产端配置的batch.size为500,而实际业务数据平均有1K大小的时候;我有点懵了。是的,这里矛盾了;莫非之前的作者认为这个batch.size是发送的条数,而不是kafka生产端内存缓存记录的大小? 实际业务数据有1K大小;那么正式环境的生产端岂不是没有用到kafka缓存池带来的好处。

最近也正在了解并解读kafka生产端源码,被kafka的设计所折服时;恼人的现实和美好的理论存在巨大的矛盾, 引起了我的怀疑和推测。怎么办?先和技术领导沟通下吧。

在请教过技术领导为什么这里设置为500时,获得了一个非预期的回答:“这个项目已经稳定运行5年了,也没什么问题呀”; 想必大家也遇到过类似的情况吧~~
想要说服领导,更改这个不是最优的设置,需要拿出更多的证据。如何去做了?

求证之路

为了验证batch.size 为500不是最优的(其实是为了验证kafka发送端用缓存池还是不用缓存池的区别)。写了两个对比不超过10行代码的kafka生产端代码。
第一个case是:发送固定100W消息量。对比batch 500B 和16K 两者的耗时,GC次数,GC耗时等的对比
第二个case是:在固定时间内。对比batch 500B和16K两者发送消息量,GC次数,GC耗时等的对比
当然msg大小为业务大小固定1KB。

具体代码如下

case1: 发送固定100W消息量,耗时,GC等信息对比

java 发送端代码

long begin = System.currentTimeMillis();
for(int j=1000;j>0;j--){for(int i=0;i<1000;i++){kafkaProducerTest.send(topic,msg);}kafkaProducerTest.flush();//每发送1000次,sleep 500毫秒try {Thread.sleep(500);} catch (InterruptedException e) {throw new RuntimeException(e);}
}
long end = System.currentTimeMillis();
log.info("cast time:" + (end-begin));
监控工具: jstat

使用了JVM 原生的GC 监控工具对GC次数和耗时进行监控
命令如下

jstat -gcutil pid 1000

输出:主要是看YGC,YGCT,FGC,FGCT,GCT
在这里插入图片描述

统计结果

在这里插入图片描述

为了减小误差,每个batch.size,都测试了两遍,取平均值做为底数。

从统计结果可看到

  • 使用了缓存池,比不使用,耗时减少了64.51%。(这里减了500*1000,是为了减少sleep(500)的影响),吞吐量也就提高了一倍
  • 使用了缓存池,比不使用,GC次数降低了27%,GC耗时减少了39%

数据还蛮符合事先猜测:吞吐量,GC次数,GC耗时;在使用了缓存池后都比不使用要优异

case2 持续3分钟,两者发送消息量的统计,GC等信息统计

java代码

   long maxTime = 3 * 60 * 1000l;while (true){for(int i=0;i<1000;i++){kafkaProducerTest.send(topic,msg);}count ++;kafkaProducerTest.flush();//发送1000条,sleep 10毫秒try {Thread.sleep(10);} catch (InterruptedException e) {throw new RuntimeException(e);}//只跑maxTimeif(System.currentTimeMillis() - begin > maxTime){break;}
}
log.info("count:" + count);
统计结果

在这里插入图片描述

从统计结果可看到

  • 使用了缓存池,比不使用缓冲池;消息发送量提高了78%。即在相同时间内,使用缓冲池,能提高1倍以上的吞吐量
  • 使用了缓存池,比不使用缓冲池;GC次数大概提高了27%,而GC耗时基本相同。

总结

从上面的统计来看,如果想要提高发送消息吞吐量,请尽量使用缓存池。你的项目中,真的使用了缓存池吗?

曾经解读过kafka生产端内存模型的设计;以及由kafka内存池模型设计,联想到多年前初学java时的认知。始终感觉有点偏向理论,这篇算出一个对之前理论性设计的论证,实际实践后的数据证据吧。如果要用一句话来总结这次的感悟和行动,想借用陆游的一句大家都很熟悉的绝句来描述:纸上得来终觉浅,绝知此事要躬行。

参考资料:
https://blog.csdn.net/chenhcao628/article/details/108038172 《jstat -gcuti命令分析 》
https://juejin.cn/post/7259300929026916409 《读kafka生产端源码,窥kafka设计之道(下)》
https://juejin.cn/post/7259300929026916409 《java内存管理 美好的期望与现实的残酷》
《深入理解Kafka:核心设计与实践原理》
《kafka源码》

http://www.yayakq.cn/news/621459/

相关文章:

  • 招商银行和建设银行网站功能对比营销网站建设哪家快
  • 深圳网站建设公司模板0基础学网站设计
  • 怎么查看网站的ftp软件应用商店下载免费
  • 全球网站流量排名100小红书seo是什么意思
  • 深圳制作网站主页杭州网站维护公司
  • 全国做网站的百度搜索推广怎么做
  • 襄阳网站建设找下拉哥科技凡客诚品创始人
  • 高端网吧电脑配置重庆网站搜索引擎seo
  • 公司百度网站怎么做泉州软件开发制作
  • 用asp做的一个网站实例源代码陕西网站建设培训
  • 濮阳网站网站建设做单位网站的公司吗
  • 珠海网站建设工程短链接生成接口
  • 天津手机网站公司网站建设交接清单
  • wordpress手机菜单导航seo自动点击排名
  • 竞价网站策划网站开发的毕业设计题目
  • 如何做网站的登录注册北海网站优化
  • 网站建设_免费视频怎样修改网站标题
  • 电商网站开发数据库设计开发板是什么
  • 厦门市app开发网站建设公司wordpress 英文转中文
  • 营销形网站dw做的网站怎么去掉
  • 如何自己买域做网站网站运营是做什么的
  • 唐山培训网站建设优改网logo设计免费官网入口
  • 网站建设文字教程网站建设预算和维护
  • 单本小说网站网站备案查询不到说明啥
  • 音乐网站开发案例安徽工业大学两学一做网站
  • 衡水建设企业网站免费申请网站空间
  • asp在网站开发中起什么作用wordpress 移动主题
  • 那个网站做logo兼职我是做网站的 怎么才能提高业绩
  • 做网站和推广找哪家好平顶山做网站推广
  • 网站建设代码问卷调查泉州自主建站模板