后台-插件-广告管理-内容页广告位一(手机)

您现在的位置是:首页 > 开发类 > 软件研发软件研发

这个你得会,通过合理配置来支持百万级并发连接!!

2021-06-05 09:15:13软件研发人已围观

简介在生产环境Linux系统中,基本上都需要解除文件句柄数的限制。原因是Linux系统的默认值为1024,也就是说,一个进程最多可以接受1024个socket连接,这是远远不够的。文件句柄也叫文件描述符。在Linux系统中,文件可分为普通文件、目录文件、链接文件和设备文件。文件描述符(File Descriptor)是内核为了高效管理已被打开的文件所创建的索引,是一个非负整数(通常是小整数),用于指代被打开的文件。所有的IO系统调用(包括socket的读写调用)都是通过文件描述符完成的。在Linux下,通

在生产环境Linux系统中,基本上都需要解除文件句柄数的限制。原因是Linux系统的默认值为1024,也就是说,一个进程最多可以接受1024个socket连接,这是远远不够的。
文件句柄也叫文件描述符。在Linux系统中,文件可分为普通文件、目录文件、链接文件和设备文件。
文件描述符(File Descriptor)是内核为了高效管理已被打开的文件所创建的索引,是一个非负整数(通常是小整数),用于指代被打开的文件。所有的IO系统调用(包括socket的读写调用)都是通过文件描述符完成的。
在Linux下,通过调用ulimit命令可以看到一个进程能够打开的最大文件句柄数量。这个命令的具体使用方法是:

ulimit -n

ulimit命令是用来显示和修改当前用户进程的基础限制命令,-n选项用于引用或设置当前的文件句柄数量的限制值,Linux系统的默认值为1024。
单个进程打开的文件句柄数量超过了系统配置的上限值时会发出“Socket/File:Can’t open so many files”的错误提示。
可以通过ulimit来设置这两个参数,方法如下:

ulimit  -n  1000000

使用ulimit命令有一个缺陷,即该命令只能修改当前用户环境的一些基础限制,仅在当前用户环境有效。也就是说,在当前的终端工具连接当前shell期间,修改是有效的,一旦断开用户会话,或者说用户退出Linux,它的数值就又变回系统默认的1024了。并且,系统重启后,句柄数量会恢复为默认值。
ulimit命令只能用于临时修改,如果想永久地把最大文件描述符数量值保存下来,可以编辑/etc/rc.local开机启动文件,在文件中添加如下内容:

ulimit -SHn 1000000

选项-S表示软性极限值,-H表示硬性极限值。
硬性极限值是实际的限制,就是最大可以是100万,不能再多了。
软性极限值则是系统发出警告(Warning)的极限值,超过这个极限值,内核会发出警告。

普通用户通过ulimit命令可将软性极限值更改到硬性极限值的最大设置值。如果要更改硬性极限值,必须拥有root用户权限。

要彻底解除Linux系统的最大文件打开数量的限制,可以通过编辑Linux的极限配置文件/etc/security/limits.conf来做到。修改此文件,加入如下内容:

soft nofile 1000000
hard nofile 1000000

在使用和安装目前流行的分布式搜索引擎ElasticSearch时,必须修改这个文件,以增加最大的文件描述符的极限值。当然,在生产环境运行Netty时,也需要修改/etc/security/limits.conf文件来增加文件描述符数量的极限值。

Java高级架构面试知识点整理

我整理的《最全Java高级架构面试知识点整理》已升级为2.0版本,200个知识点,178页。点击这获取。同时欢迎来java架构交流群进行交流!!!

文章来源:https://blog.csdn.net/Java_DaFei/article/details/117484629

Tags:Linux java 

很赞哦! ()

后台-插件-广告管理-内容页广告位二(手机)
后台-插件-广告管理-内容页广告位三(手机)

随机图文

后台-插件-广告管理-内容页广告位四(手机)

文章评论

留言与评论(共有 0 条评论)
   
验证码:

本栏推荐

站点信息

  • 文章统计60173篇文章
  • 浏览统计4401次浏览
  • 评论统计1个评论
  • 标签管理标签云
  • 统计数据:统计代码
  • 微信公众号:扫描二维码,关注我们