对于这个新手问题,我深表歉意,我真的希望得到一些关于我的问题的最佳实践建议。
我的盒子里安装了 ffmpeg,并且正在运行一个简单的脚本,该脚本使用 shell_exec 和 php 将 .mp3 文件转换为 .wav 文件。
当没有被滥用时,这个功能可以正常工作,最近,我的服务的一个用户编写了一个宏脚本,该脚本启动了转换近 10,000 个 mp3 的过程,这彻底摧毁了我的服务器,直到我拔掉电源插头。
现在,我完全理解我应该采取一些措施来防止这个问题,防止这种情况的最佳方法是什么?
我检查了 EC2 并且不得不停止并重新启动它,因为 CPU 的峰值超过 90,导致一切都崩溃了。
使用 php 脚本来检查 CPU 的负载是否有意义,如果负载超过 50% 就不运行该脚本?
我仍在学习,希望得到一些建议,让我安心,这个问题不会再次发生。
谢谢
答案1
两件事,1) 对付费客户和免费套餐用户的 API 进行速率限制。2) AWS 架构模式是将消息排队,并根据队列大小扩展工作人员。您甚至可以为付费用户和免费用户设置单独的队列。这样,工作人员会首先/更频繁地检查付费队列,而不是免费套餐队列。
http://docs.aws.amazon.com/autoscaling/latest/userguide/as-using-sqs-queue.html