jvm

zabbix——jvm监控添加方法

余生长醉 提交于 2020-03-23 12:25:50
1、在tomcat的bin目录下编辑catalina.sh文件 1)首先检查tomcat的conf目录下的server.xml文件,查看server.xml文件中是否有如下配置, 如果这一行已经注释,保持现状不要修改,按照没有这个配置对待。 <Listener className="org.apache.catalina.mbeans.JmxRemoteLifecycleListener" rmiRegistryPortPlatform="12345" rmiServerPortPlatform="12346" /> 如果有,则在bin目录下的catalina.sh文件中添加如下一行(红色字体部分需要修改)。 采用这种配置,需要在tomcat/bin目录下添加cmdline-jmxclient-0.10.3.jar这个jar包。 CATALINA_OPTS="$CATALINA_OPTS -Dcom.sun.management.jmxremote -Dcom.sun.management.jmxremote.authenticate=false -Dcom.sun.management.jmxremote.ssl=false -Djava.rmi.server.hostname= 本机ip " 2)如果没有,在bin目录下的catalina.sh文件中添加如下一行

JProfiler性能分析工具

╄→尐↘猪︶ㄣ 提交于 2020-03-22 18:01:22
1.简介 JProfiler 是一个商业授权的Java剖析工具,用于分析Java EE和Java SE应用程序。 2.JVMTI JDK本身定义了目标明确并功能完善的JNI(Java Native Interface)与虚拟机直接进行交互,这些 API 能很方便的进行扩展,从而满足开发者各种需求。 JVMTI(JVM Tool Interface) ,是JAVA虚拟机提供的本地接口,它是实现调度器以及其它Java运行测试与分析工具的基础。 * 并不一定在所有的JDK提供商都有实现,但在主流的Oracle JDK、Open JDK上都有其实现。 * 在开发的过程中一般是使用Agent的方式来使用JVMTI,通过调用JVMTI的函数,从JVM中得到当前的运行信息。 3.JProfiler内部模型 4.JProfiler数据采集的原理 1.用户在JProfiler GUI中下达监控命令(对应用户的一个点击) 2.JProfiler GUI通过自身Socket的8849端口向位于JVM的JProfiler Agent发送监控指令。 3.JProfiler Agent收到指令后向JVMTI注册事件或执行相关的命令。 4.JVMTI根据事件和命令的类型返回相对应的数据(线程状态、对象实例、CPU负荷、GC状态信息等) 5.JProfiler Agent从JVMTI中得到相应数据后将对其进行计算

Zabbix监控JVM内存

空扰寡人 提交于 2020-03-22 17:50:58
上篇最后提到了jstat,jstat可以查看统计JVM内存信息,那么结合Zabbix,就可以监控多实例的JVM内存了。 1、下面两个脚本部署在被监控主机: vm.py 用于JVM实例PID查找,ps命令亦可以换成jdk自带的jps工具: #!/usr/bin.python # import os import json data = {} tcp_list = [] port_list = [] command = "ps -ef | grep weblogic.Server | grep -v \"grep web\" | awk '{print $2}'" lines = os.popen(command).readlines() for line in lines: port=line.strip('\n') # port = line.split(':')[1] port_list.append(port) for port in list(set(port_list)): port_dict = {} port_dict['{#PID}'] = port tcp_list.append(port_dict) data['data'] = tcp_list jsonStr = json.dumps(data, sort_keys=True, indent=4) print

Java JVM 相关基础知识

别来无恙 提交于 2020-03-22 13:35:00
1.JMM Java内存模型 每条线程都有自己的工作内存[Working Memory] 线程的工作内存保存了被该线程使用的变量的主内存副本拷贝 线程对变量的所有线程之间也无法直接访问对方工作内存的变量,线程间变量值的传递均需要通过主内存来完成。 2.java的堆和栈 1)堆 heap:可动态申请的内存空间(其记录空闲内存空间的链表由操作系统维护);     其中的内存在不需要时可以回收,以分配给新的内存请求,其 内存中的数据是无序的 ;     一般由使用者自由分配,malloc 分配的就是堆,需要手动释放;     被所有线程共享的一块内存区域,在虚拟机启动时创建, 此内存区域的唯一目的就是存放对象实例 。 2)栈 stack:先进后出的数据结构,通常用于保存方法(函数)中的参数,局部变量.;     在 java 中,所有基本类型和引用类型都在栈中存储.栈中数据的生存空间一般在当前 scopes 内(就是由{...}括起来的区域);      先分配的内存必定后释放 ;     一般由系统自动分配,存放函数的参数值,局部变量等,自动清除 3.方法区 本地方法栈 1)方法区 Method Area:和Java 堆一样,别名叫做 Non-Heap(非堆),是各个线程共享的内存区域;           它用于存储已被虚拟机加载的类信息、常量、静态变量、即时编译器编译后的代码等数据

