【发布时间】: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是打开文件的最大数量。这是限制人数吗?