惊魂web应用宕机记一次网站的紧急恢复

本文涉及的产品
云数据库 RDS MySQL,集群系列 2核4GB
推荐场景:
搭建个人博客
RDS MySQL Serverless 基础系列,0.5-2RCU 50GB
RDS MySQL Serverless 高可用系列,价值2615元额度,1个月
简介:   这次网站的故障出现的比较突然,没有任何防备,有种突如其来的感觉。这是一台阿里云服务器,采用wdcp的nginx+apache+mysql的方式运行。一位同事在对web目录进行压缩后,由于web目录有很多图片,导致压缩包很大。

  这次网站的故障出现的比较突然,没有任何防备,有种突如其来的感觉。这是一台阿里云服务器,采用wdcp的nginx+apache+mysql的方式运行。一位同事在对web目录进行压缩后,由于web目录有很多图片,导致压缩包很大。如果全部压缩的话在4G左右,如果在龟速的网络下,全部压缩下载是个非常痛苦的事情。由于是在wdcp的管理界面中进行的压缩,点击全部压缩后整个web应用都没反应,过了一会干脆直接访问不了。由于web访问页面无法打开,wdcp也访问不了,于是尝试直接用SecureCRT连服务器。可喜的是SecureCRT可以连上服务器。于是有了下面一系列的操作。

  1、查看nginx服务是否启动

ps -ef|grep nginx

  发现nginx服务没有起来,于是启动nginx服务

service ngxind restart

  查看nginx是否启动成功

ps -ef|grep nginx

  此时,nginx已经成功启动

root      1690     1  0 12:01 ?        00:00:00 nginx: master process /www/wdlinux/nginx/sbin/nginx -c /www/wdlinux/nginx/conf/nginx.conf
www       1692  1690  0 12:01 ?        00:00:00 nginx: worker process                                              
www       1693  1690  0 12:01 ?        00:00:00 nginx: worker process                                              
www       1694  1690  0 12:01 ?        00:00:00 nginx: worker process  

  此时刷新网页,仍然无法访问

  2、检查apache是否正常

ps -ef|grep httpd

  发现apache没有起来,于是启动apache

service httpd restart

  查看启动结果

ps -ef|grep httpd
root      1716     1  0 12:01 ?        00:00:00 /www/wdlinux/apache/bin/httpd
www       1721  1716  0 12:01 ?        00:00:09 /www/wdlinux/apache/bin/httpd
www       1722  1716  0 12:01 ?        00:00:11 /www/wdlinux/apache/bin/httpd
www       1723  1716  0 12:01 ?        00:00:10 /www/wdlinux/apache/bin/httpd
www       1724  1716  0 12:01 ?        00:00:09 /www/wdlinux/apache/bin/httpd
www       1725  1716  0 12:01 ?        00:00:11 /www/wdlinux/apache/bin/httpd
root      2216     1  0 12:03 ?        00:00:00 /www/wdlinux/wdapache/bin/httpd
wdcpu     2228  2216  0 12:03 ?        00:00:00 /www/wdlinux/wdapache/bin/httpd
www       2720  1716  0 12:09 ?        00:00:11 /www/wdlinux/apache/bin/httpd
wdcpu     2889  2216  0 13:42 ?        00:00:00 /www/wdlinux/wdapache/bin/httpd

  再次刷新页面,此时报一个莫名其妙的异常,说文件不存在。由于涉及到具体网站和文件,这里就不贴详细异常了。

  于是看看这些文件是否真的少了,然而查找的结果是文件一个都没少。于是发呆了一会,感觉没道理。怎么会报这样的异常呢?郁闷中。。。

  又过了一会,看了异常的一个文件,报错的都是一些数据库变量。想了下,这是一个ecshop的程序,会不会是缓存被破坏了的原因呢?于是到将缓存目录的内容都删掉

rm -rf ./temp/static_caches
rm -rf ./temp/caches

  注意,这里用到了rm -rf,目录开头是“./”而不是“/”,不要自己坑自己了;到时候出问题了呼天喊地,再大声的“我爸是李刚”也没用。

  再次刷新页面,此时出现一个异常是

ECSHOP info: Can't Connect MySQL Server(localhost:XXXX)!

  3、启动mysql

service mysqld restart

  执行了上述命令后,等了很久都没反应,心急如焚

MySQL manager or server PID file could not be found!
Starting MySQL.............................................................................................................................

  于是ctr + c 结束掉;再次运行,仍然如此。于是看看进程在不在

ps -ef|grep mysqld

  发现进程是在的,但就是重启不成功。于是网上查了下,各种说法和原因都有。也有说是mysql目录权限的问题,于是

