批量修改系统中最大进程数的相关配置并使其在线生效。

本文详细介绍了如何通过修改Greenplum数据库中各主机的limits.conf文件来增加最大进程数,解决由于进程数设置过低导致的连接问题。包括单独主机和批量操作的步骤,以及修改后的验证方法。

针对系统中进程数原本可能设置过低,导致出现could not fork new process for connection: Resource temporarilyunavailable这一问题,本文介绍了增加进程数的方法,特别是针对greenplum数据库这种有多个主机的集群的批量操作方法,整个操作过程对数据库的正常运行无影响。

 

1,查看最大进程数的命令为ulimit -u,greenplum中用gpssh可以批量查看,现在最大进程数都是1024。

[gpadmin@mdw ~]$ gpssh -f host_file -v -e 'ulimit -u'

 

[Reset ...]

[INFO] login mdw

[INFO] login sdw2

[INFO] login sdw1

[ mdw] ulimit -u

[ mdw] 1024

[sdw2] ulimit -u

[sdw2] 1024

[sdw1] ulimit -u

[sdw1] 1024

[INFO] completed successfully

 

[Cleanup...]

 

 

2,本节尝试修改单独sdw1主机上的进程数,需要修改的文件是/etc/security/limits.conf对于RedHat6.x系统还要修改/etc/security/limits.d/90-nproc.conf,可以直接用vi命令进入文本修改,此处是用sed命令来进行替换的。

[gpadmin@mdw ~]$ ssh sdw1

Last login: Sun Jun 21 13:15:55 2015 frommdw

[gpadmin@sdw1 ~]$cat /etc/security/limits.conf | grep nproc

#       - nproc - max number of processes

#@student        hard   nproc           20

#@faculty        soft   nproc           20

#@faculty        hard   nproc           50

#ftp            hard    nproc           0

* soft nproc 1024

* hard nproc 1024

[gpadmin@sdw1 ~]$ sed -i 's/nproc 1024/nproc 131072/g' /etc/security/limits.conf

sed: 无法打开临时文件/etc/security/sednH9P1U: 权限不够

--修改这两个文件需要root权限,替换时注意空格,并建议不要使用通配符,以免替换掉注释中的内容或关于root帐户的设定。

[gpadmin@sdw1 ~]$ su root

密码:

[root@sdw1 gpadmin]# sed -i 's/nproc 1024/nproc 131072/g' /etc/security/limits.conf

[root@sdw1 gpadmin]# cat /etc/security/limits.conf | grep nproc

#       - nproc - max number of processes

#@student        hard   nproc           20

#@faculty        soft   nproc           20

#@faculty        hard   nproc           50

#ftp             hard    nproc           0

* soft nproc 131072

* hard nproc 131072

[root@sdw1 gpadmin]# cat /etc/security/limits.d/90-nproc.conf | grep nproc

*         soft    nproc 1024

*         hard    nproc 1024

root      soft    nproc     unlimited

[root@sdw1 gpadmin]# sed -i 's/nproc 1024/nproc 131072/g'/etc/security/limits.d/90-nproc.conf

[root@sdw1 gpadmin]# cat /etc/security/limits.d/90-nproc.conf | grep nproc

*         soft    nproc 131072

*         hard    nproc 131072

root      soft    nproc     unlimited

[root@sdw1 gpadmin]# ulimit -u

1024

--修改后查看最大进程数是1024

[root@sdw1 gpadmin]# exit

exit

[gpadmin@sdw1 ~]$  ulimit -u

1024

--退回到gpadmin帐户查看最大进程数是1024

[gpadmin@sdw1 ~]$ su gpadmin

密码:

[gpadmin@sdw1 ~]$ulimit -u

131072

--但再登录gpadmin帐户查看最大进程数是131072,可见要使该修改生效,只要重新登入账户就行了。

 

3,在Greenplum数据库中可以用gpssh命令同时对多个主机的配置进行修改,过程与上面的大体类似。

[root@mdw gpadmin]# gpssh -f host_file          

Note: command history unsupported on thismachine ...

=> cat /etc/security/limits.conf | grep nproc

[sdw1] #        - nproc - max number of processes

[sdw1] #@student        hard   nproc           20

[sdw1] #@faculty        soft   nproc           20

[sdw1] #@faculty        hard   nproc           50

[sdw1] #ftp             hard    nproc           0

[sdw1] * soft nproc 131072

[sdw1] * hard nproc 131072

[sdw2] #        - nproc - max number of processes

[sdw2] #@student        hard   nproc           20

[sdw2] #@faculty        soft   nproc           20

[sdw2] #@faculty        hard   nproc           50

[sdw2] #ftp             hard    nproc           0

[sdw2] * soft nproc 1024

[sdw2] * hard nproc 1024

[ mdw] #        - nproc - max number of processes

[ mdw] #@student        hard   nproc           20

[ mdw] #@faculty        soft   nproc           20

[ mdw] #@faculty        hard   nproc           50

[ mdw] #ftp             hard    nproc           0

[ mdw] * soft nproc 1024

[ mdw] * hard nproc 1024

