我的编程空间,编程开发者的网络收藏夹
学习永远不晚

Ulimit的故障怎么解决

短信预约 -IT技能 免费直播动态提醒
省份

北京

  • 北京
  • 上海
  • 天津
  • 重庆
  • 河北
  • 山东
  • 辽宁
  • 黑龙江
  • 吉林
  • 甘肃
  • 青海
  • 河南
  • 江苏
  • 湖北
  • 湖南
  • 江西
  • 浙江
  • 广东
  • 云南
  • 福建
  • 海南
  • 山西
  • 四川
  • 陕西
  • 贵州
  • 安徽
  • 广西
  • 内蒙
  • 西藏
  • 新疆
  • 宁夏
  • 兵团
手机号立即预约

请填写图片验证码后获取短信验证码

看不清楚,换张图片

免费获取短信验证码

Ulimit的故障怎么解决

本篇内容主要讲解“Ulimit的故障怎么解决”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“Ulimit的故障怎么解决”吧!

最近遇到一个非常有趣的问题。其中有一组HAProxy,频繁出现问题。登录上服务器,cpu、内存、网络、io一顿猛查。最终发现,机器上处于TIME_WAIT状态的连接,多达6万多个。

Ulimit的故障怎么解决

TIME_WAIT状态,一般都会出现在HAProxy、Nginx这种代理机器上,主要是由于频繁的主动关闭所造成的。通过修改reuse和回收参数,可以比较快速的解决问题。

网络状态的统计数量,可以使用下面的命令进行统计。

netstat -ant|awk '/^tcp/ {++S[$NF]} END {for(a in S) print (a,S[a])}' ESTABLISHED 70 FIN_WAIT2 30 CLOSING 33 TIME_WAIT 65520

Ulimit的故障怎么解决

这本来没什么神奇的,但65535这个数字,实在是太过于敏感。应该是触发了某种上限。

使我们更加感到疑惑的是:为什么TIME_WAIT状态的连接,仅仅达到了65535,服务就不可用了?

到处号称的单机百万连接,是在吹牛皮么?怎么这么经不起折腾?

65535,表示等于2的16次方减一,是一个神奇的数字。先把这小数字扔在一边,我们来看一下Linux到底能支持多少个连接。

1. Linux能够支持多少连接?

答案是无数个。可是端口只有65535个啊。

为什么端口只有65535个?

这是一个历史原因,因为在TCP、UDP协议的开头,会分别有16位来存储源端口号和目标端口号。很遗憾的是,这个值是short类型的,大小也是2^16-1。

因为历史原因造成的不可改变的标准,就是那么根深蒂固。

那Linux到底能支持多少个连接呢?答案是无数个。

拿nginx来说,我们把它监听在80端口上。这时候A机器去连接Nginx,可以发起多达6w多条长连接。如果B机器去连接Nginx,同样也可以发起6w多条连接。这是由于确定一条连接,是由class="lazy" data-src和dst来共同决定的。

认为Linux只能接受65535条连接的想法,只能说是犯了非常浅显的想当然主义。

65535个端口,作为压测机可能对你来说太小了一些。但对于服务器来说,已经绰绰有余了。

2. 如何支持百万连接?

从上面可以看到,连接数,是没有限制的。但Linux还有一层防护,那就是文件句柄数。通过lsof命令查看到的那些东西,就是所谓的文件句柄。

先来看一下几个命令的展示。

ulmit,展示了每个进程所能占用的文件句柄数量。

ulimit -n 65535

file-max,展示了操作系统能够占用的文件句柄数量总和,针对的是所有的进程。

cat /proc/sys/fs/file-max 766722

file-nr,展示了当前已经使用的句柄数量和总的句柄数量。可以拿来做监控。

cat /proc/sys/fs/file-nr 1824  0 766722

要支持百万连接,既要放开操作系统级别的句柄,也要放开进程级别的句柄。也就是说,ulimit和file-max的显示,都要大于百万才成。

3. 如何设置?

设置进程的句柄个数,常用的方式就有ulimit,但是非常非常不推荐。原因无他,只有在同一个shell中启动的进程,ulimit的设置才会生效。你打开另外一个shell,或者重启机器,ulimit的改动都会丢失。就是下面这种方式:

ulimit -n 1000000

正确的方式,是修改/etc/security/limits.conf文件。比如下面的内容。

root soft nofile 1000000 root hard nofile 1000000 * soft nofile 1000000 * hard nofile 1000000

可以看到,我们可以针对于特定的用户,修改其句柄数量。这在安装es等应用时,经常碰到。

es  -  nofile  65535

但即使是这种方式,也要求你需要打开一个新的shell进行操作。在当前修改的shell里或者修改之前的shell里,同样不生效。xjjdog就曾遇到过多起这样明明放开了限制,但还是发生问题的案例。

要看到这些改变是否已经对进程生效,可以查看进程的内存映射文件。比如cat /proc/180323/limits,其中会有详细的展示。

