原文:https://www.iteye.com/blog/tyrion-2293369 上午线上某应用的一台JVM的CPU占比突然飙高到192%,并且一直下不来,导致监控一直告警,好久没处理这种问题了,现在将问题排查步骤总结记录一下. 1.通过top命令查看当前机器的CPU使用情况 此时发现如果是Java的进程占用过高,并且一直下不来,则排查是什么线程导致占比过高.以图中进程举例,假如发现PID为31357的Java进程占CPU比一直很高,则记录下它的PID 2.查看Java进程里面的线程的占…
互联网后端架构 https://mp.weixin.qq.com/s/LiqAy2DikbmZzqogb5XRdA JVM的CPU资源占用过高问题的排查 互联网后端架构  今天 上午线上某应用的一台JVM的CPU占比突然飙高到192%,并且一直下不来,导致监控一直告警,好久没处理这种问题了,现在将问题排查步骤总结记录一下.(以下的图都不是线上问题的截图,涉及到公司业务) 1.通过top命令查看当前机器的CPU使用情况 此时发现如果是Java的进程占用过高,并且一直下不来,则排查是什么线程导致占比…
http://my.oschina.net/shipley/blog/520062 一.背景: 先执行一个java程序里面开了两个线程分别都在while循环做打印操作. ? 1 # java -cp ./test-threads.jar com.spiro.Main 二.现象: 通过top命令查看当前CPU情况 可以看到有个java进程占用CPU过高,下面来排查是什么线程的什么代码导致CPU过高. 三.步骤 先获得PID为2023,上图可以看到,或者通过jps命令获取. 执行以下命令: ? 1…
一.背景: 先执行一个java程序里面开了两个线程分别都在while循环做打印操作. # java -cp ./test-threads.jar com.spiro.Main 二.现象: 通过top命令查看当前CPU情况 可以看到有个java进程占用CPU过高,下面来排查是什么线程的什么代码导致CPU过高. 三.步骤 先获得PID为2023,上图可以看到,或者通过jps命令获取. 执行以下命令: # top -H -p2023 说明: -H 指显示线程,-p 是指定进程 结果: 可以看到两个CP…
前情提要: 最近接了大数据项目的postgresql运维,刚接过来他们的报表系统就出现高峰期访问不了的问题,报表涉及实时数据和离线数据,离线读pg,实时读redis.然后自然而然就把redis也挪到我们这边优化了 -_-! .在这次优化过程中也是再次深刻感受到redis的各种坑 现象: 大数据报表周末晚上高峰期实时报表打不开,基本上处于不能使用状态,实时报表主要访问redis数据,监控发现Redis CPU占用过高,高峰期2个从库实例的CPU达到100%,由于redis是单进程单线程结构,所以单…
前期准备: 1.python2.7环境 2.相关第三方库下载安装 脚本工作过程: 1.根据输入的进程名判断进程是否存在,如果不存在则进行等待,直到检测到进程PID,中途进程退出抛出异常,键入enter后等待进程重启 实际作用: 1.可以重复监控某一进程CPU资源占用情况,结果同步到本地D盘文本保存 #coding=utf-8 import psutil import sys import time import win32com.client class Cpu(): def __init__(…
项目介绍 我们将开始使用Gin框架开发一个api项目,我们起名为:云餐厅.如同饿了么,美团外卖等生活服务类应用一样,云餐厅是一个线上的外卖应用,应用的用户可以在线浏览商家,商品并下单. 该项目分为客户端和服务端两端程序. 1.客户端程序通过接口从服务端获取数据,获取结果后展示数据. 2.服务端程序提供接口Api的访问功能,执行数据库操作,并组织数据返回. 客户端介绍 云餐厅客户端使用Vue.ES6.Webpack等技术进行开发,项目开发需要具备前端开发技能,我们聚焦于后端Api功能的开发. 环境…
Timeline: Activity_launch_request time:6562004-14 15:31:25.347: I/dalvikvm(3483): Total arena pages for JIT: 1104-14 15:31:25.621: D/dalvikvm(3483): JIT unchain all for threadid=1304-14 15:31:26.371: W/dalvikvm(3483): threadid=1: spin on suspend #1 t…
原文链接:https://my.oschina.net/leejun2005/blog/1524687   摘要: 本文主要针对 Java 服务而言 0.背景 经常做后端服务开发的同学,或多或少都遇到过 CPU 负载特别高的问题.尤其是在周末或大半夜,突然群里有人反馈线上机器负载特别高,不熟悉定位流程和思路的同学可能登上服务器一通手忙脚乱,定位过程百转千回. 对此,也有不少同学曾经整理过相关流程或方法论,类似把大象放进冰箱要几步,传统的方案一般是4步: top oder by with P:10…
JVM(Java虚拟机)简单来说就是运行Java代码的解释器,作为螺丝钉程序员JVM其实了解下就差不多啦,不懂JVM内部细节照样能写出优质的代码!但是一到造火箭.飞机的场景(面试)不懂JVM的你,会被面试官虐的体无完肤,本期内容列举常见的JVM面试题: 说一JVM的内存模型是什么样子的? 什么时候对象可以被收回? 常见的垃圾回收器算法有哪些,各有什么优劣? 什么时候对象会进入老年代? 什么是空间分配担保策略? 如何优化减少Full GC? 面对这一大波JVM面试题,你真的Hold住吗? JVM的…
前言 先抛一个问题给我聪明的读者,如果你们使用微服务SpringCloud-Netflix进行业务开发,那么线上注册中心肯定也是用了集群部署,问题来了: 你了解Eureka注册中心集群如何实现客户端请求负载及故障转移吗? 可以先思考一分钟,我希望你能够带着问题来阅读此篇文章,也希望你看完文章后会有所收获! 背景 前段时间线上Sentry平台报警,多个业务服务在和注册中心交互时,例如续约和注册表增量拉取等都报了Request execution failed with message : Conn…
p.p1 { margin: 0; -webkit-hyphens: auto; font: 16px Arial; color: rgba(68, 68, 68, 1); -webkit-text-stroke: #444444 } p.p2 { margin: 0; -webkit-hyphens: auto; font: 16px Arial; color: rgba(68, 68, 68, 1); -webkit-text-stroke: #444444; background-colo…
å. 前言 现在的大部分 Java 应用基本都是通过 Maven 进行组织的,不论是分布式应用还是单体集群应用往往都会通过一个 父 POM 加若干子 POM 完成项目的组织.然而这种多应用多模块的拆分就带来了一个巨大的体力成本 --- 发包 举个例子,说明下为什么会出现这种情况: 上面这个图中有两个应用 portal 和 dump,其中 portal 的四个包是需要对外引用的也就是说 client .domain.common.log 这几个包是两个应用共享的二方包.而共享不可避免的会带来竞争!…
下游发现接口可用率非100%,马上线上查看,发现数据在有些情况下通用补数的数据是空, 有20%的用户是没有相应偏好等的数据的,需要通用补数来补数,结果通用补数没有数据. 通用补数数据的检查报警时必须要存在的,否则通用补数导致线上程序bug,总结一下,避免 后续再犯.…
最近一段时间  某台服务器上的一个应用总是隔一段时间就自己挂掉      用top看了看  从重新部署应用开始没有多长时间CPU占用上升得很快 排查步骤 1.使用top 定位到占用CPU高的进程PID top 2.通过ps aux | grep PID命令 获取线程信息,并找到占用CPU高的线程 ps -mp pid -o THREAD,tid,time | sort -rn 3.将需要的线程ID转换为16进制格式 printf "%x\n" tid 4.打印线程的堆栈信息  到了这一…
缘起 双十一如期而至,此时的我因为在处理客户的一个问题已经陷入了忙碌.突然,不断接到驻场实施发来的反馈,都是相同的反馈--"客户端操作缓慢". 我现在负责的服务器是一台接口服务器,所有的卖家都要通过这台服务器连接到自己的数据库上,不得小觑.于是我立马放下手头的话,打开了我事先安装好的服务器监控软件(netdata),便看到了下面的警告: 其实,作为一个服务器端新手,我并不知道什么意思.但是客户反馈慢啊!屁股一想也知道是因为服务器资源不够了嘛!于是,我立马把一小部分客户的配置切换到了另外…
功能和背景介绍 在项目的登录功能中,如果在登录时发现用户名和密码在用户表中不存在,会自动将用户名和密码保存在用户表中,创建一个新的用户. 因此,除了使用手机号和验证码登录以外,还支持使用用户名.密码进行登录. 如果首次使用手机号和验证码进行登录,会默认将手机号作为用户名创建新的用户,将用户结构体对象的数据保存在数据库中. 因此,我们有必要创建用户表. 用户数据结构体定义 在项目中,使用结构体定义用户数据结构.结构体定义如下所示: type Member struct { Id int64 `xo…
前言 今天下午3点,我按照惯例,打开游戏服务器,开新服部署嘛,游戏在腾讯开放平台,简单.闭着眼睛都OK.于是一轮子的复制黏贴拷贝,把服务器加起来,然后启动查看日志. ....突然发现不断的有Exception??搞什么飞机??丢失表Usr_user??刚才不是导了数据库吗?不存在?怎么会?? 我瞬间意识到.我摊上事了,我摊上大事了..检查刚才的复制黏贴,发现我没改数据库名,这一下子把第二个服的数据库整个干掉了. 我擦!!不会吧??背后一凉就软滩在凳子上了. 备份?没有. 数据库还有渣吗?sele…
图形化验证码生成和验证 功能介绍 在使用用户名和密码登录功能时,需要填写验证码,验证码是以图形化的方式进行获取和展示的. 验证码使用原理 验证码的使用流程和原理为:在服务器端负责生成图形化验证码,并以数据流的形式供前端访问获取,同时将生成的验证码存储到全局的缓存中,在本案例中,我们使用redis作为全局缓存,并设置缓存失效时间.当用户使用用户名和密码进行登录时,进行验证码验证.验证通过即可继续进行登录. 验证码库安装 借助开源的验证码工具库可以生成验证码. 首先,安装开源的验证码生成库: go…
用户头像上传 功能介绍 在用户中心中,允许用户更换自己的头像.因此,我们开发上传一张图片到服务器,并保存成为用户的头像. 接口解析 在用户模块的控制器MemberController中,解析头像上传的接口,解析如下: func (mc *MemberController) Router(engine *gin.Engine) { ... //用户头像上传 engine.POST("/api/upload/avator",mc.uploadAvator) } 在文件上传过程中,后台服务器…
某天,运营反馈,某商品下单异常 1.原来是一个空指针报错 根据用户输入的下单关键信息搜索日志系统看到如下报错 stackTrace: "java.lang.NullPointerException at com.auto.order.service.utils.OrderingUtils.buildParentOrderData(OrderingUtils.java:194) at com.auto.order.service.cart.impl.OrderingCommonServiceImp…
集成第三方发送短信 介绍 用户登录 用户登录有两种方式: 短信登录,密码登录 短信登录是使用手机号和验证码进行登录 短信平台 很多云平台,比如阿里云,腾讯云,七牛云等云厂商,向程序开发者提供了短信验证码套餐服务.借助云平台的短信服务,程序开发者可以非常简单方便的将短信服务集成到自己的程序中. 我们以接入和集成阿里云的短信服务sdk为例, 如果需要申请腾讯云短信服务可以看我另外写的一篇blog,使用两者都差不多 https://www.cnblogs.com/you-men/p/13088949.…
SELECT     HIGHEST_CPU_QUERIES.PLAN_HANDLE,     HIGHEST_CPU_QUERIES.TOTAL_WORKER_TIME,     Q.DBID,     Q.OBJECTID,     Q.NUMBER,     Q.ENCRYPTED,     Q.[TEXT],max_WORKER_TIME,last_execution_time FROM     (SELECT TOP 50         QS.PLAN_HANDLE,        …
一.使用top命令查看占用高资源的java项目的进程ID(pid): top 二.查看该进程中的线程所占用资源的情况:top -Hp pid 三.查看该线程对应的16进制:printf %x 11129 打印并保存该进程中堆栈的使用信息日志:jstack -l 11095 >> jstack.log  四.查看该进程中使用高资源的线程的具体信息日志:vim jstack.log 查找上一步的16进制的线程id:/2b79 定位到问题代码: 以上是测试所用(自己写的死循环) 实际排查时却并没有发…
线上故障主要包括cpu 磁盘 内存 网络等问题 依次排查 1.cpu 1) 先用ps找到进程pid 2) top -H -p pid 找到cpu占用高的线程 3)printf '%x\n' pid 获得16进制的nid 4) jstack pid |grep 'nid' -C5 -color 显示堆栈信息 关注WAITING TIMED_WAITING BLOCKED的信息 2.磁盘 df -hl查看磁盘状态 3.内存 free 检查内存情况 如果内存过多 通过第一步骤找到的异常来分析: Exc…
记一次使用arthas排查jvm中CPU占用过高问题.这工具屌爆了 碾压我目前使用的全部JVM工具. 安装 小试 curl -O https://arthas.aliyun.com/arthas-boot.jar java -jar arthas-boot.jar --repo-mirror aliyun --use-http jar后面的参数也可以不加 加上只是为了下载速度更快 接下来arthas 控制台中显示了当前机器上jvm进程列表 输入需要排查的jvm进程号即可进入监控命令模式 找出CP…
一.发现问题 下面是线上机器的cpu使用率,可以看到从4月8日开始,随着时间cpu使用率在逐步增高,最终使用率达到100%导致线上服务不可用,后面重启了机器后恢复. 二.排查思路 简单分析下可能出问题的地方,分为5个方向: 1.系统本身代码问题 2.内部下游系统的问题导致的雪崩效应 3.上游系统调用量突增 4.http请求第三方的问题 5.机器本身的问题 三.开始排查 1.查看日志,没有发现集中的错误日志,初步排除代码逻辑处理错误. 2.首先联系了内部下游系统观察了他们的监控,发现一起正常.可以…
由于是开发阶段,所以并没有配置postgres的参数,都是使用安装时的默认配置,以前运行也不见得有什么不正常,可是前几天我的cpu资源占用突然升高.查看进程,发现有一个postgres的进程占用CPU都是80%以上,而且居高不下:刚开始以为是配置上需要修改,但事实上,默认配置基本上是很优化的,而且是开发阶段,数据量也并不大.后来通过分析,得出结论,解决问题应该从以下几个方面来逐一考虑:1:SQL查询方面检查数据检索的索引是否建立,凡是需要查找的字段尽量建立索引,甚至是联合索引:创建索引,包括表达…
背景 线上Hadoop集群资源严重不足,可能存在添加磁盘,添加CPU,添加节点的操作,那么在添加这些硬件资源之后,我们的集群是不能立马就利用上这些资源的,需要修改集群Yarn资源配置,然后使其生效. 现有环境 服务器:12台,内存64Gx12=768G,物理cpu16x12=192,磁盘12Tx12=144T 组件:Hadoop-2.7.7,Hive-2.3.4,Presto-220,Dolphinscheduler-1.3.6,Sqoop-1.4.7 分配策略 由于我们的版本是Hadoop-2…
Fiddler是一个http协议调试代理工具,它能够记录并检查所有你的电脑和互联网之间的http通讯,设置断点,查看所有的“进出”Fiddler的数据(指cookie,html,js,css等文件,这些都可以让你任意替换线上进行修改的意思),用线下的文件替换线上的进行修改调试,的确很方便. (一)官方地址 http://www.telerik.com/fiddler (二)下载后的界面,选中“AutoResponder”,然后下面的三项全打钩,如图: (三)在浏览器打开一个线上页面,如太平洋汽车…