关于网站最近出现504错误的总结,too open many files in system

2023-05-16

如果你有耐心看完这篇文章,也许会给你带来真正的益处。

网站出现504错误,如果你用阿里云CDN的话还会报

504 Gateway Time-out The gateway did not receive a timely response from the upstream server or application. Powered by Tengine

这样一句错误提示,通过从网络上查询504代码,意思就是网关超时。直接的意思就是无法访问到我们的服务器。网络上的解决办法五花八门,各有各的说话,但是我服务器用的环境登陆啥的都显示正常。

所有只能通过日志去发现问题。于是不懂日志的我,只能在网站频繁出504错误的时候去看网站的日志,通过日志我发现这样一条MYSQL的信息:

too open many files in system。如果你懂英语,很明白这句话是什么意思,就是系统打开的文件数过多。为什么系统会打开文件数过多?其实无论是windows还是linux每运行一个系统都会打开文件,但是并不是我们所说的那个文件的意思,而是叫做文件描述符的东西,或者叫做句柄,这个概念我是第一次碰到,先了解下什么事文件描述符或者句柄。

一般的,在Windows中我们常常叫句柄,而在linux中我们叫文件描述符,因为我网站的环境是linux,那么接下来我会用文件描述符来说。

文件描述符网络上的定义是这样的,是内核通过文件描述符来访问文件。然后不同的描述符可以打开相同的文件。这里很抽象,我是这么理解的,每个人都可能打开这个文件,每个人相当于一个单独的ID,就会给每个人的访问分配一个文件描述符。

然后无论是windows还是linux都有文件描述符的限制,比如linux的句柄有的默认是1024,阿里云ESC默认的文件描述符是65535,但实际上句柄可以调节到很大,可以通过命令:# cat /proc/sys/fs/file-max 进行查看。

上面的句柄或者文件描述符不明白的可以继续自己百度一下,进行详细的了解。

而真正解决问题是从这里开始的,为什么回报too open many files in system?

网上的很多文章都跟我说是因为系统限制的文件描述符太小,需要进行文件描述符的扩大,比如改成655300,等等,但是改了以后呢?随着时间的推移,文件数打开的必定越拉越大,越来越多,这根本不是解决问题最好的方法!那么,还是那个问题,我喜欢刨根问底,为什么会变大?之前为什么没有问题呢?

直到,我了解到mysql的一个关键参数,table_open_ cache,这才是让文件描述符不够的原因所在。来,我们看一下这位大神!

table_open_ cache字面意思就是打开表的高速缓存。来看看英文的解释。作用呢就是每当访问MYSQL的一个表时,如果缓存中有空间,那么就将这个查询缓存放到这个里面,这样可以更快的访问到表的内容。

所以,网络上的各种教程来了,什么根据打开表的数量进行调节,比如MYSQL打开表500个就调节成512甚至是1024,或者说开到2048或者更大!我很是生气没有读过MYSQL英文文档的人说这些话,不过我也没有读过,但是我注意到有人引用了文档中的一句话:If table_open_cache is set too high, MySQL may run out of file descriptors and refuse connections, fail to perform queries, and be very unreliable. 来,复制粘贴-翻译。

如果table_open_cache设置得太高,MySQL可能会用尽文件描述符并拒绝连接,无法执行查询,并且非常不可靠!

也就是说,这个table_open_cache会占用文件描述符!所以说,盲目的加单table_open_cache会占用文件描述符,并且会占用着一直不会释放,直到你给他分配的空间占满为止!

所以,那些说加多大多大的,简直是不负责任!对这个没有了解之前,你怎么可以教别人加大呢?除非他系统确实更改过这个文件描述符,不然以linux来说,65535,不超一天很快会被占满,比如查询网站访问量高半天都不到数据库就会宕掉!所以,英文的描述是:设置的太高,非常不可靠!

所以,我就默默的将这个参数调节到了64M,这是默认的大小,除非你调节了系统的文件描述符或句柄数大小,否则默认我觉得就能解决目前我遇到的问题。

然后通过lsof -n | grep 123 -c 命令可以查看某ID打开句柄大小。123是ID。

那么很多人可能会问了,那没有缓存岂不是慢了?其实我们完全可以调节query_cache_size这个参数的大小来解决,当然我是针对程序而言,毕竟我不是专业的DBA,还需要你去观察数据库运行的状态去适当的调节。以上文章是泰安人才网www.tarczp.com小编遇到的问题解决方法,这也是网络上你绝对搜索不到

CSDN首发,希望可以帮助到用LNMP为环境的人!

