• 项目总结53:Linux Java项目CPU过载问题分析


    项目总结53:Linux Java项目CPU过载问题分析

    发现问题

    因为项目部署在阿里云服务器上,登陆阿里云服务器,发现服务器CPU一直是100%使用;

    问题分析

    第一步:找到占用过多CPU进程,并找到对应的为题代码

    • 1-登陆Linux服务器,使用TOP指令,找到占用CPU的进程;查找发现PID=31687,且是java项目

    • 2- 使用ps aux | grep PID   (ps aux | grep 31687)查看是那个java程序占用cpu 。根据文件目录位置确认就是自己部署的Java项目出问题了

    •  3-ps -mp PID -o THREAD,tid,time  (ps -mp 31687 -o THREAD,tid,time)显示线程列表,找出线程列表中占用cpu过高的tid (如tid=31687 ); | sort -rn -k2 | head -10 表示根据第二个参数倒序排序,且只展示前10个数据

    •  4-printf "%x " tid  (printf "%x " 32279)将其tid转化为16进制格式 如7e17 

    •  5-jstack PID | grep TID -A30(jstack 31687 | grep 7e17 -A30)   打印对应的堆栈信息,查看具体原因;对CPU占用排前10的问题,均是同一个问题,如下

     第二步:分析代码问题

    解决问题

    • 1-针对线程安全问题,对HashSet,使用Collections.synchronizedSet(sessionSet)进行同步处理
            HashSet<HttpSession> sessionSet=(HashSet<HttpSession>) context.getAttribute("sessionSet");
            Set<HttpSession> httpSessions = Collections.synchronizedSet(sessionSet);
            if(httpSessions==null){
                httpSessions=new HashSet<HttpSession>(); 
                context.setAttribute("sessionSet", httpSessions);
            }
  • 相关阅读:
    基于IPV6的数据包分析
    OSPFv3与OSPF的配置
    防火墙技术综合实验
    基于服务器的AAA配置实验
    基于服务器的AAA实验
    ipv6到ipv4隧道6to4(GNS3)
    Intellij IDEA(idea) 设置创建文件自动添加创建人和创建时间
    虎扑盖饭系列的数据爬虫和分析
    优酷评论爬虫
    MySQL聚族索引、辅助索引、回表和索引覆盖
  • 原文地址:https://www.cnblogs.com/wobuchifanqie/p/12190923.html
Copyright © 2020-2023  润新知