无法在PHP中输入最大打开的文件

时间:2015-10-25 21:33:39

标签: php linux sockets nginx

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

  

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

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

  

./ configure \           --enable-fpm \           --enable-pdo \           --with-pdo-mysql \            - 启用套接字           --enable-exif \            - 启用肥皂           --enable-ftp \           --enable-wddx \           --enable-pcntl \            - 启用肥皂           --enable-bcmath \           --enable-mbstring \           --enable-dba \           --enable-gd-native-ttf \            - 支持拉链            - 启用日历           --with-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-regex \           --with-gd \           --with-freetype-dir = / usr \           --with-jpeg-dir = / usr \           --with-png-dir = / usr \           --with-ldap \            - 带梨           --with-fpm-user = www-data \           --with-fpm-group = www-data \           --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 soft nofile 128000

     

www-data hard nofile 128000

     
      
  • soft nproc 128000

  •   
  • hard nproc 128000

  •   
  • soft nofile 128000

  •   
  • hard nofile 128000

  •   

**编辑1:**

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

**编辑2:**

通过在运行脚本中添加ulimit -n 512000来修复该软限制(将其添加到nginx和php-fpm),但仍然会出现同样的错误。

1 个答案:

答案 0 :(得分:0)

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