=> cat /etc/security/limits.d/90-nproc.conf | grep nproc

[sdw1] *          soft    nproc 131072

[sdw1] *          hard    nproc 131072

[sdw1] root       soft   nproc     unlimited

[sdw2] *          soft    nproc 1024

[sdw2] *          hard    nproc 1024

[sdw2] root       soft   nproc     unlimited

[ mdw] *          soft    nproc 1024

[ mdw] *          hard    nproc 1024

[ mdw] root       soft   nproc     unlimited

=> sed -i's/nproc 1024/nproc 131072/g' /etc/security/limits.conf

[sdw1]

[sdw2]

[ mdw]

=> cat /etc/security/limits.conf | grep nproc

[sdw1] #        - nproc - max number of processes

[sdw1] #@student        hard   nproc           20

[sdw1] #@faculty        soft   nproc           20

[sdw1] #@faculty        hard   nproc           50

[sdw1] #ftp             hard    nproc           0

[sdw1] * soft nproc 131072

[sdw1] * hard nproc 131072

[sdw2] #        - nproc - max number of processes

[sdw2] #@student        hard   nproc           20

[sdw2] #@faculty        soft   nproc           20

[sdw2] #@faculty        hard   nproc           50

[sdw2] #ftp             hard    nproc           0

[sdw2] * soft nproc 131072

[sdw2] * hard nproc 131072

[ mdw] #        - nproc - max number of processes

[ mdw] #@student        hard   nproc           20

[ mdw] #@faculty        soft   nproc           20

[ mdw] #@faculty        hard   nproc           50

[ mdw] #ftp             hard    nproc           0

[ mdw] * soft nproc 131072

[ mdw] * hard nproc 131072

=> sed -i's/nproc 1024/nproc 131072/g' /etc/security/limits.d/90-nproc.conf

[sdw1]

[sdw2]

[ mdw]

=> cat /etc/security/limits.d/90-nproc.conf | grep nproc

[sdw1] *          soft    nproc 131072

[sdw1] *          hard    nproc 131072

[sdw1] root       soft   nproc     unlimited

[sdw2] *          soft    nproc 131072

[sdw2] *          hard    nproc 131072

[sdw2] root       soft   nproc     unlimited

[ mdw] *          soft    nproc 131072

[ mdw] *          hard    nproc 131072

[ mdw] root       soft   nproc     unlimited

=> quit

 

[root@mdw gpadmin]#su gpadmin

[gpadmin@mdw ~]$gpssh -f host_file -v -e 'ulimit -u'

 

[Reset ...]

[INFO] login sdw1

[INFO] login sdw2

[INFO] login mdw

[sdw1] ulimit -u

[sdw1] 131072

[sdw2] ulimit -u

[sdw2] 131072

[ mdw] ulimit -u

[ mdw] 131072

[INFO] completed successfully

 

[Cleanup...]

--所有主机上的都批量修改完毕。

 

4,最大进程数设置过低时的情况。当设置最大进程数为20后,对root帐户没有影响,正在连接使用中的普通帐户也可以正常使用,但无法登录其他帐户。

[root@sdw1 gpadmin]# sed -i 's/nproc 131072/nproc 20/g' /etc/security/limits.conf

[root@sdw1 gpadmin]# sed -i 's/nproc 131072/nproc 20/g'/etc/security/limits.d/90-nproc.conf

[root@sdw1 gpadmin]# su gpadmin

su: 无法设置用户ID: 资源暂时不可用

--无法登录gpadmin。

[root@sdw1 gpadmin]# exit

exit

--退回到gpadmin可以使用。

[gpadmin@sdw1 ~]$ulimit -u

131072

[gpadmin@sdw1 ~]$ ssh mdw

Last login: Sun Jun 21 13:44:11 2015 fromsdw1

[gpadmin@mdw ~]$ ssh sdw1

Write failed: Broken pipe

su: 无法设置用户ID: 资源暂时不可用

--但登出去后就回不来了。

 

5,原本以为需要切换登录才会让以上的修改生效,便写了一个让所有主机ssh切换登录的简单脚本,该脚本运行需安装expect的rpm包,有兴趣的可以看一下。

[gpadmin@mdw ~]$cat expect_ssh

#!/usr/bin/expect

set timeout 1   #每1秒切换登录一次

foreach ip {    #列入要切换的主机名

sdw1

sdw2

} {

spawn ssh $ip

expect

spawn ssh mdw

expect

}

puts "finished\r"

exit

 

[gpadmin@mdw ~]$ expect expect_ssh

spawn ssh sdw1

Last login: Sun Jun 21 15:27:27 2015 frommdw

[gpadmin@sdw1 ~]$ spawn ssh mdw

Last login: Sun Jun 21 15:27:27 2015 frommdw

[gpadmin@mdw ~]$ spawn ssh sdw2

Last login: Sun Jun 21 15:27:27 2015 frommdw

[gpadmin@sdw2 ~]$ spawn ssh mdw

Last login: Sun Jun 21 15:29:11 2015 frommdw

[gpadmin@mdw ~]$ finished

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值