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

文章目录

    公司有一台阿里云的服务器,今天突然 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 聊聊,或者关注我的个人公众号“大象工具”, 查看更多联系方式