chown -R root:root /www/wdlinux/mysql-5.1.63

  再次检查,仍旧没有解决。有些说kill掉进程重启就行了,但这并不是我原因做的事情。因为kill掉进程是有风险的。后来又折腾了很久,实在没办法,最后还是选择了将进程kill掉。

  查看进程ID

ps aux |grep mysql*

  将进程kill掉

kill 23238

  再次查看,进程还在。。。。。,没办法,只能使出必杀技了(总是隐约中感觉到有点不太好)。

kill -9 23238

  再次查看,这会好了,消腾了(好戏还在后头)。

service mysqld restart

  期待的是

service mysqld restart
Starting MySQL... SUCCESS! 

  但是现实总是残酷的,

service mysqld restart
 ERROR! MySQL manager or server PID file could not be found!
Starting MySQL. ERROR! Manager of pid-file quit without updating file.

  于是网上找了一下,有说是磁盘空间已满、mysql使用的端口已经被占用、binlog日志文件错误、权限问题等等;还有说要删除日志文件data/mysql-bin.index的,再怎么说不能删日志文件呀,磁盘空间也足够,mysql端口也正常。剩下的就是权限问题了

chown -R root:root /www/wdlinux/mysql-5.1.63

  再次尝试启动mysql,仍然无果。于是查看了下mysql的var目录,有一个XXXXXXXXX.err的文件,打开看一下

tail -100 XXXXXXX.err

  末尾的一段是这样的

150708 12:04:40 mysqld_safe Starting mysqld daemon with databases from /www/wdlinux/mysql-5.1.63/var
/www/wdlinux/mysql-5.1.63/libexec/mysqld: Can't find file: './mysql/plugin.frm' (errno: 13)
150708 12:04:40 [ERROR] Can't open the mysql.plugin table. Please run mysql_upgrade to create it.
150708 12:04:40 [ERROR] /www/wdlinux/mysql-5.1.63/libexec/mysqld: Can't create/write to file '/www/wdlinux/mysql-5.1.63/var/XXXXXXXXXXXX.pid' (Errcode: 13)
150708 12:04:40 [ERROR] Can't start server: can't create PID file: Permission denied
150708 12:04:40 mysqld_safe mysqld from pid file /www/wdlinux/mysql-5.1.63/var/XXXXXXXXXXXX.pid ended

  Can't start server: can't create PID file: Permission denied,异常仍然说是权限不足。于是

chown -R mysql:mysql /www/wdlinux/mysql-5.1.63/*

  再次重启

[root@XXXXXXXXXXXXXXXXX mysql-5.1.63]# service mysqld restart
 ERROR! MySQL manager or server PID file could not be found!
Starting MySQL... SUCCESS! 

  我的奥特曼终于出现了,于是刷新下网站页面。一切正常,松了口气。。。

  4、后记

  虽然问题解决了,但是中间还是有很多问题值得思考的。

  a、当碰到这样的问题的时候,其实并没有事先想好一个预案和解决办法,碰到问题马上上来就着手解决。只是脑子里有个大概的思路,问题应该出在哪,然后一步步去解决。这也是解决问题的一种方法,但显然不是最有效和快速的。例如,中间的删除缓存,这一步其实就没什么必要了,因为问题不出在缓存,而处在mysql上。

  b、对于kill -9和rm -rf这种强有力的杀伤性武器,用的时候必须慎重。如果一不小心kill -9导致整个mysql都用不了呢?想想都觉得可怕,还好这次顺利地解决了问题。

  c、wdcp中mysql的var目录需要mysql用户及用户组的权限,也就是说上诉修改mysql目录权限的步骤没有必要。因为这是在没有明确问题所在,又引入了一个新的问题,进而重复解决。说得明白一点就是将简单的问题复杂化了。

  d、对于一些占用资源的操作,建议还是直接用SecureCRT等工具操作较为妥当,避免出现不必要的问题。

  e、上诉的所有操作也许敌不过一条命令,那就是reboot;据说reboot可以解决掉百分之九十的问题。

  f、最后的最后,为什么使用wdcp控制面板压缩会导致这样的问题呢?原因是什么呢?是由于太占用资源导致整个web应用都崩溃掉还是什么原因呢?如果您知道问题所在,请告诉我。

相关实践学习
如何快速连接云数据库RDS MySQL
本场景介绍如何通过阿里云数据管理服务DMS快速连接云数据库RDS MySQL,然后进行数据表的CRUD操作。
全面了解阿里云能为你做什么
阿里云在全球各地部署高效节能的绿色数据中心,利用清洁计算为万物互联的新世界提供源源不断的能源动力,目前开服的区域包括中国(华北、华东、华南、香港)、新加坡、美国(美东、美西)、欧洲、中东、澳大利亚、日本。目前阿里云的产品涵盖弹性计算、数据库、存储与CDN、分析与搜索、云通信、网络、管理与监控、应用服务、互联网中间件、移动服务、视频服务等。通过本课程,来了解阿里云能够为你的业务带来哪些帮助     相关的阿里云产品:云服务器ECS 云服务器 ECS(Elastic Compute Service)是一种弹性可伸缩的计算服务,助您降低 IT 成本,提升运维效率,使您更专注于核心业务创新。产品详情: https://www.aliyun.com/product/ecs
目录
打赏
0
0
0
0
2
分享
相关文章
如何在Python Web开发中确保应用的安全性?
如何在Python Web开发中确保应用的安全性?
前端性能调优:HTTP/2与HTTPS在Web加速中的应用
【10月更文挑战第27天】本文介绍了HTTP/2和HTTPS在前端性能调优中的应用。通过多路复用、服务器推送和头部压缩等特性,HTTP/2显著提升了Web性能。同时,HTTPS确保了数据传输的安全性。文章提供了示例代码,展示了如何使用Node.js创建一个HTTP/2服务器。
82 3
构建响应式Web界面:Flexbox与Grid的实战应用
【10月更文挑战第22天】随着互联网的普及,用户对Web界面的要求越来越高,不仅需要美观,还要具备良好的响应性和兼容性。为了满足这些需求,Web开发者需要掌握一些高级的布局技术。Flexbox和Grid是现代Web布局的两大法宝,它们分别由CSS3和HTML5引入,能够帮助开发者构建出更加灵活和易于维护的响应式Web界面。本文将深入探讨Flexbox和Grid的实战应用,并通过具体实例来展示它们在构建响应式Web界面中的强大能力。
56 3
探索现代Web应用的微前端架构
【10月更文挑战第40天】在数字时代的浪潮中,Web应用的发展日益复杂多变。微前端架构作为一种新兴的设计理念,正逐步改变着传统的单一前端开发模式。本文将深入探讨微前端的核心概念、实现原理及其在实际项目中的应用,同时通过一个简单的代码示例,揭示如何将一个庞大的前端工程拆分成小而美的模块,进而提升项目的可维护性、可扩展性和开发效率。
使用Web浏览器访问UE应用的最佳实践
在3D/XR应用开发中,尤其是基于UE(虚幻引擎)开发的高精度场景,传统终端因硬件局限难以流畅运行高帧率、复杂效果的三维应用。实时云渲染技术,将渲染任务转移至云端服务器,降低终端硬件要求,确保用户获得流畅体验。具备弹性扩展、优化传输协议、跨平台支持和安全性等优势,适用于多种终端和场景,特别集成像素流送技术,帮助UE开发者实现低代码上云操作,简化部署流程,保留UE引擎的强大开发能力,确保画面精美且终端轻量化。
使用Web浏览器访问UE应用的最佳实践
有效抵御网络应用及API威胁,聊聊F5 BIG-IP Next Web应用防火墙
有效抵御网络应用及API威胁,聊聊F5 BIG-IP Next Web应用防火墙
73 10
有效抵御网络应用及API威胁,聊聊F5 BIG-IP Next Web应用防火墙
Web应用上云经典架构实战
本课程详细介绍了Web应用上云的经典架构实战,涵盖前期准备、配置ALB、创建服务器组和监听、验证ECS公网能力、环境配置(JDK、Maven、Node、Git)、下载并运行若依框架、操作第二台ECS以及验证高可用性。通过具体步骤和命令,帮助学员快速掌握云上部署的全流程。
在数字化时代,Web 应用性能优化尤为重要。本文探讨了CSS与HTML在提升Web性能中的关键作用及未来趋势
在数字化时代,Web 应用性能优化尤为重要。本文探讨了CSS与HTML在提升Web性能中的关键作用及未来趋势,包括样式表优化、DOM操作减少、图像优化等技术,并分析了电商网站的具体案例,强调了技术演进对Web性能的深远影响。
49 5
JavaScript和TypeScript的未来发展趋势及其在Web开发中的应用前景
本文探讨了JavaScript和TypeScript的未来发展趋势及其在Web开发中的应用前景。JavaScript将注重性能优化、跨平台开发、AI融合及WebAssembly整合;TypeScript则强调与框架整合、强类型检查、前端工程化及WebAssembly的深度结合。两者结合发展,特别是在Vue 3.0中完全采用TypeScript编写,预示着未来的Web开发将更加高效、可靠。
68 4
AI助理

你好,我是AI助理

可以解答问题、推荐解决方案等