Digital Ocean Spaces (AWS S3) 上的内存大小耗尽错误

问题描述

运行 AWS S3 客户端函数似乎在我这边有问题并且占用了太多内存(生成“已用尽 3670016000 字节的允许内存大小”)。我在下面有以下代码片段

我尝试过的事情:

  1. 将版本设置为“2006-03-01”
  2. 放置一个错误的端点(这会导致主机错误输出
  3. 不同的区域(区域错误输出

我会假设客户端实例在更改配置时给出了这些响应

我目前有 2 个空间(1 个是空的,1 个有大约 60GB 的文件 - 两者都在同一区域和帐户中)

    public $config = [ 
        's3-access' => [ 
            'key' => 'some key','secret' => 'some secret','region' => 'ap-southeast-1','version' => 'latest','endpoint' => 'sgp1.digitaloceanspaces.com',] 
    ]; 

    public function createInstance(){

        $client = new S3Client([ 
            'credentials' => [ 
                'key' => $this->config['s3-access']['key'],'secret' => $this->config['s3-access']['secret'] 
            ],'version' => $this->config['s3-access']['version'],'region' => $this->config['s3-access']['region'],'endpoint' => $this->config['s3-access']['endpoint']
        ]); 

        //Blank array result
        $spaces = $client->listBuckets();
        foreach ($spaces['Buckets'] as $space){
            echo $space['Name']."\n";
        }

        //Memory size error exception with peak memory usage to 2813mb,allocated 3500mb
        $client->createBucket([
            'Bucket' => 'test-space-102201',]);


        //list objects also generated the memory error
    }

编辑:在 AWS S3 配置上打开调试模式后,我得到以下响应

-> 进入步骤init,名称为'idempotency_auto_fill' ------------------------------------- -------------- 命令设置为 array(3) { ["instance"]=> string(32) "000000007fb4cf920000000012b9d6de" ["name"]=> string(11) "ListBuckets " ["params"]=> array(2) { ["@http"]=> array(1) { ["debug"]=> 类型(流)的资源(307)} ["@context"]= > array(0) { } } } request is set to array(0) { } -> 进入步骤 init,name 's3.ssec' ------------------- ------------------ 没有变化 -> 进入步骤 init,名称 's3.source_file' ------------------ -------------------------- 没有变化 -> 进入步骤 init,name 's3.save_as' ---------- ------------------------------ 没有变化 -> 进入步骤 init,name 's3.location' ------ ------------------------------------- 没有变化 -> 进入步骤 init,名称 's3.auto_encode' - ----------------------------------------------------- 没有变化 -> 进入步骤 init,name 's3.head_object' ------------------------------------------- - 没有变化 -> 输入步骤验证,名称'验证' -------------------------------------------- 没有变化 - > 进入步骤validate,name 'input_validation_middleware' ----------------------------------------- -------------------- 没有变化 -> 进入步骤构建,名称为 'builder' ------------------ -------------------- request.instance 设置为 000000007fb4cf300000000012b9d6de request.method 设置为 GET request.headers 设置为 array(1) { ["X-Amz -Security-Token"]=> string(7) "[TOKEN]" } request.path 被设置为 sgp1.digitaloceanspaces.com -> 进入步骤构建,名称 'ApiCallMonitoringMiddleware' ----------- - - - - - - - - - - - - - - - - - - - - - - - - 没有变化 - > 进入步骤构建,名称 '' ------------------------------- request.instance 从 000000007fb4cf300000000012b9d6de 更改为 000000007fb4cf2c0000000012b9d6de request.headers .User-Agent 设置为 array(1) { [0]=> string(56) "aws-sdk-PHP/3.178.6 OS/Linux/3.10.0-1127.19.1.el7.x86_64" } ->进入步骤构建,名称 'endpoint_parameter' ------------------- ------------------------------ 没有变化 -> 进入步骤构建,名称 's3.checksum' ------ ------------------------------------ 没有变化 -> 进入步骤构建,名称为 's3.content_type' ---------------------------------------------- 没有变化 ->进入step build,name 's3.endpoint_middleware' ---------------------------------------- ------------- 没有变化 -> 进入步骤构建,名称为's3.bucket_endpoint_arn' --------------- ------------------------------ 没有变化 -> 输入步骤标志,名称为“StreamRequestPayloadMiddleware” -------- -------------------------------------------------- -- 没有变化-> 输入步骤符号,名称为'invocation-id' ---------------------------------- --------- request.instance从000000007fb4cf2c0000000012b9d6de变为000000007fb4cf280000000012b9d6de request.headers.aws-SDK-调用-ID被设置为阵列(1){[0] =>串(32) “03e4030ef1f4fd18f7d38b8265b34b7f”} - > 进入步骤标志,名称为'retry' ----------------------------------- request.inst ance 从 000000007fb4cf280000000012b9d6de 更改为 000000007fb4cf270000000012b9d6de request.headers.aws-sdk-retry 被设置为 array(1) { [0 }]'=> string(1) {[0}]'=> 签名'-> 000000007fb4cf270000000012 ---------------------------------- request.instance 从 000000007fb4cf270000000012b9d6de 更改为 000000007fb4cf340000000012b9d6de request.headers.x-amz- content-sha256 被设置为数组(1) { [0]=> string(64) "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855" } request.headers.X-Am01) { array to "20210423T110304Z" } request.headers.Authorization 被设置为 array(1) { [0]=> string(211) "AWS4-HMAC-SHA256 Credential=[KEY]/20210423/ap-southeast-1/s3/aws4_request,SignedHeaders=x-amz-content-sha256;x-amz-date,Signature=[SIGNATURE] } -> 输入步骤标志,名称 's3.put_object_url' ---------------- ------------------------------- 没有变化 -> 输入步骤标志,名称为's3.permanent_redirect' ----- ---------------------------------------------- 没有 c挂起 -> 进入步骤尝试,命名为'ApiCallAttemptMonitoringMiddleware' --------------------------------------- ------------------------- 没有变化 * 尝试 103.253.144.208:80... * 连接到 sgp1.digitaloceanspaces.com (103.253 .144.208)端口80(#0)> GET / HTTP / 1.1主机:sgp1.digitaloceanspaces.com AWS-SDK-调用-ID:03e4030ef1f4fd18f7d38b8265b34b7f AWS-SDK重试:0/0的x AMZ-内容-SHA256:e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855 X -Amz-Date:20210423T110304Z 授权:AWS4-HMAC-SHA256 Credential=[KEY]/20210423/ap-southeast-1/s3/aws4_request,Signature=[KEY]/20210423/ap-southeast-1/s3/aws4_request SIGNATURE] 用户代理:aws-sdk-PHP/3.178.6 OS/Linux/3.10.0-1127.19.1.el7.x86_64 GuzzleHttp/7 * 将包标记不支持多用途 https://sgp1.digitaloceanspaces.com/ GET / HTTP / 1.1主机:sgp1.digitaloceanspaces.com AWS-SDK-调用-ID:03e4030ef1f4fd18f7d38b8265b34b7f AWS-SDK重试:0/0的x AMZ-内容-SHA256:e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855 X-AMZ-日期:20210423T110304Z用户代理: aws-sdk-PHP/3.178.6 OS/Linux/3.10.0-1127.19.1.el7.x86_64 GuzzleHttp/7 * 旧的 SSL 会话 ID 已过时,删除 * 将包标记不支持多用途 字符串(32) "000000007fb4cf360000000012b9d6de" ["数据"]=> 数组(3) { ["存储桶"]=> 数组(0) { } ["所有者"]=> 数组(2) { ["displayName"]=> string(0) "" ["ID"]=> string(9) "anonymous" } ["@Metadata"]=> array(4) { ["statusCode"]=> int (200) ["effectiveUri"]=> string(27) "sgp1.digitaloceanspaces.com" ["headers"]=> array(4) { ["date"]=> string(29) "Fri,23 Apr 2021 11:03:07 GMT" ["content-length"]=> string(3) "215" ["content-type"]=> string(23) "text/xml; charset=utf-8" ["strict -transport-security"]=> string(44) "max-age=15552000; includeSubDomains; preload" } ["transferStats"]=> array(0) { } } } } 包含步骤时间:0.024339914321899 array(0) { } } 包含步骤时间:0.026099920272827

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)

相关问答

Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其...
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。...
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbc...