基于机器学习的JVM调优可行性概述

可能已经有这方面的动作了,只是我还不知道吧,管它呢...   先写出来看看,有人提醒我xxx已经在做这个了也行。



一、【差异化的jvm调优】


DOMS设备运营管理系统。主要功能包括下发配置、监控告警、定时任务等功能(目前缺少统计、数据可视化功能,这不是本篇讨论的主题,以后有机会再讨论)。
持续在线、并发,再加上不同的运行习惯、网络拓扑对运行环境有不同的诉求,使得机器学习这样的手段有了施展的空间。


jvm(Java virtual machine)是基于java的程序运行的基础。我们也可以这样问,为什么前台swing的java虚拟机参数要和后台数据处理的java虚拟机用同样的参数运行?这合理吗?jvm的运行参数有600多项,凭经验、一概而论,没有运行环境的考量,这显然是不合理的。前段时间还发生了几起因为内存调校不当导致卡慢的网上问题。这些都可以通过调优来解决、提升客户体验。


前面这些铺垫都是为了说明,差异化的jvm调优是有必要的。



二、【为什么是机器学习】


机器学习,就是一种以样本和最优化公式模型,为了解决差异化、自动调参,以获得最优化结果的方法。天生就是用来干这个的,但是之前没有这样做,所以该出手的时候就应该出手。




三、【怎么实施,需要哪些动作】


1、样本来源:


DOMS有运维操作日志——操作日志的获取也非常容易,经过一线出差,与第三方维护的朋友沟通交流,发现操作日志获取并不是很难的事;与客户简短交流,也能看出客户是愿意合作的;DOMS有mrb等日志;jvm本身已经足够成熟,有jstat、jstack等检测工具,生成脚本用于解析数据。


光有这些数据,还是不够的,因为最终是为了提升用户的整体试用体验。整体使用体验的唯一指标就是界面响应时间。界面响应时间的计算,只需整理更完善、真实的客户端日志即可。


有了这些数据,做一些基本的整理,就可以形成有效的验证样本。


除了这些现网环境的数据主要用来验证,还需要大量的训练、测试数据,这些数据需要依赖的是从UI界面开始,模拟客户操作。除了ui自动化测试脚本可能需要自己组织之外(待与测试人员进一步确认),仿真网元、现网映像脚本导入都是既有的工具了。



2、设计模型:
刚开始试用,所以模型应该尽量简单化。 
jvm有600多个参数,经过人工筛选一部分调试相关的参数,其他参数全部作为输入。


针对前台UI、后台,分开训练。


模型的目标只有一个:界面响应时间。
从简单的模型入手,试用logistics回归。 



3、训练调校:


从默认参数,一步步测试、与现网实际操作做对照,得到最优化参数。




前期工作量主要在样本数据的准备上,包括获取和解析客户的操作日志、导出真实的界面下响应时间、整理ui测试自动化脚本(为了简单化,直接把协维、测试人员的鼠标键盘操作记录下来,映射到测试训练场景,不单独些复杂的ui测试自动化脚本,应该也是可行的)。


因为以后的运营数据吞吐量、持续在线运营时间和质量、响应速度等要求越来越高,所以 这个主题可以作为一个终身的职业来规划

猜你喜欢

转载自blog.csdn.net/lonelyrains/article/details/77602819