【问题标题】:Can't incrase maximum opened files in PHP无法在 PHP 中增加最大打开文件数
【发布时间】:2016-01-24 22:29:51
【问题描述】:

我有一个网站在带有套接字系统的 ubuntu 上运行 php-fpm 和 nginx,当网站达到大约 1000 个用户时,我的套接字抛出错误并关闭 我不确定是系统问题还是 PHP..

Symfony\Component\Debug\Exception\ContextErrorException] 警告:stream_select():您必须使用更大的 FD_SETSIZE 值重新编译 PHP。它设置为 1024,但您的描述符编号至少高达 1024。建议使用 --enable-fd-setsize=2048,但您可能希望将其设置为等于系统支持的最大打开文件数,以免日后再次出现此错误。

我已经用以下配置重新编译了 PHP -

./配置\ --启用-fpm \ --启用-pdo \ --with-pdo-mysql \ --启用套接字\ --启用-exif \ --启用肥皂\ --启用-ftp \ --启用-wddx \ --启用-pcntl \ --启用肥皂\ --启用-bcmath \ --启用mbstring \ --启用数据库\ --启用-gd-本机-ttf \ --启用压缩\ --启用日历\ --与-mysql \ --with-mysqli \ --with-pdo-sqlite \ --with-iconv \ --with-zlib \ --with-bz2 \ --with-gettext \ --with-xmlrpc \ --with-openssl \ --with-mhash \ --with-mcrypt \ --with-xsl \ --带卷曲\ --with-pcre-正则表达式 \ --with-gd \ --with-freetype-dir=/usr\ --with-jpeg-dir=/usr\ --with-png-dir=/usr\ --with-ldap \ --带梨\ --with-fpm-user=www-数据\ --with-fpm-group=www-数据\ --with-config-file-path=/etc/php/\ --with-config-file-scan-dir=/etc/php/conf.d/\ --with-libdir=lib/x86_64-linux-gnu \ --enable-fd-setsize=131072

并在 bits/typesizes.h、linux/posix_types.h 中设置相同的限制

ulimit -Sn 返回 128000

我还使用以下内容编辑了 /etc/security/limits.conf -

www-data 软文件 128000

www-data hard nofile 128000

  • 软 nproc 128000

  • 硬 nproc 128000

  • 软文件 128000

  • 硬文件 128000

** 编辑 1:**

刚刚发现了一种在我运行时检查特定进程限制的新方法 cat /proc/1719/limits(1719是nginx进程之一) 我得到最大打开文件软限制 1024,硬限制 4096,我相信这是导致问题的原因,但我找不到如何提高它..

** 编辑 2:**

通过将 ulimit -n 512000 添加到运行脚本(将其添加到 nginx 和 php-fpm)修复了该软限制,但仍然因相同的错误而崩溃。

【问题讨论】:

  • /proc/sys/fs/file-max 是打开文件的最大数量。这是限制人数吗?

标签: php linux sockets nginx


【解决方案1】:

问题出在一个已知的 PHP 错误中,打开文件的限制取自 linux 系统,因此如果在重新编译时打开文件的限制为 1024,它将忽略 --enable-fd-setsize=131072。您必须在更改 linux 系统设置后进行编译。祝你好运:)

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-02-06
    • 1970-01-01
    • 2014-02-26
    • 1970-01-01
    • 1970-01-01
    • 2011-03-11
    相关资源
    最近更新 更多