在这里还要注明一下,虽然我们可以通过调节table_open_cache的大小来减小这种文件描述符的大小,但是如果调节的很小的话,又会影响什么呢?

调节的过小,势必会影响一直会打开表的操作,要知道频繁打开表的操作会对服务器的性能有一定的影响,比较明显的就是内存和CPU方面,如果你发现CPU经常占满100%或者内存过大,那么这个参数可以根据你当前打开表的最大数量进行调节,比如你的表打开数量为300,那么我们可以设置table_open_cache的大小为512,但是文件描述符的大小肯定会变得更大,超过MYSQL甚至是系统限定的文件描述符,这个时候就需要调节系统的参数。

比如linux可以调节的参数为:

修改配置文件/etc/security/limits.conf,加入:
* soft nofile 655350
* hard nofile 655350

这是我设置的最大的参数,并且设置:


[root@yejr]# sysctl -w fs.file-max=655350
[root@yejr]# sysctl -a | grep fs.file-max
fs.file-max = 655350
  

可以重启服务器后查看这些参数是否已经改变,否则就设置无效。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

关于网站最近出现504错误的总结,too open many files in system 的相关文章

  • C++ 字符(char)转字符串(string)

    char转string 误区 无法使用to string 方法 span class token keyword char span c span class token operator 61 span span class token
  • B树和B+树

    B树 上图是一颗完整的5阶B树 xff0c 符合以下特点 xff1a 对于一个m阶B树 xff0c 每个节点最多有m个分支 xff1b 根节点且不是叶子节点则至少有2个分支 xff0c 而非根非叶节点至少有m 2 xff08 上取整 xff
  • R-Tree

    R Tree R Tree是一颗用来存储高维数据的平衡树 xff0c 它把B树的思想扩展到了多维空间 xff0c 采用了B树分割空间思想 xff0c 并在添加 删除操作时采用合并 分解节点的方法 xff0c 保证树的平衡性 数据结构 每个R
  • 【AI炼丹术】写深度学习代码的一些心得体会

    写深度学习代码的一些心得体会 体会1体会2体会3总结内容来源 一般情况下 xff0c 拿到一批数据之后 xff0c 首先会根据任务先用领域内经典的Model作为baseline跑通 xff0c 然后再在这个框架内加入自己设计的Model x
  • win10配置MMClassification+PyTorch+CUDA

    Win10配置MMClassification 依赖 Python 3 8CUDA 10 2Microsoft Visual C 43 43 14 0PyTorch 1 10 0MMCV 1 3 17MMClassification 0 1
  • 逢七过

    试题描述 相信大家都玩过这个游戏 xff0c 一群人围坐一圈 xff0c 开始喊数 xff0c 是7的倍数或者数中含有7的均要说 过 xff0c 其余的数就直接说出数的大小 为了简化问题 xff0c 我们规定 xff0c 对于下面的情况我们
  • 斐波那契数列

    试题描述 斐波那契数列指的是这样一个数列 xff1a 1 1 2 3 5 8 13 21 34 这个数列从第三项开始 xff0c 每一项都等于前两项之和 请你输出斐波那契数列的前N项 xff08 0 lt N lt 30 xff09 请用循
  • 允许并列的排名

    试题描述 在我们参加的各种竞赛中 xff0c 允许并列的排名方式是经常遇到的 例如有四名选手的成绩分别为50 80 50 30分 xff0c 则80分的选手为第一名 xff0c 50分的两名选手均为第二名 xff0c 30分的选手为第三名
  • n位水仙花数

    试题描述 n位水仙花数是指一个n位数 xff0c 它的每个位上的数字的n次幂之和等于它本身 例如 xff1a 三位水仙花数是指一个三位数 xff0c 它的每个位上的数字的3次幂之和等于它本身 xff08 例如 xff1a 13 43 53
  • 成绩的最高分问题

    试题描述 编写函数ReadScore 和FindMax xff0c 输入某班学生某门课的成绩和学号 xff08 最多不超过40人 xff09 xff0c 当输入为负值时 xff0c 表示输入结束 xff0c 用函数编程通过返回数组中最大元素
  • xcode编译静态库时:**** is not an object file (not allowed in a library)

    出现此错误 xff1a 第一步 xff1a 链接的库是否是存在的且正确的库 a 第二步 xff1a 如果还出现错误 xff0c 那么确定Xcode搜索库路径 Library search paths xff0c 是否有错误 如果在工程目录中
  • Ubuntu桥接模式下无法连接网络的问题

    新装的VMware虚拟机 xff0c 作为开发 xff0c 需要使用桥接模式 xff0c 但是一直无法正常连接网络 xff0c ifconfig一直没有IPV4地址显示 xff0c ping外网也不通 网上的方法也几乎试了个遍 xff0c
  • 黑马程序员————数组,字符串,函数,指针

    Java培训 Android培训 iOS培训 Net培训 期待与您交流 xff01 一 数组的基本概念 只能存放一种类型的数据 xff0c 比如int类型的数组 float类型的数组 里面存放的数据称为 元素 二数组的定义 1 定义 声明数
  • QT控件提升之QPushButton提升为QMenu

    当一个控件进行提升之后 xff0c 就有了新的功能 xff0c 在原来的一些特性基础上 xff0c 发生一些新的改变 QT控件提升方法 xff1a 1 需要写一个需要提升为某种功能的类 2 打开qt设计师 xff0c 在对应需要提升的控件
  • 【Hugging Face】Hugging Face 主要类和函数介绍

    Hugging Face 主要类和函数介绍 Hugging face是什么 xff1f 什么是自然语言处理 xff1f PipelineDatasetPipeline on GPUMetricsAutoClasses在本地保存和加载模型结论
  • 基于ubuntu server 16.04环境安装kvm虚拟机并创建windows系统

    由于项目需要 xff0c 最近在研究 kvm 虚拟机 xff0c 将这个过程中遇到的一些问题做一些记录 由于本人水平有限 xff0c 其中不妥之处还请网友们不吝赐教 1 操作环境 ubuntu server 16 04 默认的安装后没有桌面
  • Linux炫酷代码秀

    cmatrix 命令 这个很酷 xff01 黑客帝国 那种矩阵风格的动画效果 安装 sudo apt get install cmatrix 运行 cmatrix
  • keil中include 头文件循环引用问题

    在头文件中使用 ifdef和 xff03 ifndef是非常重要的 xff0c 可以防止双重定义的错误 有时候 xff0c 在b h中会include 34 a h 34 xff0c 在 34 c h 34 中会include 34 b h
  • 并查集(加入、查找、删除)

    并查集 来源洛谷 题目描述 如题 xff0c 现在有一个并查集 xff0c 你需要完成合并和查询操作 输入格式 第一行包含两个整数 N M 表示共有 N 个元素和 M 个操作 接下来 M 行 xff0c 每行包含三个整数Z i X i Y
  • Centos7查看防火墙以及端口开放情况

    1 查看防火墙状态 firewall cmd state 2 开关防火墙 systemctl start firewalld service systemctl stop firewalld service systemctl restar

