Linux系统资源限制

简介: Linux系统资源限制 1. 最大文件数 查看进程允许打开的最大文件句柄数:ulimit -n 查看进程所占的文件描述符: lsof -p xxx | wc -l 设置进程能打开的最大文件句柄数:ulimit -n xxx 2. ulimit -n vs. file-max ? 简单的说, ulimit -n控制进程级别能够打开的文件句柄的数量, 而max-file表示系统级别的能够打开的文件句柄的数量。

Linux系统资源限制

1. 最大文件数

查看进程允许打开的最大文件句柄数:ulimit -n

查看进程所占的文件描述符: lsof -p xxx | wc -l

设置进程能打开的最大文件句柄数:ulimit -n xxx

2. ulimit -n vs. file-max ?

简单的说, ulimit -n控制进程级别能够打开的文件句柄的数量, 而max-file表示系统级别的能够打开的文件句柄的数量。

ulimit -n的设置在重启机器后会丢失,因此需要修改limits.conf的限制,limits.conf中有两个值softhardsoft代表只警告,hard代表真正的限制

Cat /etc/security/limits.conf代码 

*               soft    nofile          150000 

*               hard    nofile          150000 

这里我们把softhard设置成一样的。

cat /proc/sys/fs/file-max”,或“sysctl -a | grep fs.file-max”查看系统能打开的最大文件数。查看和设置例如:

Shell代码 

[root@vm014601 ~]# sysctl -a |grep fs.file-max 

fs.file-max = 200592 

[root@vm014601 ~]# echo "fs.file-max = 2005920" >> /etc/sysctl.conf  

[root@vm014601 ~]# sysctl -p 

[root@vm014601 ~]# cat /proc/sys/fs/file-max                         

2005920 

file-nr是只读文件,第一个数代表了目前分配的文件句柄数;第二个数代表了系统分配的最大文件句柄数;比如线上系统查看结果:

Shell代码 

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

1106537 

# cat /proc/sys/fs/file-nr      

1088  0       1106537 

# lsof | wc -l 

1506 

可以看到file-nrlsof的值不是很一致,但是数量级一致。为什么会不一致?原因如下:

写道

lsof是列出系统所占用的资源,但是这些资源不一定会占用打开文件号的.

比如共享内存,信号量,消息队列,内存映射等,虽然占用了这些资源,但不占用打开文件号。

我曾经在前端机上很长时间都无法得到lsof | wc -l 的结果,这个时候可以通过file-nr粗略的估算一下打开的文件句柄数。

3. sysckernel.threads-max

指定了内核所能使用的线程(所有进程打开线程之和)的最大数目,通过命令 “cat /proc/sys/kernel/threads-max” 查看当前值。查看和设置例如:

Shell代码 

sysctl -a | grep threads 

vm.nr_pdflush_threads = 2 

kernel.threads-max = 229376 

本厂系统配置允许打开的线程数 > 229k

如果此值设小了会导致:-bash: fork: Resource temporarily unavailable

4. 为什么有限制?

为什么Linux内核对文件句柄数、线程和进程的最大打开数进行了限制?以及如果我们把它调的太大,会产生什么样的后果?

原因1 - 资源问题:the operating system needs memory to manage each open fileand memory is a limited resource - especially on embedded systems.

原因2 - 安全问题:if there were no limitsa userland software would be able to create files endlessly until the server goes down.

最主要的是资源问题,为防止某一单一进程打开过多文件描述符而耗尽系统资源,对进程打开文件数做了限制。

5. 设置成多少比较合适?

网上有朋友给了估算公式:file-max number = RAM size/10k

I am not a kernel expert, but as far as I can seethe default for file-max seems to be RAM size divided by 10k. As the real memory used per file handler should be much smaller (size of struct file plus some driver dependent memory)this seems a quite conservative limit. jofel Apr 19 at 16:43

那么一个12G RAM 的前端机可以打开接近1M的文件。真的可以打开1百万个文件吗?

为了试验,基于MINA写了一个NIO服务,在一个服务上创建了50万活跃率约为1%TCP连接。观察内存使用 < 4.5G可以粗略认为单个socket连接使用内存小于10K。因此可以用上面的公式来简单估算。

原文

http://maoyidao.iteye.com/blog/1744309

