ubuntu

Ubuntu LNMP中如何进行故障排查

小樊
34
2025-10-13 22:39:27
栏目: 智能运维

Ubuntu LNMP故障排查系统化流程

1. 确定故障类型

首先收集用户反馈(如“网站无法访问”“502 Bad Gateway”)和系统表现(如服务无法启动、响应延迟),明确故障范围(是单个服务异常还是整体架构问题),这是后续排查的基础。

2. 检查服务运行状态

使用systemctl命令逐一验证LNMP核心服务是否正常运行:

sudo systemctl status nginx    # 检查Nginx状态
sudo systemctl status mysql    # 检查MySQL/MariaDB状态(根据实际服务名调整)
sudo systemctl status php7.x-fpm  # 检查PHP-FPM状态(如php7.4-fpm、php8.1-fpm)

若服务未运行,使用sudo systemctl start <服务名>启动;若启动失败,需结合日志进一步分析。

3. 分析关键日志文件

日志是定位故障的“金钥匙”,重点检查以下日志的最新错误信息:

4. 验证配置文件语法

配置文件错误是服务无法启动的常见原因,使用以下命令检查语法正确性:

sudo nginx -t                # 检查Nginx主配置文件(/etc/nginx/nginx.conf)及站点配置
sudo php-fpm -t              # 检查PHP-FPM配置文件(如/etc/php/7.x/fpm/php.ini、/etc/php/7.x/fpm/pool.d/www.conf)
sudo mysql --validate-config # 部分MySQL版本支持(或检查mysqld.cnf语法)

若语法错误,修正后需重启对应服务使更改生效(如sudo systemctl restart nginx)。

5. 排查端口占用问题

端口冲突会导致服务无法监听指定端口(如Nginx的80/443端口、MySQL的3306端口),使用以下命令检查端口占用情况:

sudo netstat -tulnp | grep ':80'   # 检查80端口
sudo netstat -tulnp | grep ':3306' # 检查3306端口

若端口被占用,通过ps -ef | grep <进程名>找到占用进程,使用kill -9 <进程ID>终止异常进程,再重启服务。

6. 检查系统资源使用

资源瓶颈(如CPU满载、内存耗尽、磁盘空间不足)会导致服务响应缓慢或崩溃,使用以下命令监控资源状态:

top                          # 动态查看CPU、内存占用排名
free -h                      # 查看内存及交换分区使用情况
df -h                        # 查看磁盘空间使用情况
vmstat 1 5                   # 查看虚拟内存、磁盘I/O统计(每秒1次,共5次)
iostat -x 1 5                # 查看磁盘I/O详细情况(需安装sysstat包)

若资源不足,需优化服务配置(如调整PHP-FPM进程数)、清理无用文件或升级服务器配置。

7. 验证网络连通性

网络问题是网站无法访问的外部因素,需检查以下内容:

8. 处理常见特定错误

9. 更新系统与软件包

过时的系统或软件包可能存在安全漏洞或兼容性问题,定期更新:

sudo apt update              # 更新软件包列表
sudo apt upgrade             # 升级所有可升级的软件包
sudo apt dist-upgrade        # 升级系统版本(可选)

10. 寻求专业帮助

若以上步骤无法解决问题,建议:

0
看了该问题的人还看了