本小节我们介绍一下如何使用JDK自带的jvisualvm工具来监控本地的Java进程,该工具是一个图形化的监控工具。
工欲善其事必先利其器,为你呈上一箩筐性能优化工具,必有一款满足你,废话不多说,直奔主题。
我理解的监控分两种,一种是运维的监控-监控整个集群的各项资源的使用情况以及各个服务的存活情况,另一种是开发的监控-监控代码问题导致的线程死锁,OOM等,以及业务消息的历史可回溯。 我是一名开放,这里主要讲讲我的心得,开发中的监控。如何减少开发人员不必要的加班。
最近公司的下单接口有些慢,老板担心无法支撑双11,想让我优化一把,但是前提是不允许大改,因为下单接口太复杂了,如果改动太大,怕有风险。另外开发成本和测试成本也非常大。对于这种有挑战性的任务,我向来是非常喜欢的,因为在解决问题的过程中,可以学习到很多东西。
上篇博客我们介绍了虚拟机监控和分析命令行工具,由于其不够直观,不是很容易排查问题,那么本篇博客我们就来介绍几个可视化工具。
Zabbix自带监控系统的内存利用率和CPU利用率,但是系统内存并不能反应JVM内存情况
VisualVM,能够监控线程,内存情况,查看方法的CPU时间和内存中的对象,已被GC的对象,反向查看分配的堆栈(如100个String对象分别由哪几个对象分配出来的)。 VisualVM使用简单,几乎0配置,功能还是比较丰富的,几乎囊括了其它JDK自带命令的所有功能。
如果遭遇 Local host name unknown:XXX的错误,修改/etc/hosts文件,把XXX加入进去
VisualVM,能够监控线程,内存情况,查看方法的CPU时间和内存中的对 象,已被GC的对象,反向查看分配的堆栈(如100个String对象分别由哪几个对象分配出来的)。
在jvm中有很多的参数可以进行设置,这样可以让jvm在各种环境中都能够高效的运行。绝大部分的参数保持默认即可。
开发者利用jdbc连接hiveserver2(或者利用jdbc连接 spark HiveThriftServer2,由于两者都是提供jdbc连接到hive,因此,后面都统一称为利用jdbc连接hiveserver2),执行简单查询、复杂分析、超复杂分析等不同的sql任务,session并发量还很高(五六百甚至上千的并发),本质上要求大数据平台同时具备oltp的高并发与olap的高分析能力。对于hiveserver2这一类基于hadoop平台的jdbc server而言,非常不适合这种高并发的应用。
最近发现hiveserver2(本质上是提供jdbc连接的driver进程)经常发生严重卡死故障,而且卡死分成两种现象。
其中 load average 代表的是cpu的平均负载,三个数字分别代表1分钟、5分钟、15分钟内cpu的平均负载。 负荷的大小跟cpu个数以及当前负荷有关系,例如1h 处理器,负载为5 则大概表面有1成的在running 4成的在等待,也就意味着此时可能服务器已经无法处理新的请求了,系统也就凉咯 查看cpu个数
JVM本身为我们提供了很多性能监控的工具,其中有基于命令行的也有基于图形用户界面的,而个人感觉VisualVM就是其中最优秀的一个工具。
2011-09-06 线上8核 linux服务器,负载为8为正常情况,目前CPU负载过高,最高负载30多,平均负载在20左右,已经持续近一周,具体占用CPU资源的服务是tomcat_sc,占用CPU资源高达:720% 使用jconsole去跟踪 更改catalina.sh 启动设置: $ CATALINA_OPTS="-Dcom.sun.management.jmxremote -Dcom.sun.management.jmxremote.port=8933 -Dcom.sun.manageme
问题描述:最近做一个web应用程序需要操作Excel文件,在开发环境下程序测试正常,部署到IIS后程序操作Excel文件,IIS报错,错误出现在创建Excel进程的语句,如下:
JVM把内存区分为堆区(heap)、栈区(stack)和方法区(method)。由于本文主要讲解JVM调优,因此我们可以简单的理解为,JVM中的堆区中存放的是实际的对象,是需要被GC的。其他的都无需GC。
COM即组件对象模型(Component Object Model,COM) ,是基于 Windows 平台的一套组件对象接口标准,由一组构造规范和组件对象库组成。COM是许多微软产品和技术,如Windows媒体播放器和Windows Server的基础。
如果要看远程服务器上Java程序的GC情况需要执行这个步骤,允许JVM工具查看JVM使用情况。
VisualVM is a visual tool integrating commandline JDK tools and lightweight profiling capabilities. Designed for both development and production time use.
最近参加面试多次被面试官问到JVM调 优方面的问题,即时自己面试前也重点复习了这一块的面试题,但是发现还是回答地不太好,浪费了好多次面试机会,真是让自己很抓狂。归根结底是自己以前一直只注重业务,而忽略了JVM调优这一块,对JVM这一块的实践太少了。这几天自己也重点观看了马士兵老师的JVM调优视频课, 看完之后自己也在本机和腾讯云服务器上进行了一番实践,感觉还是很有收获的。
1. 为什么需要性能监控? 有时我们会发现Java程序在运行一段时间之后速度会变慢,导致变慢的原因有很多,比如数据库延迟太高,线程死锁,频繁的Full GC等等。通常遇到这种情况时,我们可以通过top或htop命令查看Java进程的CPU和内存的占用情况,但是无法准确的找出系统变慢的原因。这时我们就需要一种方式可以实时的查看Java虚拟机的运行情况,进而发现系统变慢的原因。本文将介绍如何通过JMX进行Java性能的远程监视。 2. 什么是JMX? JMX(Java Managemen
Jconsole 监控java程序时,在启动java程序时,加上以下选项就可以进行远程监控:
JDK诞生 Serial追随 提高效率,诞生了PS,为了配合CMS,诞生了PN,CMS是1.4版本后期引入,CMS是里程碑式的GC,它开启了并发回收的过程,但是CMS毛病较多,因此目前任何一个JDK版本默认是CMS 并发垃圾回收是因为无法忍受STW
这个系列的文章翻译由信安之路红蓝对抗小组的所有成员共同完成,后续将陆续发布,敬请期待!
一、环境准备,centos7服务器一台,安装jdk1.8,一个可运行java的jar包,最好是有个服务器运维工具,我用的是宝塔面板,主要是用来开放端口,当然你是用命令开放也可以的。
导读:本篇记录一次服务器执行MySQL耗时的问题,耗时的问题在于一句SQL执行,耗时超过1000ms,如何解决这个问题?通过这篇文章了解下。
-多年互联网运维工作经验,曾负责过大规模集群架构自动化运维管理工作。 -擅长Web集群架构与自动化运维,曾负责国内某大型金融公司运维工作。 -devops项目经理兼DBA。 -开发过一套自动化运维平台(功能如下): 1)整合了各个公有云API,自主创建云主机。 2)ELK自动化收集日志功能。 3)Saltstack自动化运维统一配置管理工具。 4)Git、Jenkins自动化代码上线及自动化测试平台。 5)堡垒机,连接Linux、Windows平台及日志审计。 6)SQL执行及审批流程。 7)慢查询日志分析web界面。
为了应用服务能够持续稳定地对外提供服务,除了在部署的时候尽量采用分布式、集群服务等方式提高 ZooKeeper 服务的可靠性外,在服务上线运行的时候,我们还可以通过对 ZooKeeper 服务的运行状态进行监控,如运行 ZooKeeper 服务的生产服务器的 CPU 、内存、磁盘等使用情况来达到目的。在系统性能达到瓶颈的时候,可以增加服务器资源,以保证服务的稳定性。
Tcp的连接状态对于我们web服务器来说是至关重要的,尤其是并发量ESTAB;或者是syn_recv值,假如这个值比较大的话我们可以认为是不是受到了攻击,或是是time_wait值比较高的话,我们要考虑看我们内核是否需要调优,太高的time_wait值的话会占用太多端口,要是端口少的话后果不堪设想:所以今天我们来学学如何使用Zabbix监控tcp状态
在之前的文章中,我们介绍了 JVM 常用的命令使用,通过这些命令可以快速的查询线上服务的性能情况和排查相关的问题。
墨墨导读:本篇记录一次服务器执行MySQL耗时的问题,耗时的问题在于一句SQL执行,耗时超过1000ms,如何解决这个问题?通过这篇文章了解下。
测试在进行一次性能测试的时候发现并发300个请求时出现了下面的异常: HTTP Status 500 - Handler processing failed; nested exception is java.lang.OutOfMemoryError: unable to create new native thread 看到这个异常有点发慌,毕竟并发程序写的少,突然来这么一个确实有点找不着背。但不管怎么样还是先搜索一下是啥原因吧。 这个错误是因为无法再创建新线程导致的,原因可能是没有更多的空间用于
zabbix镜像-zabbix下载地址-zabbix安装教程-阿里巴巴开源镜像站 (aliyun.com)
在前一篇文章里我们发现通过jstatd + VisualVm的方式,不能获得Java进程的CPU、线程、MBean信息,这时JMX就要登场了。
VisualVM 是Netbeans的profile子项目,已在JDK6.0 update 7 中自带,能够监控线程,内存情况,查看方法的CPU时间和内存中的对 象,已被GC的对象,反向查看分配的堆栈(如100个String对象分别由哪几个对象分配出来的)。在JDK_HOME/bin(默认是C:\Program Files\Java\jdk1.6.0_13\bin)目录下面,有一个jvisualvm.exe文件,双击打开,从UI上来看,这个软件是基于NetBeans开发的了。
JConsole可以对远程主机上的Java进程的内存使用情况进行监控。本文将讲解如何使用JConsole监控远程主机上的WebLogic和Tomcat。
VisualVM是我们平时最常用的Java应用监控和性能分析工具,功能很丰富。我们有时会利用它来监控Spark作业,主要是Driver和Executor的运行情况。VisualVM支持jstatd和JMX两种方式连接远程JVM,本文简单叙述一下方法。
近期看了一篇不错的横向移动的文章,觉得不错就简单翻译了一下(谷歌翻译哈哈哈哈!) 原文地址:https://posts.specterops.io/offensive-lateral-movement-1744ae62b14f
解决IDEA报错:无法检索应用程序 JMX 服务 URL[Failed to retrieve application JMX service URL]亲测可用
简单地说,Garbage Collection (GC)就是JVM回收不再使用的对象,释放内存的过程。GC Overhead Limit Exceeded error是java.lang.OutOfMemoryError家族的一员,表示JVM内存被耗尽。接下来看看引起java.lang.OutOfMemoryError: GC Overhead Limit Exceeded错误的原因是什么,以及如何解决这个错误。
横向移动是从一个受感染的宿主移动到另一个宿主的过程。渗透测试人员和红队人员通常通过执行 powershell.exe 在远程主机上运行 base64 编码命令来完成此操作,这将返回一个信标。问题在于攻击性 PowerShell 不再是一个新概念,即使是中等成熟的商店也会检测到它并迅速关闭它,或者任何半体面的 AV 产品都会在运行恶意命令之前将其杀死。横向移动的困难在于具有良好的操作安全性 (OpSec),这意味着生成尽可能少的日志,或者生成看起来正常的日志,即隐藏在视线范围内以避免被发现。这篇博文的目的不仅是展示技术,但要显示幕后发生的事情以及与之相关的任何高级指标。我将在这篇文章中引用一些 Cobalt Strike 语法,因为它是我们主要用于 C2 的语法,但是 Cobalt Strike 的内置横向移动技术是相当嘈杂,对 OpSec 不太友好。另外,我知道不是每个人都有 Cobalt Strike,所以在大多数示例中也引用了 Meterpreter,但这些技术是通用的。
版权声明:本文的内容源自于「IBM Developer」的博文,以对原文做重大更新,并新增 JProfiler 的内容。
监控本地进程的线程,对理解框架非常有帮助,可以看到都有哪些进程,以及这些进程的工作状态。dump进程状态和jstack的结果一样,也可以分析出线程死锁。
1).通过webconfig中增加模拟,加入管理员权限, <identity impersonate="true" userName="系统管理员" password="系统管理员密码"/> 2).这样就能够启动Application进程,操作EXCEL了,能够新建EXCEL,导出EXCEL,但是还是不能打开服务器端的EXCEL文件
OPC DA协议是工控领域常用协议之一,OPC DA采用微软的COM技术,在不同工控机上采用OPC DA通讯则采用DCOM技术,而DCOM则采用微软的RPC动态端口,所以在普通商用防火墙上是无法支持OPC DA这个协议。这也是为什么工业防火墙的具备防护OPC DA专业技能,工业防火墙会根据DCOM中RPC来跟踪动态端口的变化,记录协商出来的动态端口,并在策略上动态开放。但实际上工业防火墙在企业内网采购比较少,更多是商业防火墙,而随着IT和OT融合,在企业网络中获取控制网络的数据的场景越来越多,但很多的DCS和SCADA系统仅仅具备OPC DA对外通讯能力,所以多数企业需要在IT和OT边界部署工业防火墙。此篇文章就是指导IT和OT边界采用商业防火墙的情况下如何采用修改注册表的方式,把RPC中DCOM端口限制在一个小范围内从而保证网络的通讯畅通切安全。
在前面已经学习了JVM性能监控的命令行工具,接下来学习JVM性能监控的命令行工具,通过可视化工具可以更直观地监控JVM性能、处理JVM相关问题。
在SpringBoot的Web项目中,默认采用的是内置Tomcat,当然也可以配置支持内置的jetty,内置有什么好处呢?
Zabbix本身不支持直接监控Java,在zabbix 1.8以前,只能使用Zapcat来做代理监控,而且要修改源代码,非常麻烦。所有后来为了解决这个监控问题,Zabbix和Java双方应运生成了各自的代理监控程序:zabbix 2.0以后添加了服务进程zabbix-java-gateway;Java有了JMX,全称是Java Management Extensions,即Java管理扩展。
领取专属 10元无门槛券
手把手带您无忧上云