当前位置: 首页 > 知识库问答 >
问题:

PHP无法打开流:打开的文件太多

邵诚
2023-03-14

我有一个错误:PHP无法打开流:打开的文件太多。

我在这里查看了stackoverflow的各种答案,但我无法解决这个问题。我主要尝试增加最大打开文件数的限制:

我已编辑/等/安全/限制。conf,其中我指定了:

*       soft    nofile      10000
*       hard    nofile      30000

保存并注销/重新启动该框后,命令:

ulimit -n

仍打印出1024个。我不知道为什么这没有效果,我想这就是我得到php错误的原因。如果需要,我可以粘贴整个文件或任何其他配置文件。我使用的是PHP 5.6、nginx 1.8.0和PHP fpm。

现在对我有效的解决方案是通过以下方式手动重新启动nginx

service nginx restart

在这些东西再次工作之后。主要是在我运行单元测试、behat测试或向Web服务器发出大量请求时出现问题。

共有3个答案

林亦
2023-03-14

解决方案是执行vagrant-halt,然后再次执行vagrant-ssh。然后打印出10000个。看起来出于某种原因,简单的注销和用户登录是不够的。

白星渊
2023-03-14

您应该增加运行php进程的用户的每个用户文件限制。检查您的php进程正在与哪个用户一起运行并增加它们的限制。您可以这样做。$cat /etc/security/limits.conf*hard nofile 500000*soft nofile 500000 root hard nofile 500000 root soft nofile 500000 www-data hard nofile 500000 www-data soft nofile 500000

参考号:https://rtcamp.com/tutorials/linux/increase-open-files-limit/

姜烨伟
2023-03-14

听起来像是一个长时间运行的进程正在打开文件,但没有正确关闭它们。您是否知道哪个流程可能会这样做?您是否正在执行希望打开大量文件的操作?听起来这可能是单元测试库的问题。我不熟悉behat;您是否专门搜索了与您使用的库/软件相关的此错误?当您谈到“向web服务器发出大量请求”时,这些请求是否都是“并发”请求,这很可能会导致打开大量文件句柄?

最终,我认为您需要解决打开比您预期的更多文件的问题——如果这确实是一个问题的话。

 类似资料:
  • 我想启动一个Laravel应用程序,但在运行时,它找不到.env文件。它也没有创造一个。 我认为这是一个路径url问题,因为路径url中提供了斜杠和反斜杠。 以下是输出: 给出错误: file_get_contents(C:\xampp\htdocs\tekom-web/. env):无法打开流:没有这样的文件或目录 脚本php artisan key:generate处理返回的安装后cmd事件,

  • 问题内容: 我使用多个文件来执行一些文件I / O(写入19个文件,确实如此)。写他们几百次后,我得到了。但实际上我一次只能打开几个文件。这里有什么问题?我可以验证写入是否成功。 问题答案: 在Linux和其他UNIX /类似UNIX的平台上,操作系统对进程在任何给定时间可能具有的打开文件描述符的数量进行了限制。在过去,此限制曾经是硬接线1,并且相对较小。如今,它要大得多(几百/千),并且受“软”

  • 问题内容: 我写了一种测试套件,它占用大量文件。一段时间(2h)之后,我得到了。我仔细检查了所有文件句柄是否再次关闭它们。但是错误仍然存​​在。 我试图找出使用允许的文件描述符的数量以及当前打开的文件描述符的数量: 因此,如果我运行以下测试: 我得到以下输出: 真奇怪,我期望打开的文件描述符会越来越多。我的脚本正确吗? 我正在使用python的记录器和子进程。那可能是我FD泄漏的原因吗? 谢谢,丹

  • 我们最近在尝试访问Unix服务器中的weblogic控制台时遇到了一个问题,我们将得到: 错误503--服务不可用 在日志文件中,它会指出: 原因:java。io。FileNotFoundException:/opt/weblogic1036/wlserver\u 10.3/server/lib/co 在谷歌上搜索了一番后,我找到了一个解决方案,其中指出/etc/security/limits。c

  • 问题内容: 我的Java程序失败了 这是来自的关键行。他们将用户的最大文件数设置为500k: 我跑去统计打开的文件数- 包括全局和jvm进程。我检查了中的柜台。一切似乎还可以。我的进程仅打开了4301个文件,限制为500k: 这是Ubuntu 11.04服务器。我什至已经重新启动,所以我很肯定正在使用这些参数。 我不知道它是否相关,但是该过程由upstart脚本启动,该脚本使用setuidgid启

  • 今天早些时候,我访问了我最近推出的一个网站,页面上充斥着一个丑陋的jasperex0019:java.io.filenotfoundexception: /opt/tomcat/webapps/root/web-inf/lib/jstl-1.2.jar(打开的文件太多)。我检查了我的服务器日志和tomcat日志,它们充满了相同的错误。我增加了tomcat的最大打开文件限制,作为保持网站运行的临时解