工作过程中的教训

1,对于内外网需要打通的问题,需要考虑安全性的情况。 外网需要访问内网的部分接口,就只开指定的接口,不要全部开放;

2,对于发布的事情,需要谨慎对待。一次错误退回后,就得详细验证通过后再发布,决不允许反复发布。

3,定位问题的时候一切以页面问题根源作为入口,然后再打印日志; 以问题入口为起点,层层打印日志;直到找到问题原因;不要一上来认为哪里有问题就从哪里入手,因为可能还有其他人修改的地方是你不知道的。

4,定位CPU执行很慢的问题

a,数据库表的数据量是否过大,导致插入或查询很慢;

b,查看docker的fullgc等情况;

c,查看top命令查进程和查线程;

5,定位问题思路

如果2个docker容器一致,一个启动成功一个启动失败:先看日志,根据日志一步步定位;然后看配置文件是否有什么差别;再看启动命令是否有什么不同;

6,如果定位问题发现数据库数据变更,前端菜单等权限没有变更,又没有请求后端接口,那么可能是系统配置中"启用了前端缓存";

7,定位问题的思路: 日志+本地复现为准,断点调试后若复现出来可能是yml配置文件错误。比如:数据库连接配置写错了导致的卡死现象:在jdbcTemplate执行查询的时候抛错了,但是定位到指定代码时,发现sql语句按照分析的场景并不会报错。可以继续向下追查其他日志,最终定位的是jdbcTemplate在初始化传递datasource的时候,datasource初始化报错,而这个错误并没有抛出异常。

8,有时候本地改了生效,部署上去未生效,就要检查是否存在外部配置文件有覆盖的现象,同时通过日志查看外部配置文件是否在启动过程中加载进去(否则外部配置文件怎么改都未生效)

9,同一份代码,展示效果不一样的问题解决思路: 可能是数据权限的问题,可以把DEBUG日志打开进行详细排查:比如sql语句;

10,如果遇到了定时任务执行很长的排查思路:

a,使用jstack pid查询这个任务主要卡在哪里没有执行;

b,如果排查发现是表查询很慢,那么先看看这个表数据量有多少,如果超过百万,且查询又没有加上索引,那么可能就是全表扫描,所以会很慢。

c,加索引的逻辑根据查询条件来加

11,如果项目到后期因为人员问题导致项目无法收尾,可以先让此人把项目中的问题罗列出来一个个去解决,同时可以对问题用轻重缓急的程度排序,把一个个问题消灭;在消灭的过程中一个个去测试功能,保证功能的正常使用,确认异常场景能否恢复等等情况。

12,如果一个生产网站使用nginx做代理映射到了办公网,然后生产网能正常访问,但是办公网不能访问,则需要看一下nginx日志,定位日志发现是磁盘空间(df -h命令)不够,nginx日志无法写到磁盘,导致不断刷新页面的现象。

13, linux部署jar包后,jar包无法读取linux的任意目录,只能读取jar包所在的目录作为根目录。

14,很重要的一点: 在文字聊天时,切记先看懂文字内容并理解后,再答复内容。不要着急答复!要改掉这个坏毛病。

15,一件事要做的完整,需要考虑网络等异常情况导致的遗留问题;,

16,如果一个函数内,有2个方法会抛出异常,如果第一个方法的异常不应该影响第二个方法的执行的话,理论上要在第一个方法上加上try/cache,用来保证第二个方法的正常执行;

17,写代码经验 要顾名思义,既然是all了,就不要再处理过程中进行删减,可以对比过滤生成一个新的变量,因为可能其他使用者未来要更改这一部分代码时,就能够直接使用了。

18,判断一个集合中是否包含某个值:用set 不要用list,因为list要遍历查找效率低。

19,如果有些尝试不可控,那么就用自己掌握的最简单的方式去做,不要为了尝试而去尝试,除非已经很熟练。不然会冒出各种问题,简单才是王道,比如for循环用下标的方式好久用下标遍历,而不要去用什么foreach或lambda。

20,待后续再追加。。

  • 4
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值