4、建立集中的数据可视平台,不至于遇到问题才开始着手分析,若是对业务没有足够的了解又没有数据依赖,就很可能在解决问题时雪上加霜。
5、建立沙箱影子系统,模拟复杂多变的现网环境,规避线上影响,重现或压测问题,如tcpcopy、dubbocopy等。
6、搭建开源的日志可视方案,协助我们去解决最后”一公里”的问题,常见如ELK、Log.io等。
7、善其事必先利其器,常见系统排查工具perf、iptraf、netperf、tcpdump、gdb、pstack、jstack、strace,top、iotop、tsar等。
8、在升级版本或者替换或修改文件时,一定要做好备份,要保证随时可以还原。
9、程序在使用多线程时,尽可能的减少多线程竞争锁,可以将数据分段,各个线程分别读取。
10、尽量不要在线程中做大量耗时的网络操作,如查询数据库(可以的话在一开始就将数据从从 DB 中查出准备好)。
11、建议对线程取一个有意义的名称,这样对于在排查问题时很有必要,如当拿到程序线程堆栈信息时,可直接根据线程名在日志中找到相关的堆栈。
12、生产环境进行问题排查时一定要保证不要影响正常的业务执行。