服务出现莫名其妙的卡顿,卡住了,重启了也卡住不动,等了5分钟还没结果
解决:(当时在早上6点的时候莫名奇妙的出现了,服务宕机了,然后重启后,服务一直卡着,并且不报错,就卡着不动,最后我是通过Java的jstack命名把栈的信息打印出来,发现信息里面很多都是在连接数据库的时候线程阻塞,然后联系运维查看数据库情况,结果发现数据库被攻击,网络卡顿无响应,最后运维恢复网络解决的)
CPU彪升的情况
解决:(当时我们有一个功能是做的用户行为日志分析,用户的一些行为数据我们需要发送到后端,用的多线程异步去发送到消息队列的,之前的线程是是在方法创建的,后来用户量大了,上线后CPU彪升了,最后我是通过到线上运维那边,先去执行top命令查看当前CPU最高的进程号,然后通过Java的jstack命令,把当前时刻的java栈的信息打印出来,最后看信息定位到是线程池那块的线程数过多造成的)
实际项目使用的多线程使用
解决:(当时我们做团长申请审核的时候,需要做身份认证,我做身份认证的时候,身份认证需要如下几个步骤,身份证对比认证,活体对比认证,文件上传,他们都是调用第三方接口完成,比较耗时,同步去做需要3到4秒,这个经过我的优化,用多线程,线程池,通过3个任务,实现callable接口,返回Future获取值,然后合并处理,只需要不到1到1.5秒了)
实际项目数据库sql优化
解决:(我们每天有报表统计,统计用户的认证,注册,还有订单,支付情况,当时因为每天统计的sql的都是在sql里面date_format函数,对建索引的日期格式化了,导致索引失效,后面优化改为区间查询)