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

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

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

2,找出无反应的网络连接
$netstat-Aa|grepdsr
f10002000204d398tcp400*.dsrpc*.*LISTEN
f1000200001e9398tcp400blade25.dsrpc10.207.42.24.tlisrESTABLISHED
f100020001f74398tcp400blade25.dsrpc10.207.42.24.oraclESTABLISHED
如状态为close_wait,则表示此为死进程对应的网络连接


3,确认对应进程(rmsock需要root权限):
rmsockf1000d0005b4b390tcpcb
output:Thesocketf1000d0005b4b390isbeingheldbyproccess332008(inetd).

4,kill进程
kill-9332008

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


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

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

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

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

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


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

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

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

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

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