Quantcast
Channel: CSDN博客推荐文章
Viewing all articles
Browse latest Browse all 35570

Linux ulimit 性能调优

$
0
0

ulimit 用于shell启动进程所占用的资源,是shell内建命令。


功能说明: 控制shell程序的资源。 
补充说明: ulimit为shell内建指令,可用来控制shell执行程序的资源。 
语法格式:  ulimit  [-acdfHlmnpsStvw]  [size]

参  数: 
-a   显示目前资源限制的设定。 
-c   设定core文件的最大值,单位为区块。 
-d    <数据节区大小> 程序数据节区的最大值,单位为KB。 
-f     <文件大小> shell所能建立的最大文件,单位为区块。 
-H  设定资源的硬性限制,也就是管理员所设下的限制。 
-m    <内存大小> 指定可使用内存的上限,单位为KB。
-n     <文件数目> 指定同一时间最多可开启的文件数。
-p     <缓冲区大小> 指定管道缓冲区的大小,单位512字节。
-s     <堆叠大小> 指定堆叠的上限,单位为KB。
-S   设定资源的弹性限制。 
-t   指定CPU使用时间的上限,单位为秒。 
-u    <程序数目> 用户最多可开启的程序数目。 
-v    <虚拟内存大小>  指定可使用的虚拟内存上限,单位为KB。
ulimit -a 来查看所有限制值


应用实例:

在Linux下写程序的时候,如果程序比较大,经常会遇到“段错误” (segmentation fault)这样的问题主要就是由于Linux系统初始的堆栈大小(stack size)太小的缘故,一般为10M。一般把stack size设置成256M,这样就没有段错误了!命令为:

ulimit   -s 262140

如果要系统自动记住这个配置,就编辑/etc/profile文件,在 “ulimit -S -c 0 > /dev/null 2>&1”行下,添加“ulimit   -s 262140”,保存重启系统就可以了

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

core - 限制内核文件的大小 
  何谓core文件,当一个程序崩溃时,在进程当前工作目录的core文件中复制了该进程的存储图像。core文件仅仅是一个内存映象(同时加上调试信息),主要是用来调试的。 core文件是个二进制文件,需要用相应的工具来分析程序崩溃时的内存映像。 
 
nofile -打开文件的最大数目 
  对于需要做许多套接字连接并使它们处于打开状态的应用程序而言,最好通过使用 ulimit –n,或者通过设置nofile 参数,为用户把文件描述符的数量设置得比默认值高一些



参考推荐:

linux ulimit调优

通过ulimit改善系统性能


作者:sunboy_2050 发表于2013-3-20 23:13:52 原文链接
阅读:75 评论:0 查看评论

Viewing all articles
Browse latest Browse all 35570

Trending Articles



<script src="https://jsc.adskeeper.com/r/s/rssing.com.1596347.js" async> </script>