草庐IT

vm-cdh-cluster

全部标签

java - java是否有任何机制让VM在不使用javaagent等的情况下跟踪自身的方法调用?

我想在运行中构建调用图,从任意方法调用或新线程开始,这更容易,从正在运行的JVM本身开始。(该软件将成为负载测试另一个使用调用图的软件的测试夹具)我知道有一些SPI接口(interface),但看起来您需要使用它们运行-javaagent标志。我想直接在VM本身中访问它。理想情况下,我希望获取每个方法调用的进入和退出的回调、该方法调用的参数以及该方法中的时间。显然在一个线程内。我知道AOP可能可以做到这一点,但我只是想知道JDK中是否有工具可以让我捕捉到这一点。 最佳答案 JVM没有提供这样的API—即使对于以-javaagent开

java - java是否有任何机制让VM在不使用javaagent等的情况下跟踪自身的方法调用?

我想在运行中构建调用图,从任意方法调用或新线程开始,这更容易,从正在运行的JVM本身开始。(该软件将成为负载测试另一个使用调用图的软件的测试夹具)我知道有一些SPI接口(interface),但看起来您需要使用它们运行-javaagent标志。我想直接在VM本身中访问它。理想情况下,我希望获取每个方法调用的进入和退出的回调、该方法调用的参数以及该方法中的时间。显然在一个线程内。我知道AOP可能可以做到这一点,但我只是想知道JDK中是否有工具可以让我捕捉到这一点。 最佳答案 JVM没有提供这样的API—即使对于以-javaagent开

CDH数仓项目(三) —— Kerberos安全认证和Sentry权限管理

0说明本文基于《CDH数仓项目(一)——CDH安装部署搭建详细流程》和《CDH数仓项目(二)——用户行为数仓和业务数仓搭建》和搭建CDH数仓。本章节主要介绍基于CDH数仓的Kerberos认证和Sentry权限管理1Kerberos安全认证1.1Kerberos概述Kerberos是一种计算机网络授权协议,用来在非安全网络中,对个人通信以安全的手段进行身份认证。软件设计上采用客户端/服务器结构,并且能够进行相互认证,即客户端和服务器端均可对对方进行身份认证。可以用于防止窃听、防止重放攻击、保护数据完整性等场合,是一种应用对称密钥体制进行密钥管理的系统。1.2Kerberos概念Kerberos

java - 为什么内存管理在 Java VM 中如此可见?

我正在尝试编写一些简单的基于Spring的Web应用程序并将它们部署到Tomcat。几乎立刻,我就需要使用-XX:MaxPermSize(以及-Xmx和-Xms)来自定义Tomcat的JVM设置;没有这个,服务器很容易用完PermGen空间。与其他垃圾收集语言相比,为什么JavaVM会出现这样的问题?比较Java、Ruby、Perl和Python中X的“调整X内存使用”计数表明,Java在Google中的点击率比其他语言的总和高出一个数量级。我也有兴趣引用技术论文/博客文章/等解释JVMGC实现背后的设计选择,跨不同JVM或与其他解释语言VM进行比较(例如,将Sun或IBMJVM与Pa

java - 为什么内存管理在 Java VM 中如此可见?

我正在尝试编写一些简单的基于Spring的Web应用程序并将它们部署到Tomcat。几乎立刻,我就需要使用-XX:MaxPermSize(以及-Xmx和-Xms)来自定义Tomcat的JVM设置;没有这个,服务器很容易用完PermGen空间。与其他垃圾收集语言相比,为什么JavaVM会出现这样的问题?比较Java、Ruby、Perl和Python中X的“调整X内存使用”计数表明,Java在Google中的点击率比其他语言的总和高出一个数量级。我也有兴趣引用技术论文/博客文章/等解释JVMGC实现背后的设计选择,跨不同JVM或与其他解释语言VM进行比较(例如,将Sun或IBMJVM与Pa

java - 找出当前 Java VM 中打开了哪些网络套接字

我正在编写一个端到端测试,我的Java程序会释放其所有资源-线程、服务器套接字、客户端套接字。它是一个库,因此不能通过退出JVM来释放资源。Testingthereleasingofthreads很简单,因为你可以向ThreadGroup查询其中的所有线程,但是我还没有找到一个很好的方法来获取当前JVM正在使用的所有网络套接字的列表。有什么方法可以从JVM获取所有客户端和服务器套接字的列表,类似于netstat?我在Java7上使用Netty和OIO(即java.net.ServerSocket和java.net.Socket)。解决方案需要同时在Windows和Linux上运行。我的

java - 找出当前 Java VM 中打开了哪些网络套接字

我正在编写一个端到端测试,我的Java程序会释放其所有资源-线程、服务器套接字、客户端套接字。它是一个库,因此不能通过退出JVM来释放资源。Testingthereleasingofthreads很简单,因为你可以向ThreadGroup查询其中的所有线程,但是我还没有找到一个很好的方法来获取当前JVM正在使用的所有网络套接字的列表。有什么方法可以从JVM获取所有客户端和服务器套接字的列表,类似于netstat?我在Java7上使用Netty和OIO(即java.net.ServerSocket和java.net.Socket)。解决方案需要同时在Windows和Linux上运行。我的

Java vm 变慢,所有线程都忙于字符串操作

我遇到了一个非常奇怪的问题。我的tomcat以大约25%的CPU24/7完美运行,但有时我的CPU会飙升至60%,系统会停止并无法恢复。当我在减速期间进行线程转储时,几乎所有线程都忙于某种字符串或相关操作。没有OutOfMemory错误或任何异常被抛出,所有请求仍然得到处理,但响应时间恶化到第n级,即使是亚秒级的请求也会减慢到60秒甚至更多。我的服务器配置如下:Ubuntu12.04.2LTSLinux3.2.0-38-virtual#60-UbuntuSMPx86_64x86_64x86_64GNU/Linuxjavaversion"1.7.0_13"Java(TM)SERuntim