MENU

小白,服务器崩了

2016 年 11 月 24 日 • 杂乱文章

最严重的一次误操作

最近新上了一个项目,有些功能需要用户上传图片,但是图片不能单存在一个服务器节点,所有节点都必须要有。前端nginx做代理,后端有4个节点,在四个节点上都要有用户上传好的图片,所以用的是NFS,但是下午有点忙了,设置好NFS之后,在其中一台服务器节点mount挂载NFS的时候不知是手残还是脑残了,将要挂载的位置写错了。刚开始还没发现,直到开发的大哥说,小白,164服务器崩了,因为他们在实时看项目日志,发现卡住不动了,所以认为挂了。命令向上翻了一下,我才发现,挂错地方了卧槽,www下存放的是web服务器软件以及项目,啥后果我就不说了。更严重的是我进入到/www之后服务器直接卡死不动了。一台服务器节点是跑了多个项目,卧槽,这下麻烦大了,全都挂了,哈哈

现在想办法把损失降到最小,首先修改nginx配置文件,现在的情况是该服务器卡死不动,我刚刚也提到了,我挂错的位置有web服务器软件以及项目,项目现在也找不到了,如果nginx的请求转发过来了返回的绝逼是500错误,而且我在nginx的配置文件也没有配置proxy_next_upstream,只能去改配置文件了,出问题的节点后面加上down,表示当前服务器不参与负载

root@10-10-32-212:~# grep "down" /etc/nginx/sites-enabled/manage-fs.conf 
    server 10.10.20.164:80 max_fails=1 fail_timeout=10s down;
root@10-10-32-212:~# nginx -s reload

然后等了5~6分钟,终于能动了,先是把web应用全杀了,开始umout,但是出现以下错误。

root@10-10-20-164:~# umount /www 
umount.nfs4: /www: device is busy
umount.nfs4: /www: device is busy
root@10-10-20-164:~#

解决方法

出现以上情况,说明文件已经被进程占用了,所以卸载不掉,所以说刚刚没杀干净,解决方法就是找出占用的进程,并杀掉,然后卸载,卸载后杀掉web服务,然后再启动,确定没问题后,将nginx的配置调整到之前的状态,一切恢复正常。

root@10-10-20-164:~# fuser -v -m /www/
                     用户     进程号 权限   命令
/www:                root     kernel mount /www
                     root      30488 F.... java
root@10-10-20-164:~# kill -9 30488
root@10-10-20-164:~# umount /www
最后编辑于: 2018 年 12 月 10 日
返回文章列表 文章二维码 打赏
本页链接的二维码
打赏二维码