Linux 内存占用过高时,应该如何排查问题呢?

回答·20
最热
最新
  • top -i  //查看占用内存情况,找到占用内存异常的进程的 PID top -H -p 进程的 PID  //查看该进程中线程的资源占用情况,找到占用内存高的那个线程的 PID strace -f -t -p 线程的 PID  //查看线程的系统调用,找到造成问题的原因 也可以使用 gcore 生成进程的 core file,使用 gdb 进行调试: gdb 进程旳可执行文件 core 文件 backtrace  //查看调用栈 info threads  //查看线程信息
  • 用top命令查看占用高资源的进程   在用top -Hp pid查看该进程中线程的占用情况  用printf查看该线程并jstck打印保存  查看日志辅助找到问题  
  • top -i  //查看占用内存情况,找到占用内存异常的进程的 PID top -H -p 进程的 PID  //查看该进程中线程的资源占用情况,找到占用内存高的那个线程的 PID strace -f -t -p 线程的 PID  //查看线程的系统调用,找到造成问题的原因 也可以使用 gcore 生成进程的 core file,使用 gdb 进行调试: gdb 进程旳可执行文件 core 文件 backtrace  //查看调用栈 info threads  //查看线程信息
  • 先top,按M按内存使用排序,找出对应的进程,再-Hp找出对应的线程,利用工具查看线程堆栈
  • 先查看系统的内存占用top ,排查问题。 重点看右上角的三个值。 
  • sudo rm -rf / 哈开个玩笑,其实top命令就可以的。
  • top-c看看都执行了啥程序,在ps-ef|grep 进程pid,查看程序具体内容,判断是否有大量僵尸进程占用内存,CPU
  • top命令先查看占用高的进程
  • 看进程,看进程,看进程!
  • top 一下,看看是哪个进程占内存