ITPub博客

首页 > Linux操作系统 > Linux操作系统 > hp_unix B11.31进程数过多

hp_unix B11.31进程数过多

Linux操作系统 作者:zr2095 时间:2016-03-03 17:14:39 0 删除 编辑
Unix和kctune-maxuprc/nproc (2010-09-19 16:15)
分类: HP Unix


在HP Unix有两个可以限制系统最大进程数的内核参数:maxuprc(max user processes)和nproc(the number of system processes);maxuprc只对普通用户生效,对root用户不生效,只有nproc才对root生效。

以下的这段日志是因为普通用户的maxuprc开的太大,即开成了maxuprc + 5 = nproc (最大值)而且应用程序发生了大量的僵尸进程(defunct)并达到了maxuprc的值引起的。基本所有的系统命令不能执行,root用户也不能远程登录。


GenericSysName [HP Release B.11.31] (see /etc/issue)
Console Login: root
Please wait...checking for disk quotas
could not execute quota command

- - - - - - - - - - - - Live Console - - - - - - - - - - - -
/etc/profile[30]: The fork function failed. Too many processes already exist.
/etc/profile[47]: The fork function failed. Too many processes already exist.

syslog中有proc table is full 的报错,这说明nproc也用满了。


发生这种情况之后,假如还有一个已登录的终端的话,可以用exec kill <proc id>来尝试杀某个进程(猜吧),如果成功,ps就可以执行了。然后再做响应处理。

我当前的系统nproc默认值是4200,maxuprc的默认值是256。maxuprc比较容易满,可以适当加大。

# kctune |grep nproc
nproc 4200 Default Immed
# uname -a
HP-UX hpux B.11.31 U 9000/800 1071694491 unlimited-user license

加大方法:

kctune maxuprc+=1024 (增加1024)

nproc大最大值我个人认为跟系统配置有关系,但肯定不能超过65535。

在HP-UX hpux B.11.31 U 9000/800 1071694491上调大maxuprc和nproc,不必重启就可以工作。

# kctune nproc+=4000
==> Update the automatic 'backup' configuration first? y
* The automatic 'backup' configuration has been updated.
* Future operations will update the backup without prompting.
* The requested changes have been applied to the currently
running configuration.
Tunable Value Expression Changes
nproc (before) 4200 Default Immed
(now) 8200 8200

用下句来测试建立6000个进程:

i=1; while :; do nohup sleep 200 & ((i=$i + 1)); echo Now No is $i;if [ $i -eq 6000 ]; then echo === Now No is $i ====; break;fi; done

我的大致理解是这样。在实际环境中还需要具体测试。

来自 “ ITPUB博客 ” ,链接:http://blog.itpub.net/30208428/viewspace-2028379/,如需转载,请注明出处,否则将追究法律责任。

上一篇: scan ip的手动切换
请登录后发表评论 登录
全部评论

注册时间:2015-04-15

  • 博文量
    163
  • 访问量
    419957