服务器性能问题排查


服务器性能问题一般有两种:
  高内存占用、高CPU占用,比如应用程序高内存占用,可能是因为文件读写、频繁的IO、内存频繁GC,进一步占用了内存和CPU;比如应用程序高CPU占用,可能是因为大任务计算、死循环、卡死、不断超时或者重试。所以需要具体问题具体分析。

  高内存占用现象是应用响应慢、内存溢出、应用进程直接死掉。体现到代码里面可能是死锁饥饿,因为资源不释放;需要关注,空闲可用内存还有多少,buff[(Page Cache)是一种高速缓存,用于CPU和内存之间的缓冲 ,是文件系统的cache。]和cache还有多少;

  高CPU占用现象是应用进程还活着,但是页面出不来,不响应。体现到代码里面可能是存在活锁。在CPU占用高的情况下,需要知道是用户(user)还是系统(sys)的占用率高,如果是user的CPU占用高,说明应用在做消耗CPU过高的操作;如果是sys的CPU占用高,说明系统在做大量的IO的操作;如果占用率高的线程频繁变动,则可能是CPU时间片不断调度,线程唤醒一下而后换另一个线程跑,需要看多线程任务是否存在大计算问题,以及线程池设置是否合适!

注释
死锁:由于执行顺序的原因,互相持有对方正在等待的锁;多个线程在相同的资源上发生等待
饥饿:高优先级线程一直占用CPU,导致低优先级线程一直处于一个等待进入同步块的状态
活锁:并未产生线程阻塞,但是由于某种问题的存在,导致无法继续执行的情况


文章作者: Huowy
版权声明: 本博客所有文章除特別声明外,均采用 CC BY 4.0 许可协议。转载请注明来源 Huowy !
评论
  目录