这个数值,也并不是想要设多大就多大的。它的大小上限,是由nr_open决定的。想要更大,就要修改/ect/sysct.conf  中fs.nr_open的值。

cat /proc/sys/fs/nr_open 1048576

那file-max又该如何修改呢?建议修改/etc/sysctl.conf文件,加入下面内容。足足有6百多万!

fs.file-max = 6553560

当文件数量超出的时候,就会报kernel: VFS: file-max limit 65535 reached的错误。

总结一下。

Ulimit的故障怎么解决

Linux即使放开一个端口,能够接受的连接也是海量的。这些连接的上限,受到单进程文件句柄数量和操作系统文件句柄数量的限制,也就是ulimit和file-max。

为了能够将参数修改持久化,我们倾向于将改动写入到文件里。进程的文件句柄限制,可以放在/etc/security/limits.conf中,它的上限受到fs.nr_open的制约;操作系统的文件句柄限制,可以放到/etc/sysctl.conf文件中。最后,别忘了在/proc/$id/limits文件中,确认修改是否对进程生效了。

到此,相信大家对“Ulimit的故障怎么解决”有了更深的了解,不妨来实际操作一番吧!这里是编程网网站,更多相关内容可以进入相关频道进行查询,关注我们,继续学习!

免责声明:

① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。

② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341

Ulimit的故障怎么解决

下载Word文档到电脑,方便收藏和打印~

下载Word文档

猜你喜欢

Ulimit的故障怎么解决

本篇内容主要讲解“Ulimit的故障怎么解决”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“Ulimit的故障怎么解决”吧!最近遇到一个非常有趣的问题。其中有一组HAProxy,频繁出现问题。登录
2023-06-17

win7打印机常见的故障怎么解决

本篇内容主要讲解“win7打印机常见的故障怎么解决”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“win7打印机常见的故障怎么解决”吧!一.打印有横纹由哪些原因引起?如何解决?答: 1. 安装墨盒
2023-06-28

腾讯云服务器故障怎么解决的

腾讯云服务器故障是一种常见的云计算故障,常见的原因包括硬件故障、软件故障和配置问题等。以下是一些常见的故障解决方法:硬件故障硬件故障是最常见的故障之一。如果服务器无法正常工作,则可能是由于服务器硬件损坏或软件故障造成的。例如,服务器的硬盘损坏、内存故障或网络连接中断等。解决方法可以是更换硬件或升级服务器硬件,或者进行维
腾讯云服务器故障怎么解决的
2023-10-28

redis集群节点故障怎么解决

当Redis集群节点出现故障时,可以采取以下措施来解决问题:检查集群节点状态:使用命令redis-cli cluster nodes检查集群节点的状态,查看故障节点的详细信息。重新启动故障节点:尝试通过重启故障节点来解决问题,可以使用命令r
redis集群节点故障怎么解决
2024-05-21

亚马逊云服务器故障怎么解决的

亚马逊云服务的故障可以分为内部故障和外部故障两种。其中,内部故障主要指由于操作系统或应用程序的故障引起的故障,这种故障会导致数据丢失或系统崩溃。外部故障则指由于自然灾害、病毒、黑客攻击等外部因素引起的故障,这种故障会导致数据泄露、系统宕机等问题。针对亚马逊云服务的内部故障,一些常见的解决方法包括及时更新操作系统、定期检
2023-10-27

电脑显卡常见的故障及怎么解决

这篇文章主要讲解了“电脑显卡常见的故障及怎么解决”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“电脑显卡常见的故障及怎么解决”吧!常见故障一:开机无显示此类故障一般是因为显卡与主板接触不良或主
2023-06-28

Mysql update sql引起的生产故障怎么解决

这篇文章主要介绍“Mysql update sql引起的生产故障怎么解决”,在日常操作中,相信很多人在Mysql update sql引起的生产故障怎么解决问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”Mys
2023-06-29

亚马逊服务器故障怎么解决

1.了解亚马逊服务器故障的原因亚马逊服务器故障可能是由多种原因引起的,例如硬件故障、网络故障、软件故障等。在解决问题之前,需要先了解故障的具体原因。2.检查亚马逊服务器状态在发现亚马逊服务器故障后,需要先检查服务器的状态。可以通过亚马逊的控制台或者命令行工具来检查服务器的状态。如果服务器状态正常,那么可能是其他原因导致的故障。3.重启服务器如果服务器状态正常,但是仍然无法访问,可以尝试重启服务器。在亚马...
2023-10-27

腾讯云服务器故障怎么解决

腾讯云服务器出现故障是一个很常见的问题,以下是一些可能的解决方法:重启服务器:重启服务器会清除所有数据和应用程序,使数据和应用程序能够正常运行。更换硬件:更换硬件设备可能会解决某些问题,例如数据损坏或者硬盘故障。请检查硬件设备,确保它们是否正常工作。查看错误日志:查看腾讯云服务器的错误日志,以便了解问题发生的原因。可以通过搜索错误日志文件或者联系官方客服来了解详细信息。联系客户支持:如
2023-10-26

