AIX上ulimit -a 输出的含义
之前分享了有关linux下更改命令,不过AIX的命令和linux还不太一样。不过基本解决的都是
:too many open files的错误
AIX 用户使用的系统资源限制包括两个概念 --- 硬限制(hard limits) 和软限制(soft limits)。
hard limits自AIX 4.1版本开始引入。hard limits 应由AIX系统管理员设置,只有security组的成员可以将此值增大,
用户本身可以减小此限定值,但是其更改将随着该用户从系统退出而失效。使用下列命令可以查看hard limits的限定值:
ulimit -Ha
soft limits 是AIX核心使用的限制进程对系统资源的使用的上限值。此值可由任何人更改,但不能超出
hard limits值。这里要注意的是只有security组的成员可使更改永久生效,普通用户的更改在其退出系统
后将失效。使用以下命令可以查看soft limits的设置:
ulimit -a
在/etc/security/limits 将stack值设为了-1 为何用ulimit -a 看到的是 4194304?
出现这种问题的原因是在您的操作系统中设置了默认的stack的“硬限制”(hard limit)。要解决这个问题,您需要在/etc/security/limits中设置stack的新的硬限制(hard limit)为无限,然后再设置stack的限制。如:
default:
fsize = 2097151
core = 2097151
cpu = -1
data = 262144
rss = 65536
stack_hard = -1
stack = -1
nofiles = 2000
然后用受影响的用户账户重新登录并运行ulimit -a命令,新的stack的限制应该成为无限:
#ulimit -a
time(seconds) unlimited
file(blocks) unlimited
data(kbytes) 131072
stack(kbytes) unlimited
memory(kbytes) 32768
coredump(blocks) 2097151
nofiles(descriptors) 2000
To view the current value specified for these shell limits, and to change them if necessary:
1.Enter the following command:
# smit chuser
很多问题也会由设置不当而引起,这些值可以通过ulimit -a来查看:
PEKAX528:/>ulimit -a
time(seconds) unlimited
file(blocks) unlimited
data(kbytes) unlimited
stack(kbytes) 4194304
memory(kbytes) 32768
coredump(blocks) unlimited
nofiles(descriptors) 2000
但是这些都是什么含义呢?下面这段文字看了就明白了。
PEKAX528:/>more /etc/security/limits
*
* Sizes are in multiples of 512 byte blocks, CPU time is in seconds
*
* fsize --- soft file size in blocks
* core --- soft core file size in blocks
* cpu --- soft per process CPU time limit in seconds
* data --- soft data segment size in blocks
* stack --- soft stack segment size in blocks
* rss --- soft real memory usage in blocks
* nofiles --- soft file descriptor limit
* fsize_hard --- hard file size in blocks
* core_hard --- hard core file size in blocks
* cpu_hard --- hard per process CPU time limit in seconds
* data_hard --- hard data segment size in blocks
* stack_hard --- hard stack segment size in blocks
* rss_hard --- hard real memory usage in blocks
* nofiles_hard --- hard file descriptor limit
*
* The following table contains the default hard values if the
* hard values are not explicitly defined:
*
* Attribute Value
* ========== ============
* fsize_hard set to fsize
* cpu_hard set to cpu
* core_hard -1
* data_hard -1
* stack_hard 8388608
* rss_hard -1
* nofiles_hard -1
*
* NOTE: A value of -1 implies "unlimited"
*
default:
fsize = 2097151
core = 2097151
cpu = -1
data = 262144
rss = 65536
stack = 65536
nofiles = 2000
root:
fsize = -1
data = -1
stack = -1
core = -1
daemon:
bin:
sys:
adm:
uucp:
guest:
nobody:
lpd:
db2inst1:
core = -1
rss = -1
fsize = -1
data = 491519
oracle:
fsize = -1
data = -1
stack = -1
core = -1
fsize_hard = -1
cpu_hard = -1
data_hard = -1
stack_hard = -1
core_hard = -1
core_hard = -1
rss = -1
nofiles = 4000
ulimit 命令
ulimit[-H] [-S] [-a] [-c] [-d] [ -f ] [-m] [-n] [-s] [-t] [ Limit ]
ulimit命令设置或报告用户进程资源极限,如 /etc/security/limits 文件所定义。文件包含以下缺省值极限:
fsize = 2097151
core = 2097151
cpu = -1
data = 262144
rss = 65536
stack = 65536
nofiles = 2000
当新用户添加到系统中时,这些值被作为缺省值使用。当向系统中添加用户时,以上值通过mkuser命令设置,或通过chuser命令更改。
极限分为软性和硬性。通过 ulimit 命令,用户可将软极限更改到硬极限的最大设置值。要更改资源硬极限,必须拥有 root 用户权限。
很多系统不包括以上一种或数种极限。特定资源的极限在指定 Limit 参数时设定。Limit参数的值可以是每个资源中指定单元中的数字,或者为值unlimited。要将特定的 ulimit 设置为unlimited,可使用词unlimited。
注:在 /etc/security/limits 文件中设置缺省极限就是设置了系统宽度极限,而不仅仅是创建用户时用户所需的极限。
省略 Limit 参数时,将会打印出当前资源极限。除非用户指定 -H 标志,否则打印出软极限。当用户指定一个以上资源时,极限名称和单元在值之前打印。如果未给予选项,则假定带有了-f标志。
由于 ulimit 命令影响当前 shell 环境,所以它将作为 shell 常规内置命令提供。如果在独立的命令执行环境中调用该命令,则不影响调用者环境的文件大小极限。以下示例中正是这种情况:
env ulimit 10000
一旦通过进程减少了硬极限,若无 root 特权则无法增加,即使返回到原值也不可能。
关于用户和系统资源极限的更多信息,请参见 AIX 5L Version 5.2 Technical Reference: Base Operating System and Extensions Volume 1 中的 getrlimit、setrlimit或 vlimit子例程。
列出所有当前资源极限。 |
|
以 512 字节块为单位,指定核心转储的大小。 |
|
以 K 字节为单位指定数据区域的大小。 |
|
使用Limit参数时设定文件大小极限(以块计),或者在未指定参数时报告文件大小极限。缺省值为-f标志。 |
|
指定设置某个给定资源的硬极限。如果用户拥有 root 用户权限,可以增大硬极限。任何用户均可减少硬极限。 |
|
以 K 字节为单位指定物理存储器的大小。 |
|
指定一个进程可以拥有的文件描述符的数量的极限。 |
|
以 K 字节为单位指定堆栈的大小。 |
|
指定为给定的资源设置软极限。软极限可增大到硬极限的值。如果-H和-S标志均未指定,极限适用于以上二者。 |
|
指定每个进程所使用的秒数。 |
成功完成。 |
|
拒绝对更高的极限的请求,或发生错误。 |
包含ulimit内置命令。 |
在linux上的程序放到AIX560上,结果一跑就coredown.
用ulimit -a查看限制,发现内存限制太小。将内存改为无限制(也可以用smit),
ulimit -m unlimited 内存
ulimit -s unlimited 堆栈
ulimit -d unlimited 数据段
发现程序最多可以申请256M内存,再多还是coredown。
再将
export LDR_CNTRL=MAXDATA=0x40000000 1G
export LDR_CNTRL=MAXDATA=0x80000000 2G
也最多可以申请2G空间,以上是用32位编译的。
采用64位编译(-q64)后。
export LDR_CNTRL=MAXDATA=0xD0000000
export LDR_CNTRL=MAXDATA=0xF0000000 4G
可以最多申请4G空间。
最后设置
export LDR_CNTRL=MAXDATA=0xF00000000 4G
几乎可以申请无限空间(超出物理内存)。
设置该环境变量同时,可以设置使用dsa属性和是否使用最大页
eg:
export LDR_CNTRL=MAXDATA=0xF00000000@dsa
export LDR_CNTRL=MAXDATA=0xF00000000@LARGE_PAGE_DATA=y
如果使用32位编译的话,可以通过共享内存来扩展超过2G的内存申请。
以上环境变量仅对当前对话有效,也可以单独设置到程序中,
采用编译或者启动时添加选项都可以
eg:
cc -bmaxdata:0xD0000000/dsa sample.o
LDR_CNTRL=MAXDATA=0xF00000000 a.out
该值(nofiles)只能在AIX 4.3.1 或以后的版本中更改。
上述定义作为默认值存放在文件 /etc/security/limits 中,在新用户被加进系统后生效。直接更改此文件中的定义值需要将系统重新启动以便使更改生效。将相应值该为"-1" 表示不受 soft limits的限制(unlimited)。
下面我们将就各字段逐一进行介绍:
fsize 用户创建的文件大小限制。此定义值(512字节为单位)为该用户可以生成的最大文件的大小。
core 生成的core文件大小的限制(512字节为单位)。
cpu 用户进程可用cpu的限定值(以秒为单位)。普通用户只能将此值减小,root可以将此值增大。这里要注意的
是进程使用CPU的时间取决于AIX Kernel(核心程序)进程调度算法,该值在此仅做参考。
data 进程数据段大小的限定值(以字节为单位)。
stack 进程堆栈段大小的限定值(以字节为单位)。
rss 进程常驻内存段的限定值(以字节为单位)。AIX核心并不参考此限定。
nofiles 进程中打开文件的最大数量。
相关推荐
ulimit [-a|[-c| -d| -f| -h| -m| -n| -p| -q| -r| -s| -t| -u| -v| -x] [limit]] ``` - `-a`:显示所有限制。 - 其他选项分别对应不同的资源限制,例如 `-c` 表示最大核心文件大小,`-d` 表示最大数据段大小,`-n`...
使用 ulimit -n 命令可以查看单个进程能够打开的最大文件句柄数量。系统默认值 1024,对于一般的应用来说已经足够使用,但是对于需要处理大量请求的应用,可能会出现“too many files open”的错误提示。 要知道...
" = "0" -a `expr ${maxfiles} : '[0-9][0-9]*$'` -eq 0 ]; then ulimit -n 32768 fi ``` 5. **进一步的优化**: - 如果遇到频繁的文件句柄耗尽问题,除了调整限制外,还应该考虑优化应用的文件使用策略。 - ...
通常我们通过终端连接到linux系统后执行ulimit -n 命令可以看到本次登录的session其文件描述符的限制,如下: $ulimit -n 1024 当然可以通过ulimit -SHn 102400 命令来修改该限制,但这个变更只对当前的...
elasticbeanstalk-docker-ulimit-example 使用以下 ebextensions 配置更新 ulimit 设置的示例 Elastic Beanstalk Docker 项目: files: "/etc/security/limits.conf": mode: "00644" owner: "root" group: ...
sipp中文版说明书 -----------cenos下sipp安装------------------------- yum install gcc-c++ gcc automake autoconf libtool make yum install libpcap libpcap-devel yum install ncurses ncurses-devel...ulimit -a
此外,在 Solaris 系统中,ulimit 命令也可以用来调整用户进程的限制,例如使用 `ulimit -a` 命令可以显示当前的各种用户进程限制,并可以使用 `ulimit -n` 命令来修改每个进程可打开的文件数。 Linux 性能调优基本...
这个限制可以通过 `ulimit -a` 命令来查看。默认情况下,Linux 系统的打开文件数量限制是 1024,可以通过修改这个值来增加可以打开的文件数。 临时修改 可以使用 `ulimit -n 2048` 命令临时修改打开文件数量限制为...
注意:在Linux终端下使用ulimit -a查看下一个文件并发数,默认是600,需通过 ulimit -n 60000修改后在允许脚本 在ONU或路由上行创建一个 WEB服务器,尽量使局域网内存的用户访问的网址的大小大一点,效果容易出现; ...
永久修改进程打开文件最大值限制自动化配置脚本,是linux服务器/阿里云新机器必修改选项,安装redis, kafka,elasticsearch等服务器必改
- 系统限制: 使用`ulimit -a`检查并调整文件大小限制和最大打开文件数 4. **异步IO**: - 开启异步IO以提升读写性能,通过`smitty aio`进行设置 5. **实施步骤**: - 停止HACMP - 文件系统和存储规划 - 在A机上...
如果需要扩展某个文件系统的大小,可以使用`chfs`命令,例如`chfs -a size=sl /usr`,这里的`sl`代表增加的字节数,注意AIX中磁盘大小是以512字节为单位的。 2. `limits` 文件和`ulimit` 命令:在AIX中,可以通过...
使用`ulimit -a`命令可以查看当前的系统限制。 3. **解压缩文件**: 在AIX系统中,`.zip`文件可以使用`jar -xvf`命令进行解压,而`.tar.gz`文件则需要先用`gzip -dc`解压,然后通过`tar -xvf -`提取文件内容。 ...
配置 httpd.conf 加入php拓展 /etc/apache2/httpd.conf 如出现 ULIMIT_MAX_FILES=”ulimit -S -n `ulimit -H -n`” 错误 需要去掉 /usr/sbin/apachectl 里面的 ulimit -S -n `ulimit -H -n 重启apache brew install...
例如,`ulimit -a`会列出所有当前shell会话的限制,包括core文件的最大大小(单位为块)。若要禁止生成core文件,可执行`ulimit -c 0`;若要允许生成core文件,并设置其最大大小为100K字节,可执行`ulimit -c 100`;...
- **查看当前core文件生成的设置**:`ulimit -a` #### b. 修改系统配置文件 系统级别的core文件生成设置通常在`/etc/profile`,可以通过注释或取消注释相关行来开启或关闭core文件生成。用户级别的设置通常在`~/....
要检查系统当前是否允许生成core文件,可以使用`ulimit -a`命令。其中,`core file size`选项显示了core文件的最大大小限制(以块为单位)。若限制为0,表示系统不允许生成core文件。要更改这个限制,可以使用`...
在AIX 5300-04操作系统上安装Oracle 10g数据库涉及一系列步骤,这不仅是对数据库系统的安装,也是对AIX操作系统技能的综合应用。首先,需要安装AIX操作系统,确保选用全新覆盖安装,同时安装JFS2文件系统和64位内核...