周一新年第一天上班,我在像往常一样登录测试环境的业务系统时,遇到了404报错。
由于之前也遇到过这个报错,当时是由于登录模块引起的,因此,大概率可以判定这次的报错也是和登录模块有关。前面几次出现问题都是由测试反馈、开发定位解决,为了避免下次再遇到此类问题时无从下手,我决定亲自尝试排查定位一次。
问题排查定位1.理清系统架构- 业务系统后台与登录系统后台是彼此独立,中间通过网关相互联系。
- 业务系统部署在服务器A,网关和登录系统后台都部署在服务器B,用户数据存储在MongoDB数据库,与业务系统一同部署在服务器A,各个服务器均处于同一内网。
在简单理清逻辑后,我决定从服务器B上的网关和登录后台开始排查。
2.排查登录相关服务① 查看服务器内存网关和登录系统后台均部署在服务器B,先简单排查一下内存和磁盘。
[root@instance-en0no105 run]# free -m
total used free shared buff/cache available
Mem: 16045 8188 2974 872 4882 6649
Swap: 0 0 0
服务器内存还剩2G多将近3G左右,可以排除内存不足导致的服务异常。
② 查看服务器磁盘[root@instance-en0no105 run]# df -Th
Filesystem Type Size Used Avail Use% Mounted on
devtmpfs devtmpfs 7.9G 0 7.9G 0% /dev
tmpfs tmpfs 7.9G 0 7.9G 0% /dev/shm
tmpfs tmpfs 7.9G 873M 7.0G 11% /run
tmpfs tmpfs 7.9G 0 7.9G 0% /sys/fs/cgroup
/dev/vda1 ext4 40G 19G 20G 49% /
tmpfs tmpfs 1.6G 0 1.6G 0% /run/user/0
磁盘状态正常,没有出现写满的情况,因此也可以排除磁盘可用空间不足的因素。
③ 排查网关排除内存和磁盘的因素,剩下就是关注各个服务了。查看服务状态最直接的方式就是查看日志,通过tail命令带上200参数可以查看日志文件最近的200条日志,带上f可以查看实时日志,因此可以边操作登录、边查看日志打印情况:
tail -200f Rds_20230130042203.log
发现了以下报错,从报错信息中可以看到socket连接超时了,推测应该是网关没有连上登录后台服务,很可能是登录后台服务有问题。
④ 排查登录系统后台服务于是,继续排查登录系统后台服务,通过登录后台日志发现连接mongodb超时了,此时需将排查重点放在服务器A的MongoDB上面。