Guzzle send() 方法导致 cURL 错误 35 Too much open files

2024-02-06

尝试使用 Guzzle 5 执行以下代码。

$client = new GuzzleClient(['defaults/headers/User-Agent' => static::$userAgentString]);

$request = $client->createRequest(static::$serviceRequestMethod, $url, $options); // Create signing request.

$signature = new Signature\Signature($this->accessKey, $this->secretKey);

$options = array_merge_recursive($options, ['query' => ['Signature' => $signature->signString($hash)]]);

$request = $client->createRequest(static::$serviceRequestMethod, $url, $options); // Create real request.

$response = $client->send($request);

当我在长时间运行的 CLI 进程上调用此行足够多次时,我会收到以下错误追溯到该行$response = $client->send($request);

cURL error 35: error:02001018:system library:fopen:Too many open files

在此之后,服务器上的所有其他网页和命令都会崩溃,并出现相同的“打开文件过多”错误。

这是堆栈跟踪:

#0 /home/vagrant/code/example.com/vendor/guzzlehttp/guzzle/src/RequestFsm.php(104): GuzzleHttp\Exception\RequestException::wrapException(Object(GuzzleHttp\Message\Request), Object(GuzzleHttp\Ring\Exception\ConnectException))
#1 /home/vagrant/code/example.com/vendor/guzzlehttp/guzzle/src/RequestFsm.php(132): GuzzleHttp\RequestFsm->__invoke(Object(GuzzleHttp\Transaction))
#2 /home/vagrant/code/example.com/vendor/react/promise/src/FulfilledPromise.php(25): GuzzleHttp\RequestFsm->GuzzleHttp\{closure}(Array)
#3 /home/vagrant/code/example.com/vendor/guzzlehttp/ringphp/src/Future/CompletedFutureValue.php(55): React\Promise\FulfilledPromise->then(Object(Closure), NULL, NULL)
#4 /home/vagrant/code/example.com/vendor/guzzlehttp/guzzle/src/Message/FutureResponse.php(43): GuzzleHttp\Ring\Future\CompletedFutureValue->then(Object(Closure), NULL, NULL)
#5 /home/vagrant/code/example.com/vendor/guzzlehttp/guzzle/src/RequestFsm.php(135): GuzzleHttp\Message\FutureResponse::proxy(Object(GuzzleHttp\Ring\Future\CompletedFutureArray), Object(Closure))
#6 /home/vagrant/code/example.com/vendor/guzzlehttp/guzzle/src/Client.php(165): GuzzleHttp\RequestFsm->__invoke(Object(GuzzleHttp\Transaction))
#7 /home/vagrant/code/example.com/app/library/amazon/src/AWS.php(540): GuzzleHttp\Client->send(Object(GuzzleHttp\Message\Request))

我不知道通过 Guzzle 发送请求后是否需要显式关闭资源。我是否在这里遗漏了一些东西,或者这可能是 Guzzle 中的一个错误?


这不是 Guzzle 或 MailGun 的问题,而是您对库的特定实现的问题。由于有如此多的长时间运行(打开)请求,您实际上已经达到了底层操作系统(libcurl、openssl 和 fopen)的限制。

根据libcurl 错误 http://curl.haxx.se/libcurl/c/libcurl-errors.html错误 35 表示 SSL/TLS 握手出现错误。

根据各种谷歌参考错误:02001018表明openssl无法访问(或更确切地说读取)证书文件。

您可以使用ulimit http://ss64.com/bash/ulimit.html查看和修改各种系统范围资源的限制。

您还可以使用lsof https://danielmiessler.com/study/lsof/查看打开的文件。

