DataStage 重启(续)

来源:互联网 发布:php留言板框架 编辑:程序博客网 时间:2024/05/10 17:41

 

 

     在重启DS时,不少人肯定会说,一定要在重启之前确认没有人连接DS了。但有时会忘的。虽然说,等一些时间,系统可能会释放死进程,但也有可能,不会。而重启服务器,对于生产系统,可不是那么容易,想重启就能重启的。

     于下,就是我通宵一晚的成果。

 

1,确认dsrpcd不能启动的原因:
bin/dsrpcd -d9 > /tmp/dsrpcd.log 2>&1 &
日志信息如下:
RPCPID=1601624 - 03:34:16 - uvrpc_debugflag=9 (Debugging level)
RPCPID=1601624 - 03:34:16 - In rpc_init()
RPCPID=1601624 - 03:34:16 - bind bombed errno=67
RPCPID=1601624 - 03:34:16 - listen failed
联系之前知识,如在用户没有登陆时,就重启ds,会导致dsrpcd无法启动。于是确认是因为某一端口被占用。

 

2,找出无反应的网络连接
$ netstat -Aa | grep dsr
f10002000204d398 tcp4       0      0  *.dsrpc            *.*                LISTEN
f1000200001e9398 tcp4       0      0  blade25.dsrpc      10.207.42.24.tlisr ESTABLISHED
f100020001f74398 tcp4       0      0  blade25.dsrpc      10.207.42.24.oracl ESTABLISHED
如状态为close_wait,则 表示此为死进程对应的网络连接


3,确认对应进程(rmsock需要root权限):
rmsock f1000d0005b4b390 tcpcb
output: The socket f1000d0005b4b390 is being held by proccess 332008 (inetd).

 

4,kill进程
kill -9 332008

 

总结:此方法可以省去重启这一步骤。但rmsock需要有root权限,生产环境我们不见得能有的。


--add------------------------------------------------------------------------------------------------------------------------------------------------

 今天在测试环境 ,执行了uv -admin -start 无法启动dsrpcd,

之后,执行了下 uv -admin -stop , 再 uvregen ,再 uv -admin -start

dsrpcd就启动好了,也不知道是不是真的就是这个步骤搞好的,,,下次生产有问题,这样试下吧。

------------------------------------------------------------------------------------------------------------------------------2011-11-18---------


--add------------------------------------------------------------------------------------------------------------------------------------------------

 今天发现,如果DS服务器长时间没有重启,会残留很多死进程,会导致“Project is locked",

 可如下执行,而对不用重启DS。

ps -ef | grep dsapi | awk '{print "kill "$2}' | sh

------------------------------------------------------------------------------------------------------------------------------2011-11-19---------

原创粉丝点击