问题描述: cpu负载陡增,内存占用情况稳定。(在多cpu的情况下,比如4核,free 看到cpuload 15%,但是查看单cpu会达到 100% 负载。。。)
1分析工具jstack:
/usr/java/jdk1.6.0_13/bin/jstack -l 11831 > jstack.log //进程pid号
以前jstack
弄出来的栈文件总是不知道看些什么。通过这次问题的定位,发现jstack可以很快缩小排查范围。 比较适合定位线程相关的资源消耗。
核心看点:
1 检查活动状态的线程,查看提示行代码。如果不能找到问题,可以相隔几分钟从新dump一次,看该行是否重现。
2 在同一个dump文件多次出现同一个线程,提示同一行。往往会是“锁”。
2./usr/java/jdk1.6.0_13/bin/jmap -J-d64 -dump:live,format=b,file=heap_dump.bin 15605 //进程pid号 , 文件名
dump到的bin文件使用基于eclipse的工具“MemoryAnalyzer”,可以得到很完整的内存分析报告。
个人理解:仅仅是内存方面的分析,好像没办法分析cpu占用的东西。
3.IDC 上,直接分析 java cpu负载高的工具还不算多,jstack只是说缩小排查范围,可能还需要下面这些技巧():
eclipse 的profile工具:http://eclipsecolorer.sourceforge.net/index_profiler.html
这个东东非常强大,可惜无法部署到IDC环境,也无法dump数据下来本机分析。对于可以在测试环境下重现的cpu负载高问题,可以尝试配置profile。
Strace http://hi.baidu.com/chinaw3/blog/item/4c5b772c39c485ee8a1399c2.html
strace 命令是一种强大的工具,它能够显示所有由用户空间程序发出的系统调用。
strace 显示这些调用的参数并返回符号形式的值。strace 从内核接收信息,而且不需要以任何特殊的方式来构建内核。
下面记录几个常用 option .
1 -f -F选项告诉strace同时跟踪fork和vfork出来的进程
2 -o xxx.txt 输出到某个文件。
3 -e execve 只记录 execve 这类系统调用
这个命令的威力要自己试过了才知道。。嘿嘿
Java profile参数:http://java.sun.com/developer/onlineTraining/Programming/JDCBook/perf3.html
cpu=samples|times|old
|
CPU usage
|
off
|
详细情况在“Where the Application Spends its Time”这个小节里面。
这个页面最后也顺带介绍了一下strace。
- 大小: 9.5 KB
分享到:
相关推荐
- 资源优化:由于WINCE系统资源有限,应尽可能优化Java代码,减少内存占用和CPU负载。 - API适配:由于JME的API与Java Standard Edition(Java SE)有所不同,需要检查并适配使用的API是否在JME中可用。 - 性能测试...
- **配置环境变量**:在 `/etc/profile` 文件中添加相应的 JAVA_HOME、CLASSPATH 和 PATH 环境变量,并使更改立即生效。 - **验证安装**:通过 `java -version` 命令验证 JDK 的安装情况。 ##### 1.7 解决 WebLogic...
- **CPU**:建议至少配备双核处理器,对于生产环境推荐四核及以上。 - **内存**:最低 4GB,推荐 8GB 或更高。 - **硬盘空间**:确保至少有 20GB 的可用空间用于安装 WebLogic Server 和相关组件。 - **网络**:保证...
SGA是Oracle数据库中用于存储数据和控制信息的内存区域,其中Shared Pool是SGA的一部分,主要用来存储最近解析或编译过的SQL、PL/SQL以及Java代码,还包括数据字典信息。由于library cache和dictionary cache中的...
3. 堆栈分析:查看导致CPU负载高的特定堆栈轨迹。 **四、内存分析** 1. 内存分配视图:追踪对象的创建和销毁,找出内存泄漏源头。 2. 垃圾收集分析:观察垃圾回收过程,优化内存管理策略。 3. 对象生存分析:研究...
同时,注意监控系统的资源使用情况,如CPU、内存和磁盘,确保系统能够应对负载测试带来的压力。 总的来说,Linux上的JDK安装和JMeter配置涉及多个步骤,包括卸载旧版本、安装新版本、配置环境变量、设置默认JDK以及...
Load Profile 部分显示数据库负载概况,包括 Redo Size、Logical Reads、Block Changes、Physical Reads、Physical Writes、User Calls、Parses 等指标。 * Redo Size:每秒产生的日志大小(单位字节),可标志数据...
对于**服务器运维**,配置好JDK是基础,而了解如何管理和优化JVM(Java Virtual Machine)性能,监控Java应用的内存、CPU使用情况,以及日志管理等都是关键技能。此外,熟悉Linux系统的常用命令和性能监控工具(如...
如果快照周期没有覆盖数据库高负载的时段,或者快照周期过长而导致包含了大量数据库空闲时间,那么分析结果可能就无法真实反映性能问题,这会导致DBA对数据库性能的理解出现偏差。 总结来说,Oracle AWR性能分析是...
Library cache用来存储最近解析或编译过的SQL、PL/SQL和Java类等,而dictionary cache用来存储最近引用的数据字典信息。Shared Pool的管理对于数据库性能至关重要,因为cache miss发生在Shared Pool的代价比在buffer...
LSF,全称为Load Sharing Facility,是Platform公司开发的一款分布式资源管理系统,主要用于集群环境中的任务调度、监控和负载分析。它的主要目标是对集群资源进行统一的管理和调度,确保高效利用计算资源。 ### ...
接着,需要编辑用户的bash配置文件(~/.bash_profile),设置JAVA_HOME、JAVA_BIN和CLASSPATH等环境变量,并更新PATH,确保系统能够找到Java。此外,还需要创建软链接,以便在/usr/bin目录下直接使用java和javac命令...
开发者应避免内存泄漏,及时释放不再使用的对象,并优化代码以降低CPU负载。 **J2ME的挑战** 尽管J2ME有其优点,但在实际开发中也存在挑战,如设备差异性大、性能限制以及调试工具不足等。开发者需要熟悉各种设备...
- CPU使用:检查CPU是否长时间高负荷运行,即使在低负载情况下,持续的高CPU使用可能是程序执行效率低下或者存在资源争抢问题。 - 内存监控:观察内存占用情况,过高的内存使用可能导致系统性能下降,甚至出现内存...
线程过多的问题在MIDP编程中尤为突出,因为每个线程都会占用内存,并可能导致CPU负载增加,从而影响电池寿命和设备性能。当大量线程同时运行时,操作系统可能会忙于上下文切换,这会消耗额外的时间和资源,降低程序...
- **Java EE 7支持**:Tomcat 8.0实现了Java EE 7 Web Profile,提供对WebSocket、JSP 2.3、Servlet 3.1规范的支持。 - **NIO.2支持**:引入了新的Java NIO.2 API,提高了并发性能和连接管理效率。 - **更好的JAR...
AWR报告的Load Profile部分展示了重做日志大小(Redo size)、逻辑读取次数(Logical reads)、块更改次数(Block changes)和物理读取次数(Physical reads)等统计信息。这些数据有助于分析SQL语句的效率和数据库...
对Nexus的性能进行监控,如内存使用、CPU负载和磁盘空间,以确保其稳定运行。Nexus提供了内置的监控接口,也可以结合其他监控工具如Prometheus、Grafana进行集成。 通过以上步骤,你可以在Linux环境中成功安装并...
对于大型网站,可能需要更高性能的硬件以应对高并发访问。 在软件层面,Apache-Tomcat服务器的安装和配置涉及多个步骤。首先,我们需要在Linux系统上安装Java Development Kit (JDK) 1.6或以上版本。可以通过下载...
10. **集群和负载均衡**:如果需要高可用性和负载均衡,可以配置WebLogic集群。这涉及到多个WebLogic Server实例之间的通信和数据同步。 11. **监控和性能调优**:使用WebLogic内置的监控工具和JMX接口来监视服务器...