我有一个运行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),但仍然会出现同样的错误。
答案 0 :(得分:0)
问题出在一个已知的PHP bug中,打开文件的限制来自linux系统,所以如果它的1024重新编译它将忽略--enable-fd-setsize = 131072。你必须在更改linux系统设置后进行编译。祝你好运:)