首页 > 系统相关 >ulimit命令优化linux进程连接数等…

ulimit命令优化linux进程连接数等…

时间:2022-11-11 11:02:31浏览次数:51  
标签:文件 ulimit unlimited kbytes etc 连接数 linux size



在Linux下面部署应用的时候,有时候会遇上Socket/File: Can’t open so many files的问题,比如还有Squid做代理,当文件打开数到900多时速能就非常快的下降,有可能打不开网页.其实Linux是有文件句柄限制的,而且Linux默认不是很高,一般都是1024,生产服务器用其实很容易就达到这个数量

[root@mail data]# ulimit -a
core file size (blocks, -c) 0
data seg size (kbytes, -d) unlimited
scheduling priority (-e) 0
file size (blocks, -f) unlimited
pending signals (-i) 66560
max locked memory (kbytes, -l) 32
max memory size (kbytes, -m) unlimited
open files (-n) 8192
pipe size (512 bytes, -p) 8
POSIX message queues (bytes, -q) 819200
real-time priority (-r) 0
stack size (kbytes, -s) 10240
cpu time (seconds, -t) unlimited
max user processes (-u) 66560
virtual memory (kbytes, -v) unlimited
file locks (-x) unlimited
[separator]


     其中 “open files (-n) 1024 “是Linux操作系统对一个进程打开的文件句柄数量的限制(也包含打开的SOCKET数量,可影响MySQL的并发连接数目).这个值可用ulimit 命令来修改,但ulimit命令修改的数值只对当前登录用户的目前使用环境有效,系统重启或者用户退出后就会失效.
     系统总限制是在这里,/proc/sys/fs/file-max.可以通过cat查看目前的值,修改/etc/sysctl.conf 中也可以控制.
     另外还有一个,/proc/sys/fs/file-nr,可以看到整个系统目前使用的文件句柄数量
     查找文件句柄问题的时候,还有一个很实用的程序lsof.可以很方便看到某个进程开了那些句柄.也可以看到某个文件/目录被什么进程占用了
[root@kyouwar data0]# cat /proc/sys/fs/file-max
372901
[root@kyouwar data0]# cat /proc/sys/fs/file-nr
3200     0       372901
=====================================
ulimit 用于shell启动进程所占用的资源。
可以使用该命令查看进程占用资源的情况。
使用方法:ulimit [-acdfHlmnpsStvw] [size]
-H 设置硬件资源限制.
-S 设置软件资源限制.
-a 显示当前所有的资源限制.
-c size:设置core文件的最大值.单位:blocks
-d size:设置数据段的最大值.单位:kbytes
     ulimit -d unlimited
-f size:设置创建文件的最大值.单位:blocks
-l size:设置在内存中锁定进程的最大值.单位:kbytes
-m size:设置可以使用的常驻内存的最大值.单位:kbytes
     ulimit -m unlimited
-n size:设置内核可以同时打开的文件描述符的最大值【每个进程可以打开的文件数目】【也包含打开的SOCKET数量,可影响MySQL的并发连接数目】.单位:n
-p size:设置管道缓冲区的最大值.单位:kbytes
-s size:设置堆栈的最大值.单位:kbytes
     ulimit -s unlimited
-t size:设置CPU使用时间的最大上限.单位:seconds
     ulimit -t unlimited
-v size:设置虚拟内存的最大值.单位:kbytes 5
-u 设置各linux 用户的最大进程数
     ulimit -u 10000
============================================
#暂时修改直接使用
     ulimit -参数 xx
如:
   同时修改软硬设置   ulimit -SHn 4500
----------------------------------------------------
# 永久地,通过将一个相应的 ulimit 语句添加到由登录 shell 读取的文件中, 即特定于 shell 的用户资源文件,如
1)、解除 Linux 系统的最大进程数和最大文件打开数限制:
vi /etc/security/limits.conf
# 添加如下的行
* soft noproc 11000
* hard noproc 11000
* soft nofile 8192
* hard nofile 8192
#如此每次用户登录后就依照此值设置。

说明:* 代表针对所有用户
noproc 是代表最大进程数
nofile 是代表最大文件打开数
     可以将文件句柄限制统一改成软11000,硬11000.配置文件最前面的是指domain,设置为星号代表全局,另外你也可以针对不同的用户做出不同的限制
     注意.这个当中的硬限制是实际的限制,而软限制,是warnning限制,只会做出warning.其实ulimit命令本身就有分软硬设置,加-H就是硬,加-S就是软
     默认显示的是软限制,如果运行ulimit命令修改的时候没有加上的话,就是两个参数一起改变.
