分享
 
 
 

Unix编程/应用问答中文版---6./etc/system可调资源限制

王朝system·作者佚名  2008-05-18
窄屏简体版  字體: |||超大  

作者:不祥 [文章出自: www.fanqiang.com]

6. /etc/system可调资源限制

6.1 Solaris下如何限制每个用户可拥有的最大进程数

6.2 如何配置系统使之支持更多的伪终端

6.3 如何增加每个进程可打开文件句柄数

6.4

6.5 做了setuid()这类调用的程序如何产生core dump

6.6 消息队列调整

--------------------------------------------------------------------------

6. /etc/system可调资源限制

6.1 Solaris下如何限制每个用户可拥有的最大进程数

A: Casper Dik <Casper.Dik@Holland.Sun.Com>

在/etc/system设置

set maxuprc = <num>

Q: maxusers参数究竟影响了什么

A: Casper Dik <Casper.Dik@Holland.Sun.Com>

下面以/etc/system语法格式举例说明:

*

set maxusers = <以MB为单位计的可用物理内存数量>

* 系统所允许的最大进程数,通常最多30000

set max_nprocs = 10 + 16 * maxusers

* 每个用户可以拥有的最大进程数(为超级用户保留5个)

set maxuprc = max_nprocs - 5;

# sysdef | sed -n '/System Configuration/,$p'

6.2 如何配置系统使之支持更多的伪终端

A: Argoth

不要试图通过'/usr/bin/adb -k'到达目的。

a. 如果Solaris版本小于7,修改/etc/system,增加如下行

set pt_cnt=<num>

执行/usr/sbin/reboot -- -r,或者Stop-A,执行boot -r

b. 对于Solaris 8,支持的伪终端数目根据需要动态改变,系统依然有一个内部限制,

但是这个值非常大。如果"pt_cnt"变量小于这个内部限制,将被忽略。一般情况

下,不再需要指定"pt_cnt"变量。但还是有某些罕见的情形,需要设置"pt_cnt"

变量大于内部限制。

6.3 如何增加每个进程可打开文件句柄数

A: Casper Dik <Casper.Dik@Holland.Sun.COM>

从Solaris 2.4开始,可以通过修改/etc/system实现

* set hard limit on file descriptors

set rlim_fd_max = 4096

* set soft limit on file descriptors

set rlim_fd_cur = 1024

软限制超过256时,某些应用程序会出问题,尤其BCP程序。软限制超过1024时,那些

使用select()的应用程序可能会出问题。Solaris 7之前,select()使用的文件句柄

数不能超过1024。Solaris 2.6的RPC代码被重写过了,使用poll()代替select(),可

以使用超过1024的文件句柄。Solaris 2.6之前,如果软限制超过1024,所有RPC服务

很可能崩溃。

Solaris 7下select()可以使用最多达65536的文件句柄,64-bit应用程序缺省情况如

此。如果是32-bit应用程序,需要指定给FD_SETSIZE一个更大的值,重新编译。

如果程序使用标准输入/输出(stdio),或者调用那些使用stdio的库函数,当打开的

文件超过256时,程序可能会出问题,这个限制是stdio的限制。当程序需要大量文件

句柄时,应该想办法保留一些小数字的文件句柄,让stdio使用它们。

Solaris 7下64-bit应用程序不再受这个stdio限制的影响。如果你的确需要超过256

个FILE *,而又不能使用Solaris 7,或者需要运行32-bit代码,考虑使用来自AT&T

