gpt4 book ai didi

php - 设置从 EBS 共享加载文件的超时

转载 作者:塔克拉玛干 更新时间:2023-11-03 05:38:42 26 4
gpt4 key购买 nike

所以我遇到了一个有趣的情况,但我不确定如何解决它。

我们有一个流程来汇总我们的销售数据,然后通过 Google Chart 构建图表。为了避免破坏数据库(或谷歌),它每 30 分钟只运行一次。它会查看之前的文件以确定它是否达到 30 分钟的阈值,如果是,它会构建新文件。我们在负载均衡器后面有两台服务器。因此,两台服务器都必须访问同一位置才能存储此文件。我们使用通过 NFS 安装的 EBS 共享来完成此操作(我们的整个设置都在 AWS 中)。这个过程工作得很好。

问题是有时 EBS 共享缓慢或断开连接。这会导致链式 react ,整个我们的内部工具都在等待处理这个文件(除非您关闭通知)。我读过一些讨论 this one 的话题(比如 stream_set_timeout)但不清楚如何使用它来加载文件(它不完全是一个流),而且我一直找不到任何示例。

这里有一个片段可以让您了解 PHP 文件在做什么

$file = '/ebs/path/to/image.png';
$newfile=false;
if(!is_file($file)) $newfile=true;
elseif(filemtime($file)+1800 < time()) {
$newfile=true;
unlink($file);
}
if(!$newfile){
$i=imagecreatefrompng($file);
header('Content-Type: image/png');
header('Expires: ' . gmdate('D, d M Y H:i:s', filemtime($file) + $timeout) . ' GMT');
imagepng($i);
imagedestroy($i);
exit;
} else {
// Build and output a new file here
}

如何为这个脚本创建超时?

最佳答案

这与其说是问题的答案,不如说是问题的解决方案,但是请在服务器运行良好和文件运行时间过长时发布 iostat -x 1 的输出加载。我发现当 avgqu-sz 超过 30 时,即使在配置了 IOPS 的驱动器上(我们的驱动器配置为 2000 IOPS),EBS 也会变慢。解决方案是在情况好转之前一三秒钟内尽量不要读取或写入它。

此外,尝试克隆卷并使用克隆代替原始卷。我发现一些 AWS 系统只是“坏”了,需要更换:这适用于 EC2 实例、EBS 卷、RDS 服务等。当运气使您与另一个可能不是好邻居的用户一起使用运行 VM 的硬件时,可能会发生这种情况。只需克隆资源并重新启动它通常会将其移动到不同的硬件并解决此类问题。

编辑:阅读this great post关于如何解释 iostat 输出,重点是 iostat 如何与 EBS 相关。我已经读了十几遍了。

关于php - 设置从 EBS 共享加载文件的超时,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20154867/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com