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

本文涉及的产品
云数据库 MongoDB,通用型 2核4GB
简介: 业务系统登录报错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
相关文章
|
22天前
|
敏捷开发 测试技术 持续交付
云效产品使用常见问题之统计功能开启失败如何解决
云效作为一款全面覆盖研发全生命周期管理的云端效能平台,致力于帮助企业实现高效协同、敏捷研发和持续交付。本合集收集整理了用户在使用云效过程中遇到的常见问题,问题涉及项目创建与管理、需求规划与迭代、代码托管与版本控制、自动化测试、持续集成与发布等方面。
|
2月前
|
运维 监控 数据挖掘
应用研发平台EMAS产品常见问题之将阿里后台的日志落到我们后台失败如何解决
应用研发平台EMAS(Enterprise Mobile Application Service)是阿里云提供的一个全栈移动应用开发平台,集成了应用开发、测试、部署、监控和运营服务;本合集旨在总结EMAS产品在应用开发和运维过程中的常见问题及解决方案,助力开发者和企业高效解决技术难题,加速移动应用的上线和稳定运行。
|
18天前
|
SQL
线上问题排查日志实战
线上问题排查日志实战
10 1
|
2月前
|
监控 NoSQL 关系型数据库
Serverless 应用引擎常见问题之现象上是注册中心业务模块掉线了如何解决
Serverless 应用引擎(Serverless Application Engine, SAE)是一种完全托管的应用平台,它允许开发者无需管理服务器即可构建和部署应用。以下是Serverless 应用引擎使用过程中的一些常见问题及其答案的汇总:
20 0
|
2月前
|
监控 NoSQL 关系型数据库
Serverless 应用引擎常见问题之注册中心业务模块掉线了如何解决
Serverless 应用引擎(Serverless Application Engine, SAE)是一种完全托管的应用平台,它允许开发者无需管理服务器即可构建和部署应用。以下是Serverless 应用引擎使用过程中的一些常见问题及其答案的汇总:
29 2
|
2月前
|
监控 Serverless 开发者
Serverless 应用引擎常见问题之设置应用健康检测不通过的警告发短信如何解决
Serverless 应用引擎(Serverless Application Engine, SAE)是一种完全托管的应用平台,它允许开发者无需管理服务器即可构建和部署应用。以下是Serverless 应用引擎使用过程中的一些常见问题及其答案的汇总:
26 2
|
监控 固态存储 测试技术
基于某业务单登陆场景并发测试实战
基于某业务单登陆场景并发测试实战
129 0
基于某业务单登陆场景并发测试实战
|
运维 PHP Perl
总结一些线上问题排查的命令,可能用得到!
开发运维,统计所遇到的运维问提。运维问提排查,以下场景,你可能遇到?
127 0
总结一些线上问题排查的命令,可能用得到!
|
运维 监控 Serverless
部署失败问题排查|学习笔记
快速学习部署失败问题排查
168 0
部署失败问题排查|学习笔记
EMQ
|
存储 运维 监控
EMQX Cloud 更新:日志分析增加更多参数,监控运维更省心
近日,EMQX Cloud 发布功能更新:对「日志」模块进行了优化,新增多个分析参数,帮助用户进行更加有效系统监控与运维。
EMQ
177 0
EMQX Cloud 更新:日志分析增加更多参数,监控运维更省心