我正在经营一家WooCommerce商店,并拥有一个从我们的ERP系统中检索数据的Laravel系统。这部分工作得很好。Laravel系统比较产品的差异,并将所有更改推送到WooCommerce (产品更新等)。
当我查看日志时,这些API请求中的许多回复都使用:"cURL Error: getaddrinfo() thread failed to start"
。它是定期的(不是发生在所有的更新请求)..。如果我重新启动请求,它总是在第二次成功。
我尝试过搜索任何相关的问题,这似乎是我的WooCommerce上的配置问题(我自己使用Plesk托管)。DNS由Cloudflare处理。启用了allow_url_fopen
。我尝试了静态、按需和动态的pm (PHP设置),并重新计算了pm.max_children
并增加了pm.max_requests
。
我试图更新SSL证书。
我试着查看日志,看看是否能找到任何被记录的东西,但是这里没有什么有趣的东西。
WooCommerce服务器专用于64 GB mb和8核心6700英特尔,因此不应该成为性能问题。
Laravel运行在Cloudserver、2 vCPU和4 GB内存上。请求是用口香糖完成的。
有经验的人在这个错误,并能指导我在某个方向?
发布于 2022-01-18 21:07:20
我以为是接收器(WooCommerce)引起了这个错误,但似乎是由Laravel引起的。我的作业队列最初是用一个循环构建的,在这个循环中,我在一个作业队列中迭代了所有50.000个产品,如果我将任务分解成50.000个单个作业实例(每个作业有一个更新),它就会完成,而不会留下任何错误。
正如@cbr所指出的,我认为这个错误与ulimit
有关(同时打开的文件太多),因为作业运行时没有清理/关闭文件。我使用了https://github.com/Codexshaper/laravel-woocommerce,但已更改为本机https://github.com/woocommerce/wc-api-php包,这可能也会产生影响。似乎每次发出请求时,Codexshaper都会创建一个新的WooCommerce客户端实例,我认为这可能会导致一些问题。
https://stackoverflow.com/questions/70669106
复制相似问题