DataStage重启

DataStage在正常运行时候有以下两个主要的进程:


1.dsrpcd(DS的主进程)

$ps -ef | grep dsrpcd

root 1602486       1   0 09:42:17 pts/5 0:00 /app/dsadm/Ascential/DataStage/DSEngine/bin/dsrpcd


2.JobMonApp(jobmonitor的进程)

$ps -ef | grep JobMon

root 668620       1   0 09:42:22 pts/5 0:02 /app/dsadm/Ascential/DataStage/PXEngine/java/jre/bin/java -classpath /app/dsadm/Ascential/DataStage/PXEngine/java/JobMonApp.jar:/app/dsadm/Ascential/DataStage/PXEngine/java/xerces/xercesImpl.jar:/app/dsadm/Ascential/DataStage/PXEngine/java/xerces/xmlParserAPIs.jar JobMonApp 13400 13401



在需要重启DS的时候,需保证当前没有任何用户连接到DS上,

1,关闭用户连接

用netstat -a | grep ds命令可查看当前连接到ds上的用户,如:

tcp4       0      0 *.dsrpc                *.*                    LISTEN
tcp4       0      0 P05_EDW_ETL1.dsrpc     10.202.1.67.rusb-sys   ESTABLISHED
tcp4       0      0 P05_EDW_ETL1.dsrpc     10.202.1.67.xtrms      ESTABLISHED
tcp4       0      0 P05_EDW_ETL1.dsrpc     P05_EDW_ETL1.60218     CLOSE_WAIT
tcp4       0      0 P05_EDW_ETL1.60218     P05_EDW_ETL1.dsrpc     FIN_WAIT_2

再用ps -ef | grep dsapi命令查看连接的进程,如:

dsadm 3289402 1450818   0 10:05:25 pts/5 0:00 grep dsapi 
   dsadm 791408 2630360   0 09:43:47      - 0:01 dsapi_slave 7 6 0 
   dsadm 1237846 1266584   0 09:45:49      - 0:00 dsapi_slave 7 6 0

重启ds时候需要kill掉这些进程,

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

执行之后再用ps -ef | grep dsapi 和netstat -a | grep ds查看,如果当前没有用户连接,才可以重启.

如果在没有断开所有用户与ds的连接就重启ds,那么ds的主进程dsrpcd将不能起来.

这样的话,那些用户的连接将成为死进程,需等待系统释放这些死进程之后才可以再次重启.

甚至有可能需要重启操作系统...

 

2,关闭

cd /p17/dssrv/Ascential/DataStage/DSEngine/bin
uv -admin -stop

3,开启

cd /p17/dssrv/Ascential/DataStage/DSEngine/bin
uv -admin -start



如果重启时没有关闭用户连接怎么办?

在重启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

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值