zoukankan      html  css  js  c++  java
  • 记一次 解决PHP Linux服务器报 打开文件数过多的异常

    PHP网站突然不能访问,报错信息:

    Warning: require(/var/www/html/web/common/bootstrap sys. inc. php): failed to open stream: Too many open files in /var/www/html/web/index. php on line 5
    
    Fatal error: requireo: Failed opening required/var/www/html/web/common/bootstrap sys. inc. php (include path= /usr/share/pear: /usr/share/php )in /var/www/html/web/index php on line 5
    

    其实这个错误和PHP本身没有关系,因为linux同时打开的文件数是有限制的。只要达到这个限制,就会导致PHP报错。因此不要盲目的去分析PHP有没有问题。

    解决方法,是先去定位是哪些进程占用了文件句柄。可供使用的命令(用这些命令基本就可以定位了,定位到问题就已经解决了90%):

    # 统计服务器总的文件打开数

    lsof |wc -l 

    # 查看打开句柄数的所有进程,排序(从多到少)
    lsof -n|awk '{print $2}'|sort|uniq -c|sort -nr|more(其中第一列是打开的句柄数,第二列是进程ID)

    # 根据ID号来查看进程名

    ps aux|grep [pid]  或 ps aef|grep [pid]

    # 查看某个进程打开的文件数

    lsof |grep [pid]|wc -l

    还有这种方式:lsof -p [pid]|wc -l(但这种方式统计出来的不太准确,偏少很多,原因暂不清楚)

    我这边查出来是有个并不需要的服务,占用了1万多个句柄
    强行kill掉后,降低到7800左右(之前为24000多)

    附加:

    # 查看连接外部的tcp和端口

    netstat -an|grep tcp|grep 121 

  • 相关阅读:
    剑指offer-整数中1出现的次数
    数据流中的中位数
    二叉搜索树的后序遍历序列
    Java 线程阻塞和唤醒
    Java 线程池
    Python哈希表和解析式
    Python线性数据结构
    python 基础知识
    pyenv虚拟环境管理python多版本和软件库
    Paramiko的SSH和SFTP使用
  • 原文地址:https://www.cnblogs.com/Denny_Yang/p/14912204.html
Copyright © 2011-2022 走看看