| |
|
开发:
C++知识库
Java知识库
JavaScript
Python
PHP知识库
人工智能
区块链
大数据
移动开发
嵌入式
开发工具
数据结构与算法
开发测试
游戏开发
网络协议
系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程 数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁 |
-> 系统运维 -> linux ulimit 调优 -> 正文阅读 |
|
[系统运维]linux ulimit 调优 |
在 Linux 系统中,在每个进程中都有一组资源限制,进程默认打开的最大文件数个数为 1024 个,可以通过如下配置查看: #ulimit -n 在应用程序开发过程中,比如向 server 发起连接的客户端超过 1024 个时,server 由于 1024 个最大的文件个数限制而出现打开文件失败,进而出现Too many open files 错误。 在linux中这些限制是分为软限制 (soft limit) 和 硬限制 ( hard limit )。他们的区别就是软限制可以在程序的进程中自行改变(突破限制),而硬限制则不行(除非有 root 权限)。 软限制是内核实际执行的限制,任何进程都可以将软限制设置为任意小于等于对进程限制的硬限制的值。 硬限制充当软限制的上限:非特权进程只能将其软限制设置为从 0 到硬限制的范围内的值,只有超级用户进程可以提高硬限制的值。 任何一个进程都可以降低其硬限制的值,但它必须大于或等于其软限制的值。 查看软限制的命令 #ulimit -Sn 查看硬限制的命令 #ulimit -Hn 那么如何设置这些限制呢? 1、可以通过 getrlimit 和 setrlimit 系统调用的方式进行获取和设置资源限制。 #include <sys/resource.h> int getrlimit(int resource, struct rlimit *rlim); 对于这 2 个函数的每一次调用都会指定一个资源以及一个指向下列结构的指针。 struct rlimit { 比如在应用程序启动过程中,通过调用 setrlimit 的方法进行设置。 struct rlimit rlim; rlim.rlim_cur = 5000; if(setrlimit(RLIMIT_NOFILE, &rlim) != 0) 2、可以在启动服务脚本中进行设置 #!/bin/bash ulimit -c unlimited ./exec & 对于通过命令行修改的 ulimit 配置是临时生效的。 3、也可以修改配置文件(永久生效),如下 #vi /etc/security/limits.conf
配置完后,重启系统,使之生效。 4、当服务已经启动时,这个时候修改 unlimt 是无效的,可以通过如下命令进行动态调整 // centos 7 环境 1、通过ps命令获取服务的pid 2、先查看其配置信息 3、修改配置 //centos 6 下 setrlimit 原理分析 接下里通过源码的方式进行分析下当使用 setrlimit 系统调用设置最大打开文件个数时发生了什么。 asmlinkage long sys_setrlimit(unsigned int resource, struct rlimit __user *rlim)
out: 该方法就是把新的配置信息替换掉当前进程旧的资源限制信息。 当系统打开一个文件时,需要获取一个未使用的文件描述符,其过程如下 int get_unused_fd_flags(int flags)
repeat:
out: 从上述代码可知,每当打开一个文件时,都会判断打开的文件描述符是否超过资源限制,若超过资源限制,则返回失败,错误码为 Too many open files。 原文链接 欢迎关注公众号 Linux码农,获取更多干货 |
|
|
上一篇文章 下一篇文章 查看所有文章 |
|
开发:
C++知识库
Java知识库
JavaScript
Python
PHP知识库
人工智能
区块链
大数据
移动开发
嵌入式
开发工具
数据结构与算法
开发测试
游戏开发
网络协议
系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程 数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁 |
360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 | -2024/11/16 4:29:41- |
|
网站联系: qq:121756557 email:121756557@qq.com IT数码 |