的SFIO(http://www.research.att.com/sw/tools/sfio/)。

A: qaz@smth.org

检查当前设置

# ulimit -H -n

1024

# ulimit -S -n

64

#

对于Solaris,建议修改/etc/system后重启

* set hard limit on file descriptors

set rlim_fd_max=0x8000

* set soft limit on file descriptors

set rlim_fd_cur=0x8000

然后 ulimit -S -n 8192

对于Linux

echo 65536 > /proc/sys/fs/file-max

然后 ulimit -S -n 8192

对于FreeBSD

编辑/etc/sysctl.conf文件(或者sysctl -w,参看SYSCTL.CONF(5))

kern.maxfiles=65536

kern.maxfilesperproc=32768

Q: Linux下如何加大系统可以打开的文件数

A: planck.bbs@bbs.nju.edu.cn

echo <num> > /proc/sys/fs/file-max

6.5 做了setuid()这类调用的程序如何产生core dump

Q: 做了setuid()这类调用的程序不会产生core文件,可我需要调试这个程序。

--------------------------------------------------------------------------

/*

* gcc -Wall -O3 -o suidtest suidtest.c

*/

#include <stdio.h>

#include <stdlib.h>

#include <sys/types.h>

#include <sys/stat.h>

#include <unistd.h>

#include <fcntl.h>

int main ( int argc, char * argv[] )

{

int *ptr = NULL;

printf( "Current uid = %d euid = %d\\n", ( int )getuid(), ( int )geteuid() );

printf( "Result of seteuid( 500 ) = %d\\n", seteuid( 500 ) );

printf( "Current uid = %d euid = %d\\n", ( int )getuid(), ( int )geteuid() );

creat( "/tmp/scz_blah", S_IRWXU );

printf( "Result of setuid( 0 ) = %d\\n", setuid( 0 ) );

printf( "Current uid = %d euid = %d\\n", ( int )getuid(), ( int )geteuid() );

*ptr = 0;

return( EXIT_SUCCESS );

} /* end of main */

--------------------------------------------------------------------------

# gcc -Wall -O3 -o suidtest suidtest.c

# strip suidtest

# file suidtest

suidtest: ELF 32-位 MSB 可执行 SPARC 版本 1,动态链接,除去

# ls -l suidtest

-rwxr-xr-x 1 root other 4988 6月 29 21:21 suidtest*

# ./suidtest

Current uid = 0 euid = 0

Result of seteuid( 500 ) = 0

Current uid = 0 euid = 500

Result of setuid( 0 ) = 0

Current uid = 0 euid = 0

段错误

# ls -l core

core: 无此文件或目录

#

这个程序应该core dump,但是现在没有core文件产生。注意,此时suidtest仅仅是

自己调用了setuid(),并非被"chmod u+s suidtest"过。有无/etc/system内核可配

置参数改变这种行为。

A: Sun Microsystems 2001-04-11

出于安全考虑,suid程序以及调用setuid()的程序缺省情况下不产生core dump。如

果确实需要产生core dump以便进行调试,修改/etc/system文件并重启系统

* 缺省该值为0,此时禁止suid程序以及调用setuid()的程序core dump

set allow_setid_core = 1

对于Solaris 2.6,需要先打补丁105181-22或更高版本,才能使用上述技术。对于

7及其更高版本的Solaris操作系统,不需要任何补丁。

A: 小四 <scz@nsfocus.com> 2001-07-30 20:14

对于SPARC/Solaris 7来说,为了方便调试,执行coreadm -e proc-setid命令即可。

6.6 消息队列调整

Q: 在/etc/system中如何调整消息队列

A: <solaris@sean.de>

消息队列统一使用 msgsys:msginfo_ 前缀。你可以用sysdef获取一些缺省值,还可

以参看/usr/include/sys/msg.h头文件了解更多信息。此外不要忘记<<APUE>>

msgsys:msginfo_msgmap

default 100 max 2147483647 <sys/msg.h> 100

msgsys:msginfo_msgmax

default 2048 max 2147483647 <sys/msg.h> 8192 typical value 2048

msgsys:msginfo_msgmnb

default 4096 max 2147483647 <sys/msg.h> 2048 typical value 4096

msgsys:msginfo_msgmni

default 50 max 2147483647 <sys/msg.h> 50 typical value 50

msgsys:msginfo_msgssz

default 8 max 2147483647 <sys/msg.h> 8

msgsys:msginfo_msgtql

default 40 max 2147483647 <sys/msg.h> 50 typical value 40

msgsys:msginfo_msgseg

default 1024 max 32767 <sys/msg.h> 1024

 
 
 
免责声明:本文为网络用户发布,其观点仅代表作者个人观点,与本站无关,本站仅提供信息存储服务。文中陈述内容未经本站证实,其真实性、完整性、及时性本站不作任何保证或承诺,请读者仅作参考,并请自行核实相关内容。
2023年上半年GDP全球前十五强
 百态   2023-10-24
美众议院议长启动对拜登的弹劾调查
 百态   2023-09-13
上海、济南、武汉等多地出现不明坠落物
 探索   2023-09-06
印度或要将国名改为“巴拉特”
 百态   2023-09-06
男子为女友送行,买票不登机被捕
 百态   2023-08-20
手机地震预警功能怎么开?
 干货   2023-08-06
女子4年卖2套房花700多万做美容:不但没变美脸,面部还出现变形
 百态   2023-08-04
住户一楼被水淹 还冲来8头猪
 百态   2023-07-31
女子体内爬出大量瓜子状活虫
 百态   2023-07-25
地球连续35年收到神秘规律性信号,网友:不要回答!
 探索   2023-07-21
全球镓价格本周大涨27%
 探索   2023-07-09
钱都流向了那些不缺钱的人,苦都留给了能吃苦的人
 探索   2023-07-02
倩女手游刀客魅者强控制(强混乱强眩晕强睡眠)和对应控制抗性的关系
 百态   2020-08-20
美国5月9日最新疫情:美国确诊人数突破131万
 百态   2020-05-09
荷兰政府宣布将集体辞职
 干货   2020-04-30
倩女幽魂手游师徒任务情义春秋猜成语答案逍遥观:鹏程万里
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案神机营:射石饮羽
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案昆仑山:拔刀相助
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案天工阁:鬼斧神工
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案丝路古道:单枪匹马
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案镇郊荒野:与虎谋皮
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案镇郊荒野:李代桃僵
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案镇郊荒野:指鹿为马
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案金陵:小鸟依人
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案金陵:千金买邻
 干货   2019-11-12
 
推荐阅读
 
 
 
>>返回首頁<<
 
靜靜地坐在廢墟上,四周的荒凉一望無際,忽然覺得,淒涼也很美
© 2005- 王朝網路 版權所有