目录
相关文章
|
11天前
|
Linux
在 Linux 系统中,“cd”命令用于切换当前工作目录
在 Linux 系统中,“cd”命令用于切换当前工作目录。本文详细介绍了“cd”命令的基本用法和常见技巧,包括使用“.”、“..”、“~”、绝对路径和相对路径,以及快速切换到上一次工作目录等。此外,还探讨了高级技巧,如使用通配符、结合其他命令、在脚本中使用,以及实际应用案例,帮助读者提高工作效率。
47 3
|
11天前
|
监控 安全 Linux
在 Linux 系统中,网络管理是重要任务。本文介绍了常用的网络命令及其适用场景
在 Linux 系统中,网络管理是重要任务。本文介绍了常用的网络命令及其适用场景,包括 ping(测试连通性)、traceroute(跟踪路由路径)、netstat(显示网络连接信息)、nmap(网络扫描)、ifconfig 和 ip(网络接口配置)。掌握这些命令有助于高效诊断和解决网络问题,保障网络稳定运行。
36 2
|
21天前
|
Linux 应用服务中间件 Shell
linux系统服务二!
本文详细介绍了Linux系统的启动流程,包括CentOS 7的具体启动步骤,从BIOS自检到加载内核、启动systemd程序等。同时,文章还对比了CentOS 6和CentOS 7的启动流程,分析了启动过程中的耗时情况。接着,文章讲解了Linux的运行级别及其管理命令,systemd的基本概念、优势及常用命令,并提供了自定义systemd启动文件的示例。最后,文章介绍了单用户模式和救援模式的使用方法,包括如何找回忘记的密码和修复启动故障。
42 5
linux系统服务二!
|
21天前
|
Linux 应用服务中间件 Shell
linux系统服务!!!
本文详细介绍了Linux系统(以CentOS7为例)的启动流程,包括BIOS自检、读取MBR信息、加载Grub菜单、加载内核及驱动程序、启动systemd程序加载必要文件等五个主要步骤。同时,文章还对比了CentOS6和CentOS7的启动流程图,并分析了启动流程的耗时。此外,文中还讲解了Linux的运行级别、systemd的基本概念及其优势,以及如何使用systemd管理服务。最后,文章提供了单用户模式和救援模式的实战案例,帮助读者理解如何在系统启动出现问题时进行修复。
41 3
linux系统服务!!!
|
5天前
|
Ubuntu Linux 网络安全
linux系统ubuntu中在命令行中打开图形界面的文件夹
在Ubuntu系统中,通过命令行打开图形界面的文件夹是一个高效且实用的操作。无论是使用Nautilus、Dolphin还是Thunar,都可以根据具体桌面环境选择合适的文件管理器。通过上述命令和方法,可以简化日常工作,提高效率。同时,解决权限问题和图形界面问题也能确保操作的顺利进行。掌握这些技巧,可以使Linux操作更加便捷和灵活。
13 3
|
29天前
|
Web App开发 搜索推荐 Unix
Linux系统之MobaXterm远程连接centos的GNOME桌面环境
【10月更文挑战第21天】Linux系统之MobaXterm远程连接centos的GNOME桌面环境
249 4
Linux系统之MobaXterm远程连接centos的GNOME桌面环境
|
1月前
|
Linux 测试技术 网络安全
Linux系统之安装OneNav个人书签管理器
【10月更文挑战第19天】Linux系统之安装OneNav个人书签管理器
112 5
Linux系统之安装OneNav个人书签管理器
|
30天前
|
运维 监控 Linux
Linux系统之部署Linux管理面板1Panel
【10月更文挑战第20天】Linux系统之部署Linux管理面板1Panel
90 3
Linux系统之部署Linux管理面板1Panel
|
11天前
|
安全 网络协议 Linux
本文详细介绍了 Linux 系统中 ping 命令的使用方法和技巧,涵盖基本用法、高级用法、实际应用案例及注意事项。
本文详细介绍了 Linux 系统中 ping 命令的使用方法和技巧,涵盖基本用法、高级用法、实际应用案例及注意事项。通过掌握 ping 命令,读者可以轻松测试网络连通性、诊断网络问题并提升网络管理能力。
42 3
|
14天前
|
安全 Linux 数据安全/隐私保护
在 Linux 系统中,查找文件所有者是系统管理和安全审计的重要技能。
在 Linux 系统中,查找文件所有者是系统管理和安全审计的重要技能。本文介绍了使用 `ls -l` 和 `stat` 命令查找文件所有者的基本方法,以及通过文件路径、通配符和结合其他命令的高级技巧。还提供了实际案例分析和注意事项,帮助读者更好地掌握这一操作。
34 6
下一篇
无影云桌面