zabbix监控jvm内存

爱⌒轻易说出口 提交于 2020-03-22 10:59:16
Zabbix自带监控系统的内存利用率和CPU利用率,但是系统内存并不能反应JVM内存情况 在本地我们可以通过 jconsole 或者 jvisualvm 进行监控jvm内存情况 不过正是环境一般都是部署在 linux 上,且不是桌面版,这个时候想监控,可以通过 zabbix集成jmx 实现 jvisualvm 使用方式,参考 https://www.cnblogs.com/gossip/p/6141941.html 效果: 这是使用的jdk自带的监控工具 当然,如果需要远程监控的话,需要在 catalina 文件设置下启动参数,这里不做账号密码限定,所以authenticate=false windows修改catalina.bat 通过set设置,引用变量使用 %% 在 rem ----- Execute The Requested Command --------------------------------------- 下面添加 set JAVA_OPTS=%JAVA_OPTS% -Dcom.sun.management.jmxremote -Djava.rmi.server.hostname=127.0.0.1 -Dcom.sun.management.jmxremote.port=12345 -Dcom.sun.management.jmxremote.ssl

How run a simple Java program with the client/server Nailgun (on Debian Stretch)?

我与影子孤独终老i 提交于 2020-03-22 06:45:07
问题 I'm try to use Nailgun on Debian GNU/Linux 9 (stretch) . "Nailgun is a client, protocol, and server for running Java programs from the command line without incurring the JVM startup overhead. Programs run in the server (which is implemented in Java), and are triggered by the client (written in C), which handles all I/O." Some documentation found: Nailgun Quick Start JVM Startup Times/Nailgun How to improve performance of java using nailgun server DSpace/Nailgun I use Oracle Java version 10.0

How run a simple Java program with the client/server Nailgun (on Debian Stretch)?

◇◆丶佛笑我妖孽 提交于 2020-03-22 06:44:08
问题 I'm try to use Nailgun on Debian GNU/Linux 9 (stretch) . "Nailgun is a client, protocol, and server for running Java programs from the command line without incurring the JVM startup overhead. Programs run in the server (which is implemented in Java), and are triggered by the client (written in C), which handles all I/O." Some documentation found: Nailgun Quick Start JVM Startup Times/Nailgun How to improve performance of java using nailgun server DSpace/Nailgun I use Oracle Java version 10.0

Can I use a jar, compiled in Java 7 as a dependency in a project that is compiled against Java 6?

会有一股神秘感。 提交于 2020-03-22 06:21:56
问题 Can I use a jar, compiled in Java 7 as a dependency in a project that is compiled for compatibility with Java 6? I do not have the source code of the dependency. I have the compiled jar as a maven dependency. 回答1: Can I use a jar, compiled in Java 7 as a dependency in a project that is compiled for compatibility with Java 6? Let's unpick this: You have a project that is compiled so that will run on a Java 6 JRE. (Lets suppose that you only use Java 6 APIs in that project.) The .class files

JAVA JVM助记符

二次信任 提交于 2020-03-22 00:00:27
ldc:将int/float/String类型的常量值从常量池中推送至栈顶(栈顶的值是即将要用的) bipush:将单字节(-128 ~ 127)的常量值从常量池中推至栈顶 sipush:将一个短整型(-32768 ~ 32767)的常量值从常量池中推至栈顶 iconst_1:将int型的常量值1从常量池中推至栈顶(jvm专门为0/1/2/3/4/5这5个数字开的助记符),iconst_m1则表示的是-1 anewarray:创建一个引用类型(如类、接口、数组)的数组,并将其引用值推至栈顶 newarray:创建一个指定的原始类型(如int/float)的数组,并将其引用值推至栈顶 来源: https://www.cnblogs.com/billmiao/p/9872215.html

聊聊skywalking的jvm-receiver-plugin

佐手、 提交于 2020-03-21 21:20:55
3 月,跳不动了?>>> 序 本文主要研究一下skywalking的jvm-receiver-plugin JVMModuleProvider skywalking-6.6.0/oap-server/server-receiver-plugin/skywalking-jvm-receiver-plugin/src/main/java/org/apache/skywalking/oap/server/receiver/jvm/provider/JVMModuleProvider.java public class JVMModuleProvider extends ModuleProvider { @Override public String name() { return "default"; } @Override public Class<? extends ModuleDefine> module() { return JVMModule.class; } @Override public ModuleConfig createConfigBeanIfAbsent() { return null; } @Override public void prepare() { } @Override public void start() { GRPCHandlerRegister