============================================
2)、让 SSH 接受 Login 程式的登入,方便在 ssh 客户端查看 ulimit -a 资源限制:
         a、vi /etc/ssh/sshd_config
             把 UserLogin 的值改为 yes,并把 # 注释去掉
         b、重启 sshd 服务:
               /etc/init.d/sshd restart
#新版本好像不用设置这个!也没有这个配置选项
============================================
3)、修改所有 linux 用户的环境变量文件:
vi /etc/profile
ulimit -u 10000
ulimit -n 4096
ulimit -d unlimited
ulimit -m unlimited
ulimit -s unlimited
ulimit -t unlimited
ulimit -v unlimited
============================================
4)、生效
     修改完重新登录就可以见到.可以用ulimit -a 查看确认.)
----------------------------------------------------
     注意:如果你使用squid的话,你要在/etc/init.d/squid的文件加入ulimit -HSn 65535.另外,在squid.conf中也要加入max_filedesc 16384
============================================
特殊说明:
   注:上面这种方式只是改变了用户登陆系统后的文件打开数,对于/etc/init.d /nginx这种的启动脚本并不起作用,像这种启动脚本,需要在脚本内 程序命令前加一行:
   ulimit -HSn 65535
============================================
补充:可不设置
     生产服务器的配置说明
     有时候在程序里面需要打开多个文件,进行分析,系统一般默认数量是1024,(用ulimit -a可以看到)对于正常使用是够了,但是对于程序来讲,就太少了。
修改2个文件。
1./etc/security/limits.conf
vi /etc/security/limits.conf
加上:
* soft nofile 8192
* hard nofile 20480
----------------------------------------------------
2./etc/pam.d/login
session required /lib/security/pam_limits.so
   另外确保/etc/pam.d/system-auth文件有下面内容
session required /lib/security/$ISA/pam_limits.so
   这一行确保系统会执行这个限制。
----------------------------------------------------
3.一般用户的.bash_profile
#ulimit -n 1024
重新登陆ok




标签:文件,ulimit,unlimited,kbytes,etc,连接数,linux,size
From: https://blog.51cto.com/u_2776699/5843262

相关文章

  • 【Linux】Ubuntu 18.04 Python修改 pip源为阿里源
    1.在home/用户名/目录下创建.pip文件夹cd~mkdir.pipcd~/.piptouchpip.conf2.编辑pip.conf文件,输入以下内容保存即可[global]trusted-host=mirrors.ali......
  • 0:Linux的初步认识-步入Linux的现代方法
    目录​​0.0系统的认识​​​​0.1Linux操作系统认识,以及开源的提出:Linux的千奇百怪的版本​​​​0.2开源的含义​​​​0.3Linux的用途,各类发行版本​​0.0系统的认......
  • 1:VMware虚拟机的使用-步入Linux的现代方法
    目录​​1.1Vmware虚拟机​​​​1.2VMware16​​​​1.3关于从15更新到16的说法​​1.1Vmware虚拟机安装系统的方式实体机双系统虚拟机详见:​​VMwareWorkstation......
  • Linux 终端编译后运行.c/.cpp文件中文乱码问题
    目录​​一、异常错误​​​​二、原因​​​​三、解决方法​​​​1.首先确保源代码编码格式是UTF-8​​​​2.确保Linux运行语言支持中文​​一、异常错误发现通过VS2019......
  • [ Linux ] 缓冲区的理解 以及简易模拟实现封装C标准库
    在输出重定向的时候为什么必须fflush(stdout)才能将内容刷新到指定文件呢?我们当时回答是因为存在缓冲区。那么本篇文章我们将重点了解认识一下缓冲区。0.什么是缓冲区?缓冲区......
  • Linux上安装Redis教程
    1、执行下面的命令下载redis: wgethttps://download.redis.io/releases/redis-6.2.6.tar.gz 2、解压redis:sudotar-zxvfredis-6.2.6.tar.gz3、删除压缩包......
  • Linux——文件传输协议知识点梳理
    接触过Linux操作系统的同学一定对文件传输协议并不陌生,因为在Linux操作系统里我们对文件的上传下载通常不会像我们操作window系统那么直观,一般都是通过文件传输协议去完成......
  • linux ip 数据转发
    https://www.bbsmax.com/A/nAJvP9Bodr/工作流程内网主机向公网发送数据包时,由于目的主机跟源主机不在同一网段,所以数据包暂时发往内网默认网关处理,而本网段的主机对此数......
  • linux nginx上传文件配置
    1、参考nginx中上传文件大小报错500怎么办2、nignx配置server{listen8088;#listen443ssl;#ssl_certificate7249692_tlh.kikyo.co......
  • Linux上软件安装
    一、Linux上安装java1、通过filezilla这个工具,连接上Linux服务器,然后将我们准备好的Java和tomcat的安装包传输到服务器的/root路径下。2、对jdk进行解压tarzxvf/root/......