JVM快速调优手册v1.0之四:堆内存分配的CMS公式解析
一.JVM 堆内存组成 Java堆由Perm区和Heap区组成,Heap区由Old区和New区(也叫Young区)组成,New区由Eden区、From区和To区(Survivor)组成。 Eden区用于存放新生成的对象。Eden中的对象生命不会超过一次Minor GC。 Survivor Space 有两个,存放每次垃圾回收后存活的对...
JVM快速调优手册v1.0之三:内存分配策略
JVM中的内存分配策略 内存分配策略 了解GC其中很重要一点就是了解JVM的内存分配策略:即对象在哪里分配和对象什么时候回收。 Java技术体系中所提倡的自动内存管理可以归结于两个部分:给对象分配内存以及回收分配给对象的内存。 我们都知道,Java对象分配,都是在Java堆上进行分配的,虽然存在JIT编译...
线上应用故障排查之一:高memory占用
前一篇介绍了线上应用故障排查之一:高CPU占用,这篇主要分析高内存占用故障的排查。搞Java开发的,经常会碰到下面两种异常:1、java.lang.OutOfMemoryError: PermGen space2、java.lang.OutOfMemoryError: Java heap space要详细解释这两种异常,需要简单重提下Java内存模型。(友情提示:本博文章...
Hadoop2.7实战v1.0之Hive-2.0.0的Hiveserver2服务和beeline远程调试
0.环境Hadoop2.7实战v1.0之Hive-2.0.0+MySQL远程模式安装: http://blog.itpub.net/30089851/viewspace-2082805/机器 hadoop-01:192.168.33.011.开启metastore 和 hiveserver2服务[root@sht-sgmhadoopnn-01 bin]# hive --service metastore &[1] 31092[root@hadoop-01 bin]# hive --service hiveserver2 &[root@had...
JVM快速调优手册v1.0之二:常见的垃圾收集器
如果说收集算法是内存回收的方法论,那么垃圾收集器就是内存回收的具体实现。Java虚拟机规范中对垃圾收集器应该如何实现并没有任何规定,因此不同的厂商、不同版本的虚拟机所提供的垃圾收集器都可能会有很大差别,并且一般都会提供参数供用户根据自己的应用特点和要求组合出各个年代所使用的收集器。HotSpot...
JVM快速调优手册v1.0之一:内存结构(堆内存和非堆内存)
图为Java虚拟机运行时的数据区:1.方法区也称"永久代” 、“非堆”, 它用于存储虚拟机加载的类信息、常量、静态变量、是各个线程共享的内存区域。默认最小值为16MB,最大值为64MB(未验证),可以通过-XX:PermSize 和 -XX:MaxPermSize 参数限制方法区的大小。运行时常量池:是方法区的一部分,Clas...
JVM快速调优手册v1.0
1.JVM内存组成(堆内存和非堆内存)2.堆内存的垃圾收集器3.Young、Old、Permanent分配策略4.堆内存分配的公式解析5.ParNew收集器+CMS收集器的产品案例分析(优化吞吐量)6.垃圾收集器常见参数
MapReduce1和Yarn的工作机制
Hadoop中的MapReduce的工作机制分为两种:MapReduce 1 也就是Hadoop 2.0之前的工作机制YARNMapReduce 1构成MapReduce 1最主要的其实就是jobtracker和tasktracker:jobtracker,用来协调作业的运行。它也是一个Java程序,主类是JobTracker。tasktracker,用来运行作业划分后的...
线上应用故障排查之一:高CPU占用
以我们最近出现的一个实际故障为例,介绍怎么定位和解决这类问题。根据top命令,发现PID为28555的Java进程占用CPU高达200%,出现故障。通过ps aux | grep PID命令,可以进一步确定是tomcat进程出现了问题。但是,怎么定位到具体线程或者代码呢?首先显示线程列表:ps -mp pid -o THREAD,tid,time...
Hadoop2.7实战v1.0之Eclipse+Hive2.0.0的JDBC案例(最详细搭建)
hive,eclipse,hiveserver2,hadoop,jdbc
理解 JMeter 聚合报告(Aggregate Report)
Aggregate Report 是 JMeter 常用的一个 Listener,中文被翻译为“聚合报告”。今天再次有同行问到这个报告中的各项数据表示什么意思,顺便在这里公布一下,以备大家查阅。如果大家都是做Web应用的性能测试,例如只有一个登录的请求,那么在Aggregate Report中,会显示一行数据,共有10个字段,...
Linux下使用Jmeter进行性能测试
一、Linux下安装Jmeter1. Linux下首先安装Jdk;2. 下载apache-jmeter-2.13.tgz,复制到Linux系统中的/opt目录下;3. 解压apache-jmeter-2.13.tgz:tar -zxvf apache-jmeter-2.13.tgz4. 配置Jmeter的环境变量: vi /etc/profile;5. 添加下述两...
JVisualVM之GC插件+错误"not supported for this jvm"+命令jstatd
插件安装tools->plugin->Available Plugin 会有值得安装的插件,如:VisualGC 插件列表:https://visualvm.dev.java.net/plugins.html注意:上面提供的端口配置有些麻烦,不如直接这样做: 要使用 VisualGC 必须在远程机上启动jstatd代理程序,否则会显示 “not supported for this jvm”...
Java程序性能分析工具Java VisualVM(Visual GC)
VisualVM 是一款免费的\集成了多个JDK 命令行工具的可视化工具,它能为您提供强大的分析能力,对 Java 应用程序做性能分析和调优。这些功能包括生成和分析海量数据、跟踪内存泄漏、监控垃圾回收器、执行内存和 CPU 分析,同时它还支持在 MBeans 上进行浏览和操作。在内存分析上,Java VisualVM的最大好处是可通过安装...
CDH4/5配置文件之深度解析
一.目录 B.重启MapReduce单个服务 只更新/var/run/cloudera-scm-agent/process/*目录 #因为只重启MapReduce服务,没有重启其他服务,如Hive,所以就只更新MapReduce 四.个人理解总结: cm web界面修改------>数据库表configs表...
Flume1.6.0之Error-protobuf-This is supposed to be overridden by subclasses
Error-protobuf-This is supposed to be overridden by subclasses,flume,protobuf
Hadoop2.7实战v1.0之Flume1.6.0搭建(Http Source-->Memory Chanel --> Hdfs Sink)
hadoop,flume,http source,hdfs,sink
Hadoop2.7实战v1.0之JVM参数调优
Hadoop正式上线之前,首先要调整的是各个进程的JVM参数设置,特别是对于HDFS Namenode来说。HDFS的JVM参数配置文件: hadoop-env.sh Namenode进程的JVM配置: HADOOP_NAMENODE_OPTS Datanode进程的JVM配置: HADOOP_DATANODE_OPTS client命令行的JVM配置: HADOOP_CLIENT_OPTS对于Namenode而言, 由于元数据存...
CCAH-CCA-500-6题:You want YARN to launch no more than 16 containers per node.
6.What should you do?Each node in your Hadoop cluster, running YARN, has 64GB memory and 24 cores. Your yarn.site.xml has the following configuration:<property><name>yarn.nodemanager.resource.memory-mb</name><value>32768</value></property><property><name>yarn.nodemanager.resource.cpu-vcore...
CCAH-CCA-500-5题:How will the Fair Scheduler handle these two jobs?
5.How will the Fair Scheduler handle these two jobs?You have a cluster running with the fair Scheduler enabled. There are currently no jobs running on the cluster, and you submit a job A, so that only job A is running on the cluster. A while later, you submit Job B. Now Job A and Job B are ru...