AWS EFS 是不是足够快以执行 PHP 代码?
Posted
技术标签:
【中文标题】AWS EFS 是不是足够快以执行 PHP 代码?【英文标题】:Is AWS EFS fast enough for PHP code execution?AWS EFS 是否足够快以执行 PHP 代码? 【发布时间】:2017-09-20 02:34:23 【问题描述】:我想知道 AWS 上的 EFS 是否足够快来存储 php 和执行 PHP 代码?或者当 HTTP 请求进来时访问网络上的文件所花费的时间,是否是一个糟糕的解决方案?
【问题讨论】:
我没有任何指标,但我的猜测是 EFS 访问总是比 Web 服务器 PHP 渲染 + 发送到 Web 客户端的时间快 它始终取决于您的要求,但必须始终证明 EFS 的使用是合理的,以便共享基础架构。许多流行的 PHP CMS 在 EFS 下运行良好(根据我的经验),但当然,EBS 更快。 【参考方案1】:是的,它已经足够快了,但何必呢? EBS 速度更快,并且当单个实例在生产中运行时,PHP 代码本身不应更改。通常您会启动一个 EC2 实例并将代码部署到 EBS 存储。
使用 EFS 存储您的应用程序代码将是不必要的 ci/cd 快捷方式。
【讨论】:
谢谢塞缪尔。原因是因为我正在使用 Docker 构建一个可扩展的系统。我希望所有容器中都可以使用相同的数据,所以我认为 EFS 是自然的选择。我使用的是群模式,所以使用卷和 EBS 似乎很难设置。有像 rexray 这样的插件,但我不确定这些插件对生产的准备程度。你有什么想法? @NickLang 通常作为构建过程的一部分,您会将代码打包到 docker 映像中,然后可以将其部署到任何 docker 容器,并且您的代码和所有依赖项都已包含在内。在您的评论中,您说“数据”,但 php 代码不是数据。如果您想要共享数据,那么 EFS 是一种选择,但通常有更好的选择。ElasticCache、数据库、NoSQL、消息队列... 对,除了在这个应用程序中,php 代码是用户空间的东西。是上传任意代码的用户,所以我无法将他们的代码打包成图像。然而,我将 phpfpm 打包成一个正在执行代码的图像。但是 phpfpm 映像在 /mnt 有一个绑定安装的卷,它来自一个 EFS 卷。这似乎不是那么不寻常。我知道使用 EBS 会更好,但我使用的是集群模式,所以这意味着新副本都需要不同节点上的相同卷。这些卷可能很大,所以我不确定在需要时复制它们是否可行。 @NickLang 很有趣,似乎是非常不寻常的情况,因此在您的特定用例中,像 EFS 这样的替代解决方案可能是一个不错的选择。【参考方案2】:这完全取决于您的用例。它比 EBS 或临时存储慢吗?是的。对您的用例来说太慢了吗?很难说。
使用 EFS 时,您会被绑定到运行 EC2 虚拟机的共享基础架构上的网络 IO 可用性。
【讨论】:
AWS 中的网络基础设施容量没有超额认购。除了您自己,您不会与任何人竞争网络带宽。一个更重要的因素是 EFS 将其整个容量与总存储量一起扩展。按照设计,小型 EFS 文件系统比大型文件系统慢得多。 Each 1 GiB stored results in replenishing your I/O token bucket at a rate of 50 KiB/s 服务设计的这一方面似乎经常被忽视。您只能通过增加存储的总数据量来加快速度。 哇,有趣,我绝对不知道。您不能为更快的速度支付更多费用吗? 现在可以了! aws.amazon.com/blogs/aws/…以上是关于AWS EFS 是不是足够快以执行 PHP 代码?的主要内容,如果未能解决你的问题,请参考以下文章
在 AWS EFS 上使用 flock 来模拟关键部分是不是安全?
AWS Cloudformation - 在 EFS 中创建初始文件夹