要解决您的问题:

  1. (如果可以的话)增加系统资源津贴 - 请务必研究此更改可能产生的影响。
  2. 重构您的代码,以免达到操作环境限制。也许可以对某些请求使用异步通信。一个不同的库,或者也许“下降”并实现你自己的库。
  3. 找到一些方法来实现某种类型的速率限制(我已将其与#2 分开列出),但它们可以齐头并进。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Guzzle send() 方法导致 cURL 错误 35 Too much open files 的相关文章

  • 在 while 循环内查询可以吗?

    我在一个数据库中有两个表 我正在查询第一个表限制 10 然后循环结果 在 while 循环内 我使用第一个查询中的数据作为参数再次执行另一个查询 以下是该脚本的示例
  • 附加之前检查数据库中是否存在 ID

    我通过选择一个带有类别的数组json decode并将它们附加到文章中 public static function setArticleCategory Request request article Article where id r
  • 通过 AJAX jquery 更改表格背景颜色?

    设想 当我的网页加载时 自动搜索单元格已由用户输入并且具有价值 如果已输入 表格背景颜色将为红色 否则为绿色 假设该表尚未输入 桌子背景绿色是这样的 和表的源代码 table width 1023 height 200 border 1 t
  • 无法使用 PHP ftp_connect() 连接 FTP 服务器

    我试图使用 PHP 的 ftp connect 函数连接 ftp 服务器 如下所示 但它返回这个错误 警告 ftp connect function ftp connect php network getaddresses getaddri
  • 在 PHP 中验证约 400MB 的大型 XML 文件

    我有一个很大的 XML 文件 大约 400MB 在开始处理之前我需要确保它的格式正确 我尝试的第一件事是类似于下面的内容 这很棒 因为我可以找出 XML 是否格式不正确以及 XML 的哪些部分 不好 doc simplexml load s
  • 同一页面中多个表单上的 Google 隐形 ReCaptcha - PHP

    我正在我的 php 网站上关注这个 Invisible ReCaptcha 文档 http www pinnacleinternet com installing invisible recaptcha http www pinnaclei
  • 如何使用图像生成 SVG 二维码?

    我有一个用于生成 jpeg 和 png 格式的 qrcode 的代码 但也想在 PHP 中生成带有背景图像的 svg qrcode 我正在使用 qrlib php 生成 jpeg 和 png 格式 QRlib php 也支持 SVG 不是吗
  • 上传非常大的文件(>5GB)

    我需要你的帮助 我想用 HTML JQuery 和 PHP 创建一个上传脚本 是否可以编写一个可以上传非常大的文件 gt 5 GB 的脚本 我已经尝试使用 FileReader FormData 和 Blobs 但即使使用这些 我也无法上传
  • PHP 中的 SQL 语句与 phpmyadmin 中的 SQL 语句的行为不同

    I have form store sql INSERT INTO myodyssey myaccount id email username password VALUES NULL email unixmiah formtest woo
  • 使用 LIKE 和撇号的 Mysql 查询问题

    所以我有一个有趣的问题 我从未遇到过 并且似乎找不到太多有关纠正该问题的信息 我有一个庞大的数据库 里面有大量的数据 相当于 10 年的数据 并试图对其进行搜索 现在搜索功能运行良好 但最近有人让我注意到一个 错误 如果你愿意的话 我尝试对
  • PHP中是否可以使用filter_var过滤带小数点的整数?

    我需要像这样过滤值100 50在 PHP 中使用filter var 现在我这样使用 filter var POST amount FILTER SANITIZE NUMBER INT 它给我的结果是10050 我怎么解决这个问题 提前致谢
  • 如何限制 JSON 访问?

    我有一个 Web 应用程序 可以从新创建的 JSON API 中提取数据 我的静态 HTML 页面通过 JavaScript 从静态 HTML 页面动态调用 JSON API 如何限制对 JSON API 的访问 以便只有我 我的网站 可以
  • 按给定日期获取上周一和下周一的日期[重复]

    这个问题在这里已经有答案了 我们如何通过提供的日期获取上一周星期一日期和下周星期一日期 示例 if date 2015 04 08 年月日格式 然后函数返回 上周一日期 2015 03 30 下周一日期 2015 04 13 echo Ne
  • 使用 Laravel Fluent 查询生成器从多个表中进行选择

    我正在重写一些 PHP MySQL 来与 Laravel 一起使用 我想做的一件事是使数据库查询更加简洁使用 Fluent 查询生成器 http laravel com docs database fluent但我有点迷失 SELECT p
  • 从本地 html/javascript 网站插入 mySQL 数据库

    我正在尝试做什么 我的程序的目的是插入数据local HTML JS网站变成online 非本地 mySQL数据库 到目前为止我尝试过的 我试图用来实现此目的的原始方法是让我的本地网站使用 javascript 通过在线发布数据PHP文件
  • 返回早期概念在 PHP 中有何用处

    我已经在以下链接中了解了最佳实践https pear php net manual en standards bestpractices php https pear php net manual en standards bestprac
  • 重定向到另一个文件夹

    我读了这个 htaccess 重写以将根 URL 重定向到子目录 https stackoverflow com questions 990392 htacces rewrite to redirect root url to subdir
  • 根据产品属性在 Magento 中创建购物车规则

    我在一个类别中有产品 针 有些以 100 支为一包出售 有些以 500 支为一包出售 盒子中的针数被设置为产品属性 我想根据购物车中的针总数应用购物车规则 F x 如果您购买 1000 2000 根针头 无论 500 100 包的组合如何
  • 测验程序的 MySql 数据库设计

    我目前正在开发一个项目 主要是创建一个测验应用程序 它将能够进行包含 10 到 20 个问题的多项选择题或简答题的测验 它需要能够根据正确答案检查用户的答案 然后对用户的答案进行评分 稍后 我可能会实现一个后端功能来在线创建测验 但现在我将
  • Symfony2 dev环境可以工作,prod环境给出404错误

    我最近在我的机器上成功安装了 Symfony2 我可以访问http localhost app dev php 开发环境 但是 当我尝试访问 prod 环境时 http localhost app php 我在浏览器中收到以下错误消息 哎呀

随机推荐

  • (为什么)移动构造函数或移动赋值运算符应该清除其参数?

    我正在学习的 C 课程中的移动构造函数实现示例看起来有点像这样 Move constructor Motorcycle Motorcycle Motorcycle ori m wheels std move ori m wheels m s
  • React Native 中的 PhaseScriptExecution [CP-User] 错误

    现在每次我创建一个新项目react native init ProjectName创建后我做npx pod install进而react native run ios它给了我错误 我创建的每个新项目都会发生这种情况 我不确定是否需要进行更新
  • 长赋值和双赋值不是原子的 - 这有什么关系?

    我们知道 long 和 double 赋值在 Java 中不是原子的 除非它们被声明为 volatile 我的问题是它在我们的编程实践中到底有多重要 例如 如果您看到下面的类 其对象在多个线程之间共享 The below class is
  • Facebook向多个朋友“发送”对话

    这个想法是 用户可以请求几个朋友对他们所做的事情提供反馈 我有一个朋友选择器 效果很好 从这里我得到用户 ID 然后我调用发送对话框 结果有多个收件人 而只有一个 有谁知道为什么 FB ui method send name Test to
  • Blazor WebAssembly:同一组件渲染上的多个路由

    我实际上正在试验 Blazor WebAssembly 除了一件事之外 一切都很好 我的想法是我想共享相同的组件来创建或编辑项目 组件的名称是 CreateOrEdit razor 我有两条路线 page master maker crea
  • 单击注销按钮后终止会话并重定向到登录页面

    我在JSP中有以下代码
  • Sass 加载器和 webpack 4

    如何在 webpack 4 中使用 sass 加载器 我读了很多关于这方面的内容 大多数网站建议使用 ExtractTextPlugin 但 ExtractTextPlugin 不适用于 webpack 4 我写了以下内容webpack c
  • 将 IplImage IPL_DEPTH_32S 转换为 QImage Format_RGB32 的最快方法

    将 IplImage IPL DEPTH 32S 转换为 QImage Format RGB32 最快的方法是什么 我需要从摄像头捕捉图片并将其显示在表格上 频率为每秒 30 帧 我尝试使用 QImage 构造函数 QImage qImag
  • jquery触发事件

    我们如何在活动对象上调用触发单击事件 continue live keypress function if e which 32 e which 13 this trigger click 当我按按钮上的 Enter 时 它会进入 if 块
  • Xcode 4.5 + UIScrollView:看不到支柱和弹簧(OSX 10.8 Mountain Lion)

    免责声明 iOS 开发全新 对我轻松一些 在 Xcode 4 5 中遇到了一个有趣的情况 我的尺寸检查器看起来像这样 和我根本看不到支柱和弹簧区域 真正奇怪的部分是 当我点击连接检查器之类的东西时 我确实看到了支柱和弹簧区域 但只看到了一瞬
  • 如何在不同存储库中的多个解决方案之间共享源代码库?

    我有一个公共库 我想在几个解决方案之间共享 该库存储在不同的 github 存储库中 我们将共享库放在单独的 GitHub 存储库中并创建了 nuget 包 可以将其安装在每个所需的项目 解决方案中 缺点是更改库中的代码涉及几个步骤 更改代
  • HTML5 Web 存储抽象库

    根据我对 HTML5 中 Web 存储的了解 有许多不同的存储选项 不同浏览器的支持也不同 是否有任何流行的库用于在 HTML5 应用程序中抽象 Web 存储 有几个基于 YUI 的库用于抽象底层存储 YUI 2 存储实用程序 http d
  • 以编程方式获取 ec2 定价?

    有没有办法以编程方式获取 AWS 定价 每种实例类型的每小时成本 S3 上每月每 GB 存储的成本等 另外 有成本监控工具吗 例如 是否有一种工具可以按小时报告您的 EC2 实例使用情况 而不是每月 亚马逊就是这么做的 提前致谢 UPDAT
  • 在 WebRequest 中强制进行基本身份验证

    我正在集成将使用的网络服务 HTTP POST 用于请求和检索数据 远程服务器 需要根据 RFC 2617 进行基本身份验证 我的身份验证尝试失败了 它失败的原因是 即使我将 NetworkCredential 对象附加到 HttpWebR
  • Angular 6 ng build --prod 错误“错误错误:ngIfElse 必须是 TemplateRef,但收到‘true’。”

    ERROR 错误 ngIfElse 必须是 TemplateRef 但收到 true HTML 文件
  • 每行显示 3 个项目 - while 循环 - php/mysql [重复]

    这个问题在这里已经有答案了 我目前正在开发一个循环来显示 mysql 表中的项目 有没有一种简单的方法可以每行显示 3 个项目 到目前为止 我设法在 html 表格内的一行中显示所有项目 我将不胜感激任何帮助 代码 不带 html 表标签
  • 自动刷新网页

    我有一个网页 允许用户执行各种操作 进而修改数据库 此外 此 Web 应用程序需要跟踪数据库中随时间不断变化的各个字段 每隔几秒刷新一次页面是实现此目的的最佳方法吗 例如 如果页面上有一个很长的列表需要滚动 则由于刷新导致页面不断重置 因此
  • Android:如何录制视频并实时处理其帧?

    我有一个 SurfaceView 和一个 MediaRecorder 我用它来显示和录制视频 现在我想实时访问该视频上的各个帧以对其进行一些处理 我可以通过 MediaRecorder 对象访问帧吗 或者我必须添加一个监听器 None
  • 蛋白质序列编码

    我正在开发一个Python程序来计算一组字符串 蛋白质序列 的突变残基和位置的数字编码 存储在fasta格式文件中 每个蛋白质序列用逗号分隔 我正在尝试找到突变的位置和序列 我的fasta文件如下 MTAQDDSYSDGKGDYNTIYLG
  • Guzzle send() 方法导致 cURL 错误 35 Too much open files

    尝试使用 Guzzle 5 执行以下代码 client new GuzzleClient defaults headers User Agent gt static userAgentString request client gt cre