记一次业务系统登录报错404问题排查与解决实践

本文涉及的产品
云数据库 MongoDB,独享型 2核8GB
推荐场景:
构建全方位客户视图
日志服务 SLS,月写入数据量 50GB 1个月
简介: 业务系统登录报错404问题排查与解决实践过程记录总结

背景

周一新年第一天上班,我在像往常一样登录测试环境的业务系统时,遇到了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上面。

3.排查MongoDB数据库

① 查看服务状态

ps -ef | grep mongo

通过命令发现没有mongo相关进程,可见mongo没有在运行,这也就能解释为什么登录系统后台服务连接失败了。

② 启动mongo服务

bin目录下有很多二进制文件,mongo是客户端,mongod是后台服务

cd /opt/mongodb/bin
./mongod  # 启动mongod

启动提示数据文件不存在,此前一直正常使用,并没有删除过MongoDB的数据文件。很可能是配置的目录不正确或没有正确加载配置文件。

③ 查看mongo配置文件

查看bin目录下的mongodb.conf

配置文件中的dbPath为/home/soft/mongodb/mongodb3.4.3/data,与报错提示中的/data/db不一致,因此是没有正确加载配置文件,在启动MongoDB时需要指定配置文件启动:

[root@instance-oay02i0j bin]# ./mongod -f mongodb.conf
about to fork child process, waiting until server is ready for connections.
forked process: 29108
child process started successfully, parent exiting

mongo启动成功。

④ 验证服务状态及登录情况

页面再次尝试登录,登录成功。

网关日志正常:

登录后台日志正常:

总结

  • 这次的最根本原因是由于MongoDB没有启动,从而导致:登录后台连接MongoDB失败、网关连接登录后台失败,最终导致登录失败。重启MongoDB后一切恢复正常,启动MongoDB时要通过-f参数指定配置文件启动。
  1. 通过这次排查定位问题,不仅加深了对系统架构的了解,同时也能够避免下次再出现此类问题时麻烦开发、大大提高解决问题的效率。
  2. 总的来说,这个案例比较短小,排查起来也不是特别复杂,前提是弄清楚系统架构、各个服务之间的相关依赖关系以及一些常用的Linux命令。


相关实践学习
MongoDB数据库入门
MongoDB数据库入门实验。
快速掌握 MongoDB 数据库
本课程主要讲解MongoDB数据库的基本知识,包括MongoDB数据库的安装、配置、服务的启动、数据的CRUD操作函数使用、MongoDB索引的使用(唯一索引、地理索引、过期索引、全文索引等)、MapReduce操作实现、用户管理、Java对MongoDB的操作支持(基于2.x驱动与3.x驱动的完全讲解)。 通过学习此课程,读者将具备MongoDB数据库的开发能力,并且能够使用MongoDB进行项目开发。   相关的阿里云产品:云数据库 MongoDB版 云数据库MongoDB版支持ReplicaSet和Sharding两种部署架构,具备安全审计,时间点备份等多项企业能力。在互联网、物联网、游戏、金融等领域被广泛采用。 云数据库MongoDB版(ApsaraDB for MongoDB)完全兼容MongoDB协议,基于飞天分布式系统和高可靠存储引擎,提供多节点高可用架构、弹性扩容、容灾、备份回滚、性能优化等解决方案。 产品详情: https://www.aliyun.com/product/mongodb
相关文章
|
7月前
|
敏捷开发 测试技术 持续交付
云效产品使用常见问题之统计功能开启失败如何解决
云效作为一款全面覆盖研发全生命周期管理的云端效能平台,致力于帮助企业实现高效协同、敏捷研发和持续交付。本合集收集整理了用户在使用云效过程中遇到的常见问题,问题涉及项目创建与管理、需求规划与迭代、代码托管与版本控制、自动化测试、持续集成与发布等方面。
|
7月前
|
运维 监控 数据挖掘
应用研发平台EMAS产品常见问题之将阿里后台的日志落到我们后台失败如何解决
应用研发平台EMAS(Enterprise Mobile Application Service)是阿里云提供的一个全栈移动应用开发平台,集成了应用开发、测试、部署、监控和运营服务;本合集旨在总结EMAS产品在应用开发和运维过程中的常见问题及解决方案,助力开发者和企业高效解决技术难题,加速移动应用的上线和稳定运行。
|
6月前
|
敏捷开发 缓存 Java
阿里云云效产品使用问题之自动化规则执行超时可以如何排查问题
云效作为一款全面覆盖研发全生命周期管理的云端效能平台,致力于帮助企业实现高效协同、敏捷研发和持续交付。本合集收集整理了用户在使用云效过程中遇到的常见问题,问题涉及项目创建与管理、需求规划与迭代、代码托管与版本控制、自动化测试、持续集成与发布等方面。
|
5月前
|
数据采集 算法 API
开发与运维命令问题之安装和使用ToolLLaMa如何解决
开发与运维命令问题之安装和使用ToolLLaMa如何解决
41 0
|
7月前
|
存储 监控 安全
服务器常见问题以及处理方案
服务器常见问题以及处理方案
|
7月前
|
敏捷开发 测试技术 持续交付
云效产品使用常见问题之线上部署失败如何解决
云效作为一款全面覆盖研发全生命周期管理的云端效能平台,致力于帮助企业实现高效协同、敏捷研发和持续交付。本合集收集整理了用户在使用云效过程中遇到的常见问题,问题涉及项目创建与管理、需求规划与迭代、代码托管与版本控制、自动化测试、持续集成与发布等方面。
|
7月前
|
敏捷开发 域名解析 缓存
云效产品使用常见问题之效能洞察查看失败如何解决
云效作为一款全面覆盖研发全生命周期管理的云端效能平台,致力于帮助企业实现高效协同、敏捷研发和持续交付。本合集收集整理了用户在使用云效过程中遇到的常见问题,问题涉及项目创建与管理、需求规划与迭代、代码托管与版本控制、自动化测试、持续集成与发布等方面。
|
JavaScript
开发遇到的问题排查
开发遇到的问题排查
|
监控 固态存储 测试技术
基于某业务单登陆场景并发测试实战
基于某业务单登陆场景并发测试实战
160 0
基于某业务单登陆场景并发测试实战
|
运维 PHP Perl
总结一些线上问题排查的命令,可能用得到!
开发运维,统计所遇到的运维问提。运维问提排查,以下场景,你可能遇到?
180 0
总结一些线上问题排查的命令,可能用得到!