PHP 服务器重启,Nginx 没有自动启动问题

更新日期: 2025-07-10 阅读次数: 49 字数: 459 分类: 服务器

公司有一台阿里云的服务器,今天突然 CPU 飙高,持续了3个小时,也没有降下来。 导致上面的网站打不开,ssh 也无法连接。

无奈选择了重启服务器。多年没有重启过服务器,内心无比慌乱。生怕数据库文件损坏。。。

重启后,发现网站还是打不开 😱。于是确认一下各个服务的状态:

  • php fpm 正常
  • mysql 正常
  • nginx 未启动。。。

80 端口被占用

尝试启动 nginx,发现报错:

$ sudo nginx
nginx: [emerg] bind() to 0.0.0.0:80 failed (98: Unknown error)
nginx: [emerg] bind() to [::]:80 failed (98: Unknown error)

确认端口被哪个进程占用

$ sudo lsof -i :80
COMMAND    PID     USER   FD   TYPE DEVICE SIZE/OFF NODE NAME
apache2   1026     root    4u  IPv6  21422      0t0  TCP *:http (LISTEN)
AliYunDun 1036     root   10u  IPv4  22402      0t0  TCP xxx:48834->:http (ESTABLISHED)
apache2   1040 www-data    4u  IPv6  21422      0t0  TCP *:http (LISTEN)
apache2   1041 www-data    4u  IPv6  21422      0t0  TCP *:http (LISTEN)

看来是 apache2 占用了 80 端口。导致 nginx 无法启动。

停止 Apache2 服务

$ sudo systemctl stop apache2

并永久禁止 Apache2 启动:

$ sudo systemctl disable apache2

启动 Nginx

$ sudo systemctl start nginx

服务器负载高的原因

看了一下阿里云后台的监控,发现服务器负载高的时间点是中午 12 点左右。

看了一下 Nginx 日志,是一个兄弟,在导出 Excel 文件,把全年的数据导出,并且里面包含了无数张图片。 但是这个 golang 的服务一直在执行,没有停下来 🥲。

导致这个低配的小服务器(2核2G的活动服务器),IO 负载过高。

吓人,我以为中了挖矿病毒。

以后还是加上网站宕机监控比较安全。我看看自己实现一个吧。

微信关注我哦 👍

大象工具微信公众号

我是来自山东烟台的一名开发者,有感兴趣的话题,或者软件开发需求,欢迎加微信 zhongwei 聊聊, 查看更多联系方式