Fedora19使用ceph出现故障怎么解决

要解决Fedora 19上Ceph出现的故障,可以遵循以下步骤:1. 检查Ceph节点的状态:使用命令`ceph status`来检查Ceph集群的状态。查看输出并确定是否有任何错误或警告信息。2. 检查Ceph配置文件:确保Ceph配置文
2023-09-22

xp显示器常见故障怎么解决

今天小编给大家分享一下xp显示器常见故障怎么解决的相关知识点,内容详细,逻辑清晰,相信大部分人都还太了解这方面的知识,所以分享这篇文章给大家参考一下,希望大家阅读完这篇文章后有所收获,下面我们一起来了解一下吧。故障一:开机时显示器画面抖动得
2023-06-28

阿里云服务器香港故障怎么解决的

阿里云服务器香港故障的原因可能包括以下几个方面:配置错误:如果您之前使用的是阿里云服务提供商提供的基础架构,则阿里云服务器香港故障可能是由于您的操作系统或应用程序配置不正确导致的。您需要检查您的系统设置、应用程序配置或数据库配置,以解决可能导致服务器香港故障的问题。硬件故障:如果您的服务器硬件出现故障,可能导致服务器香港故障。阿里云服务器香港故障可能是由于硬件故障引起的,例如硬件损坏、硬盘
2023-10-26

香港阿里云服务器故障怎么解决的

如果您的香港阿里云服务器发生故障,以下是一些可能有用的解决方案:在阿里云的控制台中获取最新的服务器时间或状态信息:打开您的阿里云的客户端,查看系统或应用程序提供的当前时间或状态信息,以便快速了解故障情况。联系阿里云客户服务团队:如果您的服务器有技术支持,但无法处理它们,您可以联系阿里云的客户服务团队,向他们说明情况并请求协助。检查您的操作系统:检查您的电脑是否安装了最新的操作系统补丁程序,以修复任何已知的漏洞...
2023-10-26

怎样解决路由器故障呢?

  网络管理包括对硬件、软件和人力的使用、综合与协调,以便对网络资源进行监视、测试、配置、分析、评价和控制,这样就能以合理的价格满足网络的一些需求,如实时运行性能、服务质量等。现在小编给大家带来的教程是:怎样解决路由器故障呢?  相信大家在使用路由器过程里面都会遇到非常多的问题吧,其实小编认为出现路由器故障也是非常常见
怎样解决路由器故障呢?
2024-04-17

怎么轻松解决IBM存储硬盘故障

这篇文章给大家介绍怎么轻松解决IBM存储硬盘故障,内容非常详细,感兴趣的小伙伴们可以参考借鉴,希望对大家能有所帮助。IBM存储硬盘故障信息:1、一台IBM DS5300的存储,一个机头,连接的4个扩展柜,底层是50块600GB的硬盘组的RA
2023-06-04

电脑显示灾难性故障怎么解决

遇到电脑显示灾难性故障时,可以尝试以下方法进行解决:1. 重新启动电脑:有时候电脑出现故障只是暂时的问题,重新启动电脑可能会解决。2. 检查电源和连接线:确保电脑的电源连接正常,电源线没有松动或损坏。3. 检查硬件设备:如果电脑显示故障是由
2023-10-10

编程热搜

  • Python 学习之路 - Python
    一、安装Python34Windows在Python官网(https://www.python.org/downloads/)下载安装包并安装。Python的默认安装路径是:C:\Python34配置环境变量:【右键计算机】--》【属性】-
    Python 学习之路 - Python
  • chatgpt的中文全称是什么
    chatgpt的中文全称是生成型预训练变换模型。ChatGPT是什么ChatGPT是美国人工智能研究实验室OpenAI开发的一种全新聊天机器人模型,它能够通过学习和理解人类的语言来进行对话,还能根据聊天的上下文进行互动,并协助人类完成一系列
    chatgpt的中文全称是什么
  • C/C++中extern函数使用详解
  • C/C++可变参数的使用
    可变参数的使用方法远远不止以下几种,不过在C,C++中使用可变参数时要小心,在使用printf()等函数时传入的参数个数一定不能比前面的格式化字符串中的’%’符号个数少,否则会产生访问越界,运气不好的话还会导致程序崩溃
    C/C++可变参数的使用
  • css样式文件该放在哪里
  • php中数组下标必须是连续的吗
  • Python 3 教程
    Python 3 教程 Python 的 3.0 版本,常被称为 Python 3000,或简称 Py3k。相对于 Python 的早期版本,这是一个较大的升级。为了不带入过多的累赘,Python 3.0 在设计的时候没有考虑向下兼容。 Python
    Python 3 教程
  • Python pip包管理
    一、前言    在Python中, 安装第三方模块是通过 setuptools 这个工具完成的。 Python有两个封装了 setuptools的包管理工具: easy_install  和  pip , 目前官方推荐使用 pip。    
    Python pip包管理
  • ubuntu如何重新编译内核
  • 改善Java代码之慎用java动态编译

目录