背景:
运行测试程序后,top命令发现某个进程(pid)占用cpu达到100%。
查看哪个线程占用最多资源:
ps mp pid -o THREAD,tid,命令查看这个进程下面的所有线程占用情况。
发现线程324占用最多。
使用jstack进行跟踪:
jstack pid 进行查看输出到临时文件
jstack 323 > test
将刚刚发现占用cpu最多的线程id(324)换算成16进制,324==》144
查看jstack 生成的文件:
下面可以看出是哪行代码导致,查看那行代码发现有死循环。跟踪解决完毕。
上面是查看cpu占用情况,举一反三,其他的相关资源分析方法应该是类似的。
这种查起问题来很有成就感,跟我们牛牛的开发学的一招以后大家也可以用起来~~~
后记:
测试关注的东西很多,点到面,再面到点,而开发们在技术上了解会的分析方法很多,我们在发现bug后不是直接丢给开发,fix后外围回归,而是向开发请教分析方法,得到“渔”,开发也很乐于教给我们,这样我们以后遇到类似问题就能直接进行分析,这样才能不断既提高充实自己,提高效率,并且会有很有成就感,这是一件非常快乐的事情。
from: https://my.oschina.net/jccpp/blog/129784
分享到:
相关推荐
在Linux系统下进行多线程编程是开发高效并发应用程序的关键技术之一。本文将深入探讨Linux环境中的多线程概念、创建与管理线程的方法、线程同步与通信机制,以及多线程编程中可能遇到的问题和解决策略。 一、多线程...
条件变量机制的作用是使某个线程等待某个事件的发生,只有当等待的事件发生时,线程才会继续执行。 六、POSIX线程标准 LinuxThreads是Linux平台下最流行的线程机制,它实现了一种BiCapitalized面向Linux的POSIX ...
Linux下的多线程编程是操作系统课程中的重要组成部分,它涉及到如何在Linux环境下创建、管理和同步多个执行线程,以提高程序的并发性和效率。本文将深入探讨Linux多线程的概念、实现方法以及相关的同步机制。 一、...
在Linux中,线程是操作系统调度的基本单位,它们共享同一地址空间,这意味着线程间的通信非常高效,但同时也需要注意同步和互斥问题以避免数据竞争。Linux提供了一套名为pthread的API,用于创建、管理和同步线程。 ...
3. **错误处理**:当某个线程或定时器出错时,其他线程和定时器还能继续工作,提高了系统的健壮性。 4. **负载均衡**:根据系统资源分配线程和定时器,可以有效平衡CPU和内存的使用,避免资源浪费。 在实际编程中...
### Linux下的多线程编程 #### 一、Linux线程初探 在现代操作系统中,线程作为一种重要的并发执行单元,对于提升程序性能和优化资源使用具有重要意义。尤其是在Linux这样的多任务操作系统上,多线程编程能够让应用...
在Linux系统中,C++编程时常常需要创建守护线程(daemon thread)来执行特定的任务,比如监控系统状态、定时任务或确保某个服务始终运行。守护线程是一种长期运行的后台进程,它不依赖于终端会话,即使用户注销或者...
本学习资料详细介绍了Linux环境下的多线程编程,涵盖了线程的创建与退出、线程属性设置、以及两种主要的线程同步机制——互斥锁和信号量。 首先,我们来了解一下线程的创建和退出。在Linux中,创建线程主要通过`...
这样设计的好处在于,即使某个线程因等待数据而阻塞,其他线程仍然可以正常工作,从而避免了单线程模型中因阻塞而影响整体服务的情况。 以下是多线程阻塞模式socket编程的一些关键步骤: 1. **创建socket**:使用...
本资料主要针对Linux环境下的多线程编程进行深入探讨。 首先,我们需要了解Linux下实现多线程的基础——POSIX线程(也称为pthread)。POSIX线程是跨平台的线程API,Linux系统完全支持。创建线程的基本函数是`...
4. **线程 join**:主线程或其他线程可以使用`pthread_join()`等待某个线程结束,这可以用来收集线程的返回值或确保线程执行完毕后再进行其他操作。 5. **线程取消**:如果需要在某个点强制停止线程,可以使用`...
6. **线程退出与join**:`pthread_exit()`函数用于结束线程,`pthread_join()`函数用于等待某个线程结束并回收其资源。 7. **线程取消**:`pthread_cancel()`可以取消一个正在运行的线程,但需要注意清理工作,避免...
- **线程取消**:允许在运行时停止某个线程。 - **线程同步**:用于确保多个线程之间能够正确地协作,避免数据竞争和死锁等问题。 ##### 使用64位体系结构 - 在64位环境下,多线程编程通常能更好地利用大内存空间...
本项目以C++语言在Linux环境下实现了一个多线程聊天室,利用了Linux系统强大的多线程支持和C++的高效编程能力。下面我们将详细探讨这一实现过程中的关键知识点。 首先,我们要理解多线程的概念。在单线程程序中,...
Linux 多线程编程是指在 Linux 操作系统中使用多线程技术来提高程序的执行效率和响应速度。多线程编程可以让程序同时执行多个任务,从而提高程序的整体性能。 线程基础知识 什么是线程?线程(Thread)是操作系统...
多线程编程作为一种高效的数据处理方式,在UNIX/Linux环境下得到了广泛的应用。与传统的单线程进程相比,多线程编程能够显著提升程序的性能和响应速度,尤其是在现代多核处理器的环境中。 #### 引入多线程的原因 1...
Linux下的多线程编程主要依赖于POSIX线程(pthread)库,这是一个轻量级的线程库,是POSIX标准的一部分,它定义了创建、同步和管理线程的一系列API。使用pthread可以实现线程的创建、终止、同步和互斥等操作。 在多...