- 浏览: 2663727 次
- 来自: 杭州
文章分类
- 全部博客 (1188)
- webwork (4)
- 网摘 (18)
- java (103)
- hibernate (1)
- Linux (85)
- 职业发展 (1)
- activeMQ (2)
- netty (14)
- svn (1)
- webx3 (12)
- mysql (81)
- css (1)
- HTML (6)
- apache (3)
- 测试 (2)
- javascript (1)
- 储存 (1)
- jvm (5)
- code (13)
- 多线程 (12)
- Spring (18)
- webxs (2)
- python (119)
- duitang (0)
- mongo (3)
- nosql (4)
- tomcat (4)
- memcached (20)
- 算法 (28)
- django (28)
- shell (1)
- 工作总结 (5)
- solr (42)
- beansdb (6)
- nginx (3)
- 性能 (30)
- 数据推荐 (1)
- maven (8)
- tonado (1)
- uwsgi (5)
- hessian (4)
- ibatis (3)
- Security (2)
- HTPP (1)
- gevent (6)
- 读书笔记 (1)
- Maxent (2)
- mogo (0)
- thread (3)
- 架构 (5)
- NIO (5)
- 正则 (1)
- lucene (5)
- feed (4)
- redis (17)
- TCP (6)
- test (0)
- python,code (1)
- PIL (3)
- guava (2)
- jython (4)
- httpclient (2)
- cache (3)
- signal (1)
- dubbo (7)
- HTTP (4)
- json (3)
- java socket (1)
- io (2)
- socket (22)
- hash (2)
- Cassandra (1)
- 分布式文件系统 (5)
- Dynamo (2)
- gc (8)
- scp (1)
- rsync (1)
- mecached (0)
- mongoDB (29)
- Thrift (1)
- scribe (2)
- 服务化 (3)
- 问题 (83)
- mat (1)
- classloader (2)
- javaBean (1)
- 文档集合 (27)
- 消息队列 (3)
- nginx,文档集合 (1)
- dboss (12)
- libevent (1)
- 读书 (0)
- 数学 (3)
- 流程 (0)
- HBase (34)
- 自动化测试 (1)
- ubuntu (2)
- 并发 (1)
- sping (1)
- 图形 (1)
- freemarker (1)
- jdbc (3)
- dbcp (0)
- sharding (1)
- 性能测试 (1)
- 设计模式 (2)
- unicode (1)
- OceanBase (3)
- jmagick (1)
- gunicorn (1)
- url (1)
- form (1)
- 安全 (2)
- nlp (8)
- libmemcached (1)
- 规则引擎 (1)
- awk (2)
- 服务器 (1)
- snmpd (1)
- btrace (1)
- 代码 (1)
- cygwin (1)
- mahout (3)
- 电子书 (1)
- 机器学习 (5)
- 数据挖掘 (1)
- nltk (6)
- pool (1)
- log4j (2)
- 总结 (11)
- c++ (1)
- java源代码 (1)
- ocr (1)
- 基础算法 (3)
- SA (1)
- 笔记 (1)
- ml (4)
- zokeeper (0)
- jms (1)
- zookeeper (5)
- zkclient (1)
- hadoop (13)
- mq (2)
- git (9)
- 问题,io (1)
- storm (11)
- zk (1)
- 性能优化 (2)
- example (1)
- tmux (1)
- 环境 (2)
- kyro (1)
- 日志系统 (3)
- hdfs (2)
- python_socket (2)
- date (2)
- elasticsearch (1)
- jetty (1)
- 树 (1)
- 汽车 (1)
- mdrill (1)
- 车 (1)
- 日志 (1)
- web (1)
- 编译原理 (1)
- 信息检索 (1)
- 性能,linux (1)
- spam (1)
- 序列化 (1)
- fabric (2)
- guice (1)
- disruptor (1)
- executor (1)
- logback (2)
- 开源 (1)
- 设计 (1)
- 监控 (3)
- english (1)
- 问题记录 (1)
- Bitmap (1)
- 云计算 (1)
- 问题排查 (1)
- highchat (1)
- mac (3)
- docker (1)
- jdk (1)
- 表达式 (1)
- 网络 (1)
- 时间管理 (1)
- 时间序列 (1)
- OLAP (1)
- Big Table (0)
- sql (1)
- kafka (1)
- md5 (1)
- springboot (1)
- spring security (1)
- Spring Boot (3)
- mybatis (1)
- java8 (1)
- 分布式事务 (1)
- 限流 (1)
- Shadowsocks (0)
- 2018 (1)
- 服务治理 (1)
- 设计原则 (1)
- log (0)
- perftools (1)
最新评论
-
siphlina:
课程——基于Python数据分析与机器学习案例实战教程分享网盘 ...
Python机器学习库 -
san_yun:
leibnitz 写道hi,我想知道,无论在92还是94版本, ...
hbase的行锁与多版本并发控制(MVCC) -
leibnitz:
hi,我想知道,无论在92还是94版本,更新时(如Puts)都 ...
hbase的行锁与多版本并发控制(MVCC) -
107x:
不错,谢谢!
Latent Semantic Analysis(LSA/ LSI)算法简介 -
107x:
不错,谢谢!
Python机器学习库
通过jmx查看thread死锁
ThreadMXBean tm = ManagementFactory.getThreadMXBean(); tm.setThreadContentionMonitoringEnabled(true); long [] tid = tm.getAllThreadIds(); ThreadInfo [] tia = tm.getThreadInfo(tid, Integer.MAX_VALUE); long [][] threadArray = new long[tia.length][2]; for (int i = 0; i < tia.length; i++) { long threadId = tia[i].getThreadId(); long cpuTime = tm.getThreadCpuTime(tia[i].getThreadId())/(1000*1000*1000); threadArray[i][0] = threadId; threadArray[i][1] = cpuTime; }
检测到如下线程问题:
Thread ID: 89
Thread Name: http-6080-Processor73
Thread State: RUNNABLE
Thread Lock Name: null
Thread Lock Owner Name: null
Thread CPU Time: 35678 sec
Stack Info: (depth:31)
+java.util.HashMap.get(HashMap.java:303)
+com.netqin.baike.server.nqrs.CloudSecurityCommand.writePkgsLog(CloudSecurityCommand.java:466)
+com.netqin.baike.server.nqrs.CloudSecurityCommand.execute(CloudSecurityCommand.java:153)
+com.netqin.baike.server.BaikeServer.service(BaikeServer.java:64)
+sun.reflect.GeneratedMethodAccessor33.invoke(Unknown Source)
CPU占用时间达到 35678秒 ,到下午到了50000秒左右,tomcat的CPU占用达到了200%
分析代码,发现是单例bean中使用了 hashmap 作为类对象,多线程访问时 类成员hashmap并不是线程安全的 非单例,引起了问题。更正代码后,几个月没有发现问题
来源:http://shenguanpu.blogbus.com/logs/159954429.html
相关推荐
通过JMX连接到运行中的JVM进行实时监控。 3. **YourKit Java Profiler**:一款强大的商业工具,提供详细的内存分配和存活路径分析,界面友好且功能强大。 4. **JProfiler**:另一款强大的商业Java性能分析器,支持...
1. **死锁检测**: 使用jstack或VisualVM,可以查看线程的锁持有状态,找出可能存在的死锁。 2. **线程Dump分析**: 当程序出现异常或者性能下降时,线程Dump可以帮助分析当前所有线程的状态,找出阻塞的原因。 3. *...
1. **获取线程Dump**: 可通过操作系统命令(如`jstack`)或者JVM内置的监控接口(如JMX)来获取线程Dump。 2. **导入到TDA**: 将获取的dump文件导入到TDA中,软件会自动解析文件内容。 3. **分析与解读**: 使用TDA...
要使用IBM Thread Dump Analyzer,你需要首先获取线程dump,这可以通过在JVM命令行发送特定信号(如在Unix/Linux上使用`kill -3 <pid>`,在Windows上使用`Ctrl+Break`)或通过JMX接口实现。然后,将dump文件导入到...
3. **线程转储(Thread Dump)**:通过生成线程转储文件,开发者可以查看在特定时刻所有线程的详细信息,包括调用栈,这有助于定位导致阻塞或挂起的问题。 4. **堆转储(Heap Dump)**:当遇到内存泄漏问题时,可以使用...
1. **连接到目标应用程序**:线程监视器需要连接到正在运行的Java应用程序,可以通过JMX(Java Management Extensions)或本地进程访问。 2. **获取线程信息**:一旦连接成功,就可以查看所有运行的线程,包括它们...
- **jstack工具**:用于查看Java应用的线程堆栈信息,帮助分析线程状态和死锁问题。 - **ThreadMXBean**:Java管理扩展(JMX)的一部分,可以获取线程信息,监控线程活动。 Java多线程的掌握需要理论与实践相结合...
4. **线程分析**:通过`thread`命令查看线程状态,找出可能的死锁或阻塞。 ### 注意事项 - 需要在Java应用启动时添加特定的JVM参数,以便Arthas能够正确连接。 - Arthas的使用需要对Java有一定的了解,特别是JVM和...
- **JMX (Java Management Extensions)**: 可以监控和管理Java应用程序,包括线程的查看和操作。 - **VisualVM**: JDK自带的性能分析工具,可以查看应用的线程状态,分析死锁等问题。 - **Thread Dump**: 当应用...
2. **线程分析**:通过线程监视器,开发者可以查看每个线程的状态,查找死锁和阻塞问题。 3. **CPU性能分析**:JVisualVM可以显示CPU的使用率,并详细列出各个线程的CPU消耗,有助于找出性能瓶颈。 4. **类和方法...
3. **线程调试(Thread Debugging)**:提供线程可视化工具,可以查看线程状态,追踪死锁,理解并发问题。 4. **代码覆盖率(Code Coverage)**:分析代码执行情况,帮助确定哪些代码未被充分测试。 5. **JMX 监控...
Java VisualVM是一款强大的Java应用程序性能分析工具,它包含了许多功能,如内存分析、线程分析、JMX连接、采样器等。而TAD(Thread Analysis and Dump)是VisualVM的一个插件,专为了解析和分析Java应用程序的线程...
2. **线程的启动和执行**:通过调用Thread对象的start()方法启动线程,该方法会自动调用run()方法执行线程的主要任务。需要注意的是,start()方法只能调用一次,多次调用会导致异常。 3. **线程同步**:当多个线程...
7. **性能调优**:书中将介绍如何通过监控和调整线程参数来提升并发性能,包括Java的JMX、VisualVM等工具的使用。 8. **实战案例**:通过一系列的实际案例,如Web服务器、数据库连接池等,展示如何在实际项目中应用...
- **确定类/资源的装载路径**:通过`Thread.currentThread().getContextClassLoader().getResource("com/kingdee/youshang/Env.class")`来确定类或资源的加载路径,这对于解决`ClassNotFound`或资源找不到的问题非常...
- **配置JMX**:通过配置`-Dcom.sun.management.jmxremote`等参数启用JMX远程监控。 - **启动Jconsole**:通过命令行或图形界面启动Jconsole工具。 - **连接应用服务器**:在Jconsole中输入应用服务器的地址和端口...
3. **死锁**:解释死锁的概念,如何避免死锁,以及使用JMX或JConsole检测死锁。 4. **线程池**:ExecutorService、ThreadPoolExecutor和ScheduledThreadPoolExecutor的使用和配置。 5. **并发容器**:比如...
开发者可以通过jstack命令来查看线程的堆栈跟踪,诊断死锁和线程状态问题。 7. **应用程序性能监控(Application Performance Monitoring, APM)**:对于生产环境的监控,可以使用APM工具来监视应用程序的运行状况...
4. **死锁预防和检测**:死锁是并发编程中的常见问题,Java没有内置的死锁检测机制,但可以通过避免循环等待条件、设置超时和资源有序分配等策略来预防死锁。 5. **性能监控与调优**:Java提供JMX(Java Management...
例如,Java中的`Thread`类和`Runnable`接口,C#中的`Thread`类以及`async/await`关键字,Python中的`threading`模块等。这些语言的线程API允许开发者创建、启动、同步和管理线程。 多线程编程的关键挑战在于线程间...