基于机器学习的JVM调优可行性概述
2017-08-26 16:04
288 查看
可能已经有这方面的动作了,只是我还不知道吧,管它呢... 先写出来看看,有人提醒我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测试自动化脚本,应该也是可行的)。
因为以后的运营数据吞吐量、持续在线运营时间和质量、响应速度等要求越来越高,所以这个主题可以作为一个终身的职业来规划
一、【差异化的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测试自动化脚本,应该也是可行的)。
因为以后的运营数据吞吐量、持续在线运营时间和质量、响应速度等要求越来越高,所以这个主题可以作为一个终身的职业来规划
相关文章推荐
- 基于JVM 调优的技巧总结分析
- 1、Jvm 性能调优概述
- JVM的内存模型,(GC)垃圾处理,调优监控(基于HotSpot VM,JDK1.5+)【JAVA内存模型】
- Spark性能调优之——JVM调优之原理概述 以及降低cache操作的内存占比
- spark JVM调优之原理概述以及降低cache操作的内存占比
- 基于生产环境的JVM调优-结果分析
- Spark2.0机器学习系列之2:基于Pipeline、交叉验证、ParamMap的模型选择和超参数调优
- 基于JVM的异常诊断和性能调优
- java垃圾回收以及jvm参数调优概述
- 二,JVM的内存模型,(GC)垃圾处理,调优监控(基于HotSpot VM,JDK1.5+)【JAVA内存模型】
- 【转】JVM调优总结(四)-垃圾回收面临的问题
- 如何调优JVM - 优化Java虚拟机(大全+实例)
- JVM内存调优之GC算法
- jvm调优 总结 for面试
- JVM调优总结(四)-垃圾回收面临的问题
- JVM调优总结(八)-典型配置举例2
- [置顶] 【ML--01】第一课 机器学习概述
- JVM调优总结 -Xms -Xmx -Xmn -Xss
- Spark性能优化:JVM参数调优
- 机器学习之基于概率论的分类方法 : 朴素贝叶斯