amazon-web-services - Amazon EC2 服务器偶尔冻结
问题描述
我已经使用 Amazon EC2 服务器 3 年多,我注意到一个反复出现的行为:一些服务器偶尔会冻结(每年 1 到 5 次)。
- 当这个事实发生时,我无法连接到服务器(尝试过 http、mysql 和 ssh 连接),直到服务器重新启动。
- 服务器重新启动后恢复工作。
- 有时服务器上线 6 个月以上,有时服务器在重启后大约 1 个月冻结。
- 我注意到这种行为的所有服务器都是微型实例(北弗吉尼亚和圣保罗)。
- 这些服务器有一个普通的 Apache 2、Mysql 5、PHP 7 环境,带有 Ubuntu 16 或 18。PHP/MySQL Web 应用程序不是 CPU 密集型的,每小时访问的用户不超过 30 个。
- Digital Ocean 服务器上的相同环境和应用程序不会重现该行为(我有两台 Digital Ocean 服务器不间断运行 2 年以上)。
我喜欢 Amazon EC2 Servers,主要是因为 Amazon 有很多有用的附加服务(比如 SES),但是这种行为真的很令人沮丧。有时我接到客户电话抱怨系统停机,我只需要重启实例来解决问题。
有没有人有解决这个问题的提示?
更新 1
- 它们是 t2.micro 实例(1Gb RAM,1 个 vCPU)。
- MySQL 显示全局变量:pastebin.com/m65ieAAb
更新 2
日志中有一个 CPU 利用率峰值,接近服务器关闭的时间。当时是凌晨 3 点。这时候每天有一个 crontab 任务来做数据库备份。但是,考虑到这个任务每天都在运行,为什么有时它会让服务器冻结?
解决方案
我还没有看到这个确切的问题,但是在任何云平台上,我认为任何实例都可能随时失败,因此我们为失败而设计。例如,我们对所有面向客户的实例进行自动缩放。任何时候实例失败,它都会被自动替换。
如果客户打电话通知您服务器已关闭,您可能需要考虑更自动化的方法来监控实例运行状况并采取自动化措施来恢复实例。
CloudWatch 还具有可用的服务器恢复操作,如果达到某些指标阈值,则可以触发这些操作。
推荐阅读
- java - 为什么我没有在 intellij 的类旁边运行图标?
- azure-api-management - 如何使用 azure api 管理进行自定义访问令牌检查并丰富请求中的数据
- spring-cloud-function - 如何使用消息流测试 Spring Cloud Function
- r - 将功能应用于特定列,同时保留其他列
- java - SimpleDateFormat 显示不一致的结果
- angularjs - Angular 代码在 Visual Studio 中工作,但在 IIS 中不工作
- dictionary - AttributeError:“dict”对象没有属性“append”并且测试失败
- sql-server - SQL Server 数据工具安装在 5 小时后安装 80% 后卡住
- sql - PostgreSQL查询:获取简洁的数字串
- c# - 常规 LINQ 方法链接中间的表达式树;动态和可空类型?