随机推荐

  • 完美解决“当前不会命中断点,还未为文档加载任何符号”的问题

    遇到这个问题是我正在用vc2008 调试一个 C 43 43 写的 Dll xff0c dll 在编译中没有报错 xff0c 但在用VB net写的程序调用此 Dll 时 xff0c 才会报告 于 34 xxx dll 中找不到 XXX 函
  • switch 以string为条件 做判断的方法

    c 43 43 和java语言中的switch都是只接受 整型 c 语言中可以在switch中 xff0c 以字符串作为case的条件 我觉得宏定义不行 xff0c 用map尝试一下 xff0c 下面是给你一个例子 map lt strin
  • nginx那点事儿——nginx日志详解

    nginx日志 前言一 日志配置 格式二 日志格式包含的变量三 日志缓存1 缓存设置2 作用位置 四 日志切割1 切割配置文件2 日志切割原理 五 日志分析 前言 Nginx有非常灵活的日志记录模式 每个级别的配置可以有各自独立的访问日志
  • 最全详解关键路径法

    关键路径法是软考的知识点 我分析了常见的模棱两可的知识点 并进行了图解说明 现在分享给正在准备参加软考试的广大考友 01什么是关键路径法CPM 关键路径法用于在进度模型中估算项目最短工期 确定逻辑网络路径的进度灵活性大小 这种进度网络分析技
  • 【LLM】LLaMA简介:一个650亿参数的基础大型语言模型

    LLaMA简介 xff1a 一个650亿参数的基础大型语言模型 PaperSetup其他资料 作为 Meta 对开放科学承诺的一部分 xff0c 今天我们将公开发布 LLaMA 大型语言模型 Meta AI xff0c 这是一个最先进的大型
  • Cache-主存效率问题

    本文主要明确在软考中经常遇到的缓存效率问题 第零 xff0c 明确一个问题 xff1a 如果Cache不命中时 xff0c 不同的系统有不同的应对策略 一是直接从主存中拿走待取数据 xff0c 它的时间消耗仅仅是一个访问主存周期 二是把待取
  • filezilla 严重文件传输错误 550permission denied

    问题描述 xff1a FileZilla工具使用ftp账户 xff0c 密码 xff0c 端口21 xff0c 快速链接到自己搭建的外网ftp服务器 xff0c 提示登录成功 xff0c 选择本地文件 xff0c 右键文件上传 xff0c
  • ubuntu与windows互传文件的3种方法

    一般在进行编程作业的时候 xff0c 我们会采用 开发在Windows中编辑源代码 xff0c 在linux中编译 执行源代码 这往往需要需要将在Windows下编辑好的源代码上传到linux系统种进行编译 怎么来进行上传呢 xff1f 其
  • ubuntu下如何设置环境变量

    一 设置环境变量的三种方法 1 1 临时设置 export PATH 61 home yan share usr local arm 3 4 1 bin PATH 1 2 当前用户的全局设置 打开 bashrc xff0c 添加行 xff1
  • ssh免密登录设置方法

    1 前提条件 主机A xff0c 用户名为aris xff0c IP地址为192 168 1 1主机B xff0c 用户名为leon xff0c IP地址为192 168 1 2这两台主机上均安装了SSH服务器 xff0c 且已经打开ssh
  • 软考高项你想要的全在这

    2021年准备参加软考获取高级职业技术资格认证的小伙伴咱们约起吧 xff1f xff01 自软考系列文章发表之后有很多准备参加软考的小伙伴加我微信 xff0c 关注我的微博 xff0c 也有很多因此成了好朋友 xff0c 甚至是同事 自前年
  • Makefile语法及通用模板

    简介 xff1a 本文主要讲解了在开发常规项目时 xff0c 用于自动化部署生成目标文件的Makefile 对其包含的主要语法进行了讲解 xff0c 最后给出了一个项目通用的Makefile模板 xff0c 以帮助大家理解 1 Makefi
  • ubuntu镜像源的配置

    摘要 xff1a 你是否遇到过按照网上教程更改了自己的镜像源之后 xff0c 貌似还是不兼容 xff0c 许多安装包还是下不了 xff1f 其实不是他们写的教程有错误 xff0c 而是你没用根据自己使用的ubuntu的版本去正确配置镜像源
  • Linux中与“内核模块”相关的数据结构

    摘要 本文详细解释了linux中与模块相关的内核数据结构 xff0c 便于大家在学习理解内核源码或驱动编程中理解相应代码和思想 三 内核模块相关的数据结构 目录 THIS MODULE宏module结构体module use 3 1 THI
  • Linux内核中与“文件系统”相关的数据结构

    文件系统相关的数据结构 4 1 file结构体 文件结构体代表一个打开的文件 xff0c 系统中的每个打开的文件在内核空间都有一个关联的struct file 它由内核在打开文件时创建 xff0c 并传递给在文件上进行操作的任何函数 在文件
  • 【可解释AI】图神经网络的可解释性方法及GNNexplainer代码示例

    图神经网络的可解释性方法及GNNexplainer代码示例 GNNExplainerIntroductionModelSingle instance explanations xff08 Explanation via Structural
  • 文本编辑器VI命令详解

    目录 一 xff1a 文本编辑器概述 1 文本编辑器含义 2 文本编辑器的作用 3 Linux中最常见的文本编辑器 二 vi编辑器的工作模式 1 vi编辑器的工作模式 2 各模式之间的切换 三 xff1a 命令模式概述 1 命令模式常用操作
  • Linux中与“内核安全”相关的数据结构

    五 内核安全相关数据结构 5 1 security operations结构体 这是一个钩子函数的指针数组 xff0c 其中每一个数组元素都是一个SELINUX安全钩子函数 xff0c 在2 6以上的内核中 xff0c 大部分涉及安全控制的
  • 洛谷 P3366 【模板】最小生成树

    题目描述 如题 xff0c 给出一个无向图 xff0c 求出最小生成树 xff0c 如果该图不连通 xff0c 则输出orz 输入输出格式 输入格式 xff1a 第一行包含两个整数N M xff0c 表示该图共有N个结点和M条无向边 xff
  • 关于网站最近出现504错误的总结,too open many files in system

    如果你有耐心看完这篇文章 xff0c 也许会给你带来真正的益处 网站出现504错误 xff0c 如果你用阿里云CDN的话还会报 504 Gateway Time out The gateway did not receive a timel