`
walksing
  • 浏览: 217734 次
  • 性别: Icon_minigender_1
  • 来自: 深圳
社区版块
存档分类
最新评论

ulimit 设置

阅读更多
ulimit 设置(2009-08-21 15:17:16)
转载标签: 杂谈 分类: 工作 
ulimit -a 用来显示当前的各种用户进程限制。
Linux对于每个用户,系统限制其最大进程数。为提高性能,可以根据设备资源情况,设置各linux 用户的最大进程数,下面我把某linux用户的最大进程数设为10000个:
ulimit -u 10000
对于需要做许多 socket 连接并使它们处于打开状态的 Java 应用程序而言,最好通过使用 ulimit -n xx 修改每个进程可打开的文件数,缺省值是 1024。
ulimit -n 4096 将每个进程可以打开的文件数目加大到4096,缺省为1024
其他建议设置成无限制(unlimited)的一些重要设置是:
数据段长度:ulimit -d unlimited
最大内存大小:ulimit -m unlimited
堆栈大小:ulimit -s unlimited
CPU 时间:ulimit -t unlimited
虚拟内存:ulimit -v unlimited
  
暂时地,适用于通过 ulimit 命令登录 shell 会话期间。
永久地,通过将一个相应的 ulimit 语句添加到由登录 shell 读取的文件中, 即特定于 shell 的用户资源文件,如:

1)、解除 Linux 系统的最大进程数和最大文件打开数限制:
    vi /etc/security/limits.conf
    # 添加如下的行
    * soft noproc 11000
    * hard noproc 11000
    * soft nofile 4100
    * hard nofile 4100

    说明:* 代表针对所有用户
    noproc 是代表最大进程数
    nofile 是代表最大文件打开数
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

/**************************************

有时候在程序里面需要打开多个文件,进行分析,系统一般默认数量是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
-------------
对于solaris

其实在系统里面有这样一个命令ulimit,以下是ulimit -a执行的结果:

time(seconds) unlimited
file(blocks) unlimited
data(kbytes) unlimited
stack(kbytes) 8192
coredump(blocks) unlimited
nofiles(descriptors) 1024
memory(kbytes) unlimited
其中nofiles就是文件描述符的变量值,该值受rlim_fd_cur这个参数的影响,可以用ulimit -n number命令来修改。但不管怎么改,程序仍然不能突破fd=256的限制。在Solaris Tunable Parameters Reference Manua这本书里面能查到以下的资料:

A 32-bit program using standard I/O is limited to 256 file descriptors。
A 64-bit program using standard I/O can use up to 2 billion descriptors。
这也就是说32位的程序是没有办法突破这个限制的,只有64位的程序才能使用高达2亿个文件描述符,SUN的软硬件在很早以前就实现了64位的架构,现在唯一要解决的就是将程序编译成64位程序,为了生成64位程序,就必须要有64位的编译器(其实不是这样的),如果你去www.sunfreeware.com下载64位编译器gcc,网站上没有特别注明是64位的gcc,但是会有个意外的收获,就是该软件的说明里面注明了只要在用gcc编译的时候加上-m64的option就能生成64位程序了。

于是用gcc -m64去编译生成一个64位程序后,用ulimit -n 102400将number of fd设成很大的情况下,所有问题迎刃而解,再也不存在文件描述符不够用的情况。

在/etc/system文件设置rlimi_fc_max和rlim_fd_cur格式如下:

* set hard limit on file descriptors
set rlim_fd_max = 4096
* set soft limit on file descriptors
set rlim_fd_cur = 1024
命令ulimit使用格式如下:

usage: ulimit [ -HSacdfnstv ] [ limit ]
ulimit -a是显示各参数的设置值,ulimit -n是用来设置fd的最大值的。
*************************************************

修改文件描述符限制

Solaris有两个参数控制进程可打开的文件描述符:rlim_fd_max,rlim_fd_cur。前者修改是个硬设置,修改需要权限,后者是个软设置,用户可以limit或者setrlimit() 修改,该值最大不能超过前者。一般我们在/etc/system里修改这两个参数

set rlim_fd_max = 65535

set rlim_fd_cur = 65535

==========================

ulimit 用于shell启动进程所占用的资源。

可以使用该命令查看进程占用资源的情况。

使用方法:ulimit [-acdfHlmnpsStvw] [size]

-H 设置硬件资源限制.
-S 设置软件资源限制.
-a 显示当前所有的资源限制.
-c size:设置core文件的最大值.单位:blocks
-d size:设置数据段的最大值.单位:kbytes
-f size:设置创建文件的最大值.单位:blocks
-l size:设置在内存中锁定进程的最大值.单位:kbytes
-m size:设置可以使用的常驻内存的最大值.单位:kbytes
-n size:设置内核可以同时打开的文件描述符的最大值.单位:n
-p size:设置管道缓冲区的最大值.单位:kbytes
-s size:设置堆栈的最大值.单位:kbytes
-t size:设置CPU使用时间的最大上限.单位:seconds
-v size:设置虚拟内存的最大值.单位:kbytes 5
1]在RH8的环境文件/etc/profile中,我们可以看到系统是如何配置ulimit的:

#grep ulimit /etc/profile
ulimit -S -c 0 > /dev/null 2>&1    (输出重定向,正常输出和异常输出都忽略)

这条语句设置了对软件资源和对core文件大小的设置
2]如果我们想要对由shell创建的文件大小作些限制,如:

#ll h
-rw-r--r-- 1 lee lee 150062 7月 22 02:39 h
#ulimit -f 100 #设置创建文件的最大块(一块=512字节)
#cat h>newh
File size limit exceeded
#ll newh
-rw-r--r-- 1 lee lee 51200 11月 8 11:47 newh
文件h的大小是150062字节,而我们设定的创建文件的大小是512字节x100块=51200字节
当然系统就会根据你的设置生成了51200字节的newh文件.
3]可以像实例1]一样,把你要设置的ulimit放在/etc/profile这个环境文件中.
如果针对所有用户设置,可在/etc/security/limits.conf 设置.
分享到:
评论

相关推荐

    elasticbeanstalk-docker-ulimit-example:更新 ulimit 设置的示例 Elastic Beanstalk Docker 项目

    使用以下 ebextensions 配置更新 ulimit 设置的示例 Elastic Beanstalk Docker 项目: files: "/etc/security/limits.conf": mode: "00644" owner: "root" group: "root" content: | * hard nofile 65536 ...

    linux_ulimit的使用

    `ulimit` 是一个在 Linux 和其他类 Unix 操作系统中常用的命令行工具,用于设置或显示对当前 shell 进程及其子进程的资源限制。这些限制可以包括最大文件大小、最大核心文件大小、最大数据段大小、最大堆栈大小、...

    ulimit设置句柄数

    放到服务器上运行一段时间抛出Toomanyopenfiles的...  异常信息简单的信息如下:  I/Oexception(java.net.SocketException)caughtwhenprocessingrequest:Toomanyopenfiles  大致了解下,是文件句柄数设置太低导致

    Linuxcore文件介绍.pdf

    例如,在这些文件中配置ulimit设置可以控制用户会话中生成Core Dump的行为。 core-%e-%p-%t模式 通过调整/proc/sys/kernel/core_pattern文件,可以控制Core Dump文件的命名和存储位置。例如,设置模式为/corefile/...

    Linux系统下GDB调试指南.docx

    为了确保系统能够生成完整的core dump文件,首先需要调整ulimit设置以避免文件大小限制: 1. 使用`su root`命令切换至root用户。 2. 编辑`/etc/profile`文件,在文件末尾添加以下内容: ``` ulimit -c unlimited ...

    ubuntu-linux下程序崩溃生成coredump的方法.pdf

    1. **core dump 功能未开启**:可以使用 `ulimit -c` 命令检查当前设置,并通过 `ulimit -c unlimited` 来解除大小限制。 2. **apport.service 处理**:如前所述,这个服务会自动处理掉 core dump 文件。确保已经...

    websphere6.1在linux配置说明[汇编].pdf

    4. **增大ulimit设置**:在bash shell的配置文件`.bashrc`中,增加ulimit的值(例如`ulimit -n 8192`),这有助于解决可能遇到的`addNode`和`importWasprofile`问题。修改后,使用`source .bashrc`使改动生效。 5. ...

    ORACLE 10G 在LINUX 下的安装

    4. **系统限制**:调整系统限制,如ulimit设置,以满足Oracle的运行要求。 5. **防火墙配置**:可能需要开放特定端口以允许数据库连接。 6. **时区设置**:根据需要设置正确的时区。 7. **locale设置**:Oracle需要...

    linux安装oracle全程

    此外,还需要关注其他内核参数,如ulimit设置,包括最大文件描述符数、最大进程数等。这些参数的设置对于Oracle数据库的稳定运行至关重要。另外,还要确保Oracle用户拥有适当的权限,并创建所需的目录结构,如ORACLE...

    RedHatLinux5.1下安装oracle9i.pdf

    除了上述步骤,可能还需要调整ulimit设置、创建Oracle基目录、安装必要的依赖包等。例如: ``` # ulimit -n 65536 ``` 以提高文件描述符的限制。 5. **安装Oracle软件**: 使用Oracle提供的安装介质,按照...

    redis-5.0.8 安装与基本配置.docx

    为了优化Redis性能,需要调整用户的ulimit设置。在/etc/security/limits.conf文件中添加相应的行,以增加文件描述符(nofile)和进程限制(nproc)。 接下来,创建Redis的安装目录和数据存储路径,如/data/redis。...

    websphere6.1在linux配置说明[整理].pdf

    4. **增大ulimit设置**: 为了防止在执行addNode和importWasprofile操作时遇到问题,需要在bash shell的配置文件`.bashrc`中增加`ulimit -n 8192`,然后运行`source .bashrc`使其生效。这将提升文件描述符的限制,...

    obiee快速安装手册.txt

    4. **调整 ulimit 设置**:通过 `ulimit -n unlimited` 命令将文件描述符数量设置为无限制。 #### 三、OBIEE 安装步骤 ##### 3.1 准备安装目录 1. **创建安装目录**: ```bash mkdir /usr/local/OracleBI mkdir...

    AIX 5300-04 安装oracle数据库.pptx

    然后,配置用户的shell限制和系统参数,如ulimit设置,以确保Oracle数据库运行时所需的资源限制得以满足。这可能涉及到修改`/etc/security/limits.conf`文件,设置如最大打开文件数、堆栈大小等。 创建Oracle软件的...

    linux安装oracle[整理].pdf

    安装过程中,还需要调整系统参数,如ulimit设置,以确保Oracle可以正确地分配文件描述符和进程数。此外,优化内存分配、共享内存设置(如SHMMAX和SHMMIN)以及虚拟内存(如SWAP)也是必不可少的步骤。 Oracle的安装...

    Eclipse运行时提示failed to create the java virtual machine

    - 对于 Linux 或 Unix 系统,可能需要检查系统的 ulimit 设置,确保没有对进程使用的内存进行严格的限制。 - 对于 Windows 系统,则需要注意操作系统的版本和可用内存。 5. **重启 Eclipse**: - 完成以上所有...

    linux下oracle安装

    - 配置系统参数,如ulimit设置,以支持Oracle的运行。 2. **安装库文件**: - Oracle 9i需要一些特定的库文件,例如kernel-headers、ncurses、glibc等,确保这些库已安装或通过yum或rpm命令安装。 3. **创建用户...

    红旗Linux4 安装Oracle11g 完整教程

    10. **修改ulimit**:在`/etc/profile`文件中添加针对`oracle`用户的ulimit设置,确保用户可以创建足够的进程和打开文件。 11. **切换到oracle用户**:使用`su - oracle`切换到`oracle`用户,然后编辑`.bash_...

    oracle11g在RHEL63安装注意事项

    在安装Oracle前,还需要对系统进行一些必要的调整,包括调整内核参数、限制文件句柄数、修改ulimit设置以及设置环境变量等。这些设置有助于确保Oracle数据库运行时的稳定性和性能。 7. **运行安装脚本**: 在完成...

Global site tag (gtag.js) - Google Analytics