Php Apache打开的文件太多(24个)
由于“打开的文件太多(24)”这个问题有很多答案,以及如何解决这个问题,只是增加了允许打开的文件的数量限制,我没有找到任何关于如何检查谁在使用这些文件的建议 我得到了这个错误: 致命错误:未捕获异常“exception”,消息为“Unknown:open(/var/lib/php/session/sess_375048d5pfne5cu3v0l3sjj04,O_RDWR)失败:中打开的文件太多(24)” 我还重新启动了apache进程:Php Apache打开的文件太多(24个),php,linux,apache,session,Php,Linux,Apache,Session,由于“打开的文件太多(24)”这个问题有很多答案,以及如何解决这个问题,只是增加了允许打开的文件的数量限制,我没有找到任何关于如何检查谁在使用这些文件的建议 我得到了这个错误: 致命错误:未捕获异常“exception”,消息为“Unknown:open(/var/lib/php/session/sess_375048d5pfne5cu3v0l3sjj04,O_RDWR)失败:中打开的文件太多(24)” 我还重新启动了apache进程: $ ps aux | grep apa 84:root
$ ps aux | grep apa
84:root 7528 0.0 0.1 102376 4908 ? Ss 11:11 0:00 /usr/sbin/apache2 -k start
85:www-data 7531 0.0 0.0 101528 2952 ? S 11:11 0:00 /usr/sbin/apache2 -k start
86:www-data 7532 0.0 0.1 1309308 7168 ? Sl 11:11 0:00 /usr/sbin/apache2 -k start
87:www-data 7533 0.0 0.1 1309308 7312 ? Sl 11:11 0:00 /usr/sbin/apache2 -k start
91:vagrant 7748 0.0 0.0 8860 648 pts/0 S+ 11:20 0:00 grep --color=auto -in apa
有没有工具可以检查谁在使用这些文件,因为我的虚拟机实际上是通过
htop
休眠的?查看目录/var/lib/php
!您将在那里找到许多以sess\uu
开头的文件。这些文件包含访问者的会话数据
如何检查谁在使用这些文件:
lsof -n|grep -F /var/lib/php/sess_
将为您提供一个进程列表,其中包含正在使用它们的进程
如果您删除这些文件(rm-vf/var/lib/php/sess.*
),您当前的所有访问者都将失去当前会话(他们需要重新登录您的站点),但问题将得到解决
一个长期的解决方案是更频繁地终止会话。在您可以找到的中,如何在php中设置自动删除过期会话文件。在我看来,将session.cookie\u life
设置为大约半小时,将session.gc\u maxlife
设置为稍长一点(例如35分钟)就可以了
如果您只有一个只有少数访问者的小站点(每天最多几十个),那么每天从crontab中删除旧会话文件就足够了
如果你有一个大的网站,或者你想要一个超级用户友好(但不是那么安全)的网站,你需要能够处理大量的会话。在我看来,在这种情况下,最好使用带有数据库后端的其他php会话解决方案
命令find/var/lib/php-type f-name“sess”\-ctime 1440 | xargs-P 1-n 50 rm-vf
将删除此目录中从sess
开始的所有文件,以及一天之前的所有文件