这个励志故事告诉咱们要懂得如何排查问题的重要价值。今天咱们就来总结一下排查问题的9种方法: 基础方法 监控告警 问题发生常用的手段有生产测试、监控告警和人工客诉。 抓包分析 tcpdump命令配合Wiresshark等解析工具可对网络问题做初步的排查。比如http请求是明文传输,可以抓到完整的请求内容。但是如果是加密的,至少可以看到有没有RST等异常。 linux命令可以作为排查问题的利器,比如我在《懂得三境界-使用dubbo时请求超过问题》里提到的netstat -s ,但是要注意不要对线上造成影响。 高级方法 代码走查 排查问题的最高境界是只通过review代码来发现问题 逻辑推理 但很多大神的解决步骤是:第一,听别人讲述问题现象;第二,提出问题以求证;第三,推理出大致原因并给出可选方案及方案的注意点 为啥是他人,能达到这种境界多是领导或者帮别人排查问题的救火队长,问题发生和自己并没有直接关系。 想达到这种境界还是需要平时的积累和深入理解和深耕。
经过昨天晚上的调试,发现了一个主要问题:使用圆网格标定板标定时,不能使用cornerSubPix()函数,否则寻找角点时,会导致图一的情况(裁剪为30万像素)。就找到能参考的程序,推进还是很快的。
今天客户说有一个job跑的特别慢。想看看到底是不是数据库这边有什么问题了。 使用top来查看,io wait奖金30%,已经算是负载比较重的了。 image.png 和客户确认从什么时候发现速度开始变慢的,他们说大概是从中午以后。 使用sar来看一下,确实是从iowait从:1:00开始有了大量的io 10:40:01 AM CPU %user %nice %system %iowait %steal %idle 10:50:02 AM all
排查思路: 检查目标服务器防火墙配置,开启目标端口,重启防火墙 检查目标服务器服务状态 解决过程: 查看服务器调用者日志,当出现接口拒绝连接时,可参考以下方案: 使用ping IP命令查看目标服务器是否宕机
Java发生死锁的根本原因是:在申请锁时发生了交叉闭环申请。即线程在获得了锁A并且没有释放的情况下去申请锁B,这时,另一个线程已经获得了锁B,在释放锁B之前又要先获得锁A,因此闭环发生,陷入死锁循环。
今天发现服务器磁盘满了,使用du命令排查,首先找到根目录 du -h --max-depth=1 / 然后发现/usr下面最大,接着找/usr目录下 du -h --max-depth=1 /usr 发现/usr/local目录最大,我们挨个排查下去,发现是jpom的历史构建产物占用空间太多,去Jpom里删除就好了
排查总结 7.1 CPU过高 top P M X 找到占用高的进程id top -Hp pid 找到占用高的线程nid,转换16进制,(printf '%x\n' pid) jstack pid 来查看线程的详细信息 自动设置的快照-XX:-XX:+HeadDumpOnOutOfMemoryError 用分析工具分析:查看哪个类和实例数过大,本来就定位线程了,只需看该线程的对象信息即可 7.3 死锁 直接JConsole排查死锁
既然已知道异常服务,那可以从这里入手进行分析,又与同事沟通一番,确定了与该服务相关的一些后台模块,接下来重点排查这些模块。 排查方法 日志中出现了sync.
-XX:+HeapDumpOnOutOfMemoryError -XX:HeapDumpPath=/home/d5000/eas/easDmSync/heapdump.hprof
CPU飙升 线上资源cpu飙升是我们工作中常见的问题,一篇文章搞定排查方法 一、问题复现 现在我有两个接口,代码如下 @RestController public class CPUCheck { 二、测试 我们将项目打包部署在服务器上,并启动 测试接口 curl http://localhost:9901/thing-test/hello pid 三、排查 通过top命令可以查看到有一个java
排查Maven问题 mvn dependency:tree 三大技巧 第一板斧:找到传递依赖的鬼出在哪里?
因为懒,很多时候排查问题起来太依赖可视化工具了,就导致很多Linux命令忘记了。 某个文本 信息 grep -r "error" /var/log 查看并搜索日志 less less命令:http://linux.zanglikun.com/c/less.html#%E5%AE%9E
排查分析 经top 查看原来是一个叫269 的进程一直抢占CPU,占比高达4000%。而该269 进程则是挖矿病毒进行高度伪装,即使是kill 掉该进程也无济于事,后面又会自动跑起来。 9 0:00.00 migration/8 常规做法 针对该挖矿病毒,一般常规做法是 1、查找出具体哪个进程导致占比CPU;比如269; 2、kill 掉该挖矿进程;sudo kill -9 48124; 3、通过关键词查找挖矿病毒,一般在/tmp 目录底下,如果不清楚查找,直接删除/tmp 目录底下的所有文件; 4、要排查和删掉相关的定时脚本; 4、观察服务器一段时间,查看病毒是否还存在。 9
3) "key:4" 4) "key:14" 5) "key:16" 6) "key:17" 7) "key:15" 8) "key:10" 9) " 2) "key:18" 3) "key:0" 4) "key:2" 5) "key:19" 6) "key:13" 7) "key:6" 8) "key:9" 9) "key:11" 通过 TYPE 命令判断 key 的类型。 45 44 49 53 30 30 30 39 fa 09 72 65 64 69 73 R E D I S 0 0 0 9 当发现 Redis 变慢了,可以通过下面的 checklist 来排查问题: 使用复杂度过高的命令或一次查询全量数据; 操作 bigkey; 大量 key 集中过期; 内存达到 maxmemory; 客户端使用短连接和
jmap -histo pid | sort -n -r -k 2 | head -10
{ETCD_KEY}" \ --endpoints="${HOST_1}" endpoint status --write-out="json" | egrep -o '"revision":[0-9] *' | egrep -o '[0-9].*')echo $rev整合压缩旧版本数据ETCDCTL_API=3 etcdctl --cacert="${ETCD_CA_CERT}" --cert="${
排查进程占用 C:\Users\>taskkill /PID 51560 /F 错误: 无法终止 PID 为 51560 的进程。 原因: 拒绝访问。
经过一番排查,问题最终定位在 reader 和 writer 在退出的时候没有正确关闭 channel 导致。修复后,可以看到 goroutine 的曲线明显趋于平缓: ?
你可以尝试用以下方法手动加载 repository.cern.chmkdir -p /mnt/cvmfsmount -t cvmfs repository.cern.ch /mnt/cvmfsCopycvmfs的排查问题流程需要先去区分是客户端还是服务端的问题