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

本文涉及的产品
RDS MySQL Serverless 基础系列,0.5-2RCU 50GB
云数据库 RDS MySQL,高可用系列 2核4GB
RDS MySQL Serverless 高可用系列,价值2615元额度,1个月
简介:

这次网站的故障出现的比较突然,没有任何防备,有种突如其来的感觉。这是一台阿里云服务器,采用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应用都崩溃掉还是什么原因呢?如果您知道问题所在,请告诉我。






本文转自秋楓博客园博客,原文链接:http://www.cnblogs.com/rwxwsblog/p/4630368.html,如需转载请自行联系原作者
相关实践学习
每个IT人都想学的“Web应用上云经典架构”实战
本实验从Web应用上云这个最基本的、最普遍的需求出发,帮助IT从业者们通过“阿里云Web应用上云解决方案”,了解一个企业级Web应用上云的常见架构,了解如何构建一个高可用、可扩展的企业级应用架构。
MySQL数据库入门学习
本课程通过最流行的开源数据库MySQL带你了解数据库的世界。   相关的阿里云产品:云数据库RDS MySQL 版 阿里云关系型数据库RDS(Relational Database Service)是一种稳定可靠、可弹性伸缩的在线数据库服务,提供容灾、备份、恢复、迁移等方面的全套解决方案,彻底解决数据库运维的烦恼。 了解产品详情: https://www.aliyun.com/product/rds/mysql 
目录
相关文章
|
4月前
|
前端开发 算法 API
构建高性能图像处理Web应用:Next.js与TailwindCSS实践
本文分享了构建在线图像黑白转换工具的技术实践,涵盖技术栈选择、架构设计与性能优化。项目采用Next.js提供优秀的SSR性能和SEO支持,TailwindCSS加速UI开发,WebAssembly实现高性能图像处理算法。通过渐进式处理、WebWorker隔离及内存管理等策略,解决大图像处理性能瓶颈,并确保跨浏览器兼容性和移动设备优化。实际应用案例展示了其即时处理、高质量输出和客户端隐私保护等特点。未来计划引入WebGPU加速、AI增强等功能,进一步提升用户体验。此技术栈为Web图像处理应用提供了高效可行的解决方案。
|
4月前
|
缓存 前端开发 应用服务中间件
Web端实时通信技术SSE在携程机票业务中的实践应用
本文介绍了携程机票前端基于Server-Sent Events(SSE)实现服务端推送的企业级全链路通用技术解决方案。文章深入探讨了 SSE 技术在应用过程中包括方案对比、技术选型、链路层优化以及实际效果等多维度的技术细节,为类似使用场景提供普适性参考和借鉴。
112 7
|
7月前
|
中间件 关系型数据库 数据库
docker快速部署OS web中间件 数据库 编程应用
通过Docker,可以轻松地部署操作系统、Web中间件、数据库和编程应用。本文详细介绍了使用Docker部署这些组件的基本步骤和命令,展示了如何通过Docker Compose编排多容器应用。希望本文能帮助开发者更高效地使用Docker进行应用部署和管理。
186 19
|
8月前
|
Web App开发 编解码 vr&ar
使用Web浏览器访问UE应用的最佳实践
在3D/XR应用开发中,尤其是基于UE(虚幻引擎)开发的高精度场景,传统终端因硬件局限难以流畅运行高帧率、复杂效果的三维应用。实时云渲染技术,将渲染任务转移至云端服务器,降低终端硬件要求,确保用户获得流畅体验。具备弹性扩展、优化传输协议、跨平台支持和安全性等优势,适用于多种终端和场景,特别集成像素流送技术,帮助UE开发者实现低代码上云操作,简化部署流程,保留UE引擎的强大开发能力,确保画面精美且终端轻量化。
350 17
使用Web浏览器访问UE应用的最佳实践
|
6月前
|
安全 大数据 数据挖掘
课时9:阿里云Web应用防火墙:全面保障网站的安全与可用性
阿里云Web应用防火墙(WAF)基于阿里巴巴十年攻防经验,提供全面的网站安全防护。它通过Web应用防护、CC攻击防护和业务风控,有效应对各类网络威胁,确保网站的安全与可用性。智能双引擎技术降低误报率,实时数据分析和虚拟补丁更新保障系统安全。WAF已成功护航多个重大活动,为企业提供高效、简便的安全解决方案。
144 0
|
9月前
|
Kubernetes 安全 Devops
有效抵御网络应用及API威胁,聊聊F5 BIG-IP Next Web应用防火墙
有效抵御网络应用及API威胁,聊聊F5 BIG-IP Next Web应用防火墙
242 10
有效抵御网络应用及API威胁,聊聊F5 BIG-IP Next Web应用防火墙
|
9月前
|
弹性计算 Java 关系型数据库
Web应用上云经典架构实践教学
Web应用上云经典架构实践教学
167 2
Web应用上云经典架构实践教学
|
9月前
|
弹性计算 Java 数据库
Web应用上云经典架构实战
本课程详细介绍了Web应用上云的经典架构实战,涵盖前期准备、配置ALB、创建服务器组和监听、验证ECS公网能力、环境配置(JDK、Maven、Node、Git)、下载并运行若依框架、操作第二台ECS以及验证高可用性。通过具体步骤和命令,帮助学员快速掌握云上部署的全流程。
204 1
|
10月前
|
前端开发 JavaScript UED
在数字化时代,Web 应用性能优化尤为重要。本文探讨了CSS与HTML在提升Web性能中的关键作用及未来趋势
在数字化时代,Web 应用性能优化尤为重要。本文探讨了CSS与HTML在提升Web性能中的关键作用及未来趋势,包括样式表优化、DOM操作减少、图像优化等技术,并分析了电商网站的具体案例,强调了技术演进对Web性能的深远影响。
123 5
|
10月前
|
机器学习/深度学习 人工智能 JavaScript
JavaScript和TypeScript的未来发展趋势及其在Web开发中的应用前景
本文探讨了JavaScript和TypeScript的未来发展趋势及其在Web开发中的应用前景。JavaScript将注重性能优化、跨平台开发、AI融合及WebAssembly整合;TypeScript则强调与框架整合、强类型检查、前端工程化及WebAssembly的深度结合。两者结合发展,特别是在Vue 3.0中完全采用TypeScript编写,预示着未来的Web开发将更加高效、可靠。
389 4