tuxedo远程客户端无法访问类故障(持续更新ing)
在处理这个问题前,首先需要区分下Tuxedo的本地客户端和远程客户端(其实还有JOLT客户端,这里暂且不去管他)。
Tuxedo的本地客户端与Tuxedo服务器之间是通过系统的IPC资源进行通信,而远程客户端则是通过TCP/IP与服务器进行通信。本地客户端与远程客户端在编程上没有区别,区别是在编译客户端源程序的时候,如果你使用buildclient -f client.c -o client,那么编译出来的就是本地客户端,buildclient -f client.c -o client -w编译出来的就是远程客户端。
当发生远程客户端不能调用Tuxedo服务端程序的时候,你需要做以下确认和问题排查工作:
1、客户端与服务端之间网络是否通畅
从客户端先ping服务端 IP,再telnet IP:PORT,当然首先telnet端口得打开。
2、查看服务端WSL进程是否正常
WSL是服务端负责监听远程客户端请求的进程,若WSL配置不正确或未能正常启动,那么客户端的请求当然是不会被服务端受理的。
ps -ef|grep WSL看下,如果WSL在,并且正在很认真的监听端口,那么下面的你可以不用看了,请直接第3点;若是不是,那么继续。
WSL是在配置文件的*SERVERS节配置的,
配置示例:WSL SRVGRP=GROUP1 SRVID=10 CLOPT="-A -- -n //10.190.101.2:3200 -m 2 -M 5 -x 10"。
需要注意,-m表示该WSL下负责启动的初始WSH个数,该值要是设置的比较大的话,MAXACCESSERS也是要调大的,否则WSH起不来。还就是这里WSL监听的IP:PORT,端口要确定没有被其他进程所占用。
3、MAXWSCLIENTS是否设置
MAXWSCLIENTS是在配置文件的*MACHINES节设置的,若没有设置该参数,那么客户端也无法访问。
设置示例:MAXWSCLIENTS=10
4、WSNADDR是否设置正确
环境变量WSNADDR是需要者在客户端进行设置的,用来告诉客户端去哪里找服务端。
设置示例:以UNIX环境为例,在环境变量文件中添加WSNADDR=//10.190.101.2:3200;export WSNADDR,设置完成后,运行该环境变量文件,env | grep WSNADDR验证环境变量是否生效。这里要注意的是,WSNADDR的值必须与WSL的值一样。
5、服务端是否正常
直接tmadmin进去,psr、psc一下,查看客户端所调用的服务是否运行正常。
故障示例1
ULOG中错误信息如下:
152344.jtslfcs!?proc.25731.3086538432.0: 07-19-2010: Tuxedo Version 9.1, 32-bit 152344.jtslfcs!?proc.25731.3086538432.0: LIBWSC_CAT:1052: ERROR: Environment variable WSNADDR not set 152344.jtslfcs!?proc.25731.3086538432.0: LIBWSC_CAT:1027: ERROR: Unable to connect to WSH 152344.jtslfcs!?proc.25731.3086538432.0: LIBWSC_CAT:1020: ERROR: Unable to obtain authentication level
故障原因分析:
当ULOG中ERROR信息有很多的时候,我们一般重视第一条,后续错误基本上都是由于第一条引起的连发性错误,这里的故障原因很明显了,是客户端的环境变量WSNADDR没有设置,导致远程客户端调用服务失败
故障示例2
ULOG中错误信息如下:
161929.jtslfcs!?proc.28657.3086034624.0: 07-19-2010: Tuxedo Version 9.1, 32-bit 161929.jtslfcs!?proc.28657.3086034624.0: LIBWSC_CAT:1055: ERROR: Unable to establish WSL connection 161929.jtslfcs!?proc.28657.3086034624.0: LIBWSC_CAT:1027: ERROR: Unable to connect to WSH 161929.jtslfcs!?proc.28657.3086034624.0: LIBWSC_CAT:1020: ERROR: Unable to obtain authentication level
故障原因分析:
ULOG中首先报无法连接到WSL,那么问题原因大部分是在WSL上了,那么首先你需要检查下WSL是否正常,其次就是服务端的WSL与客户端的WSADDR的IP:PORT是否一致。
在处理这个问题前,首先需要区分下Tuxedo的本地客户端和远程客户端(其实还有JOLT客户端,这里暂且不去管他)。
Tuxedo的本地客户端与Tuxedo服务器之间是通过系统的IPC资源进行通信,而远程客户端则是通过TCP/IP与服务器进行通信。本地客户端与远程客户端在编程上没有区别,区别是在编译客户端源程序的时候,如果你使用buildclient -f client.c -o client,那么编译出来的就是本地客户端,buildclient -f client.c -o client -w编译出来的就是远程客户端。
当发生远程客户端不能调用Tuxedo服务端程序的时候,你需要做以下确认和问题排查工作:
1、客户端与服务端之间网络是否通畅
从客户端先ping服务端 IP,再telnet IP:PORT,当然首先telnet端口得打开。
2、查看服务端WSL进程是否正常
WSL是服务端负责监听远程客户端请求的进程,若WSL配置不正确或未能正常启动,那么客户端的请求当然是不会被服务端受理的。
ps -ef|grep WSL看下,如果WSL在,并且正在很认真的监听端口,那么下面的你可以不用看了,请直接第3点;若是不是,那么继续。
WSL是在配置文件的*SERVERS节配置的,
配置示例:WSL SRVGRP=GROUP1 SRVID=10 CLOPT="-A -- -n //10.190.101.2:3200 -m 2 -M 5 -x 10"。
需要注意,-m表示该WSL下负责启动的初始WSH个数,该值要是设置的比较大的话,MAXACCESSERS也是要调大的,否则WSH起不来。还就是这里WSL监听的IP:PORT,端口要确定没有被其他进程所占用。
3、MAXWSCLIENTS是否设置
MAXWSCLIENTS是在配置文件的*MACHINES节设置的,若没有设置该参数,那么客户端也无法访问。
设置示例:MAXWSCLIENTS=10
4、WSNADDR是否设置正确
环境变量WSNADDR是需要者在客户端进行设置的,用来告诉客户端去哪里找服务端。
设置示例:以UNIX环境为例,在环境变量文件中添加WSNADDR=//10.190.101.2:3200;export WSNADDR,设置完成后,运行该环境变量文件,env | grep WSNADDR验证环境变量是否生效。这里要注意的是,WSNADDR的值必须与WSL的值一样。
5、服务端是否正常
直接tmadmin进去,psr、psc一下,查看客户端所调用的服务是否运行正常。
故障示例1
ULOG中错误信息如下:
152344.jtslfcs!?proc.25731.3086538432.0: 07-19-2010: Tuxedo Version 9.1, 32-bit 152344.jtslfcs!?proc.25731.3086538432.0: LIBWSC_CAT:1052: ERROR: Environment variable WSNADDR not set 152344.jtslfcs!?proc.25731.3086538432.0: LIBWSC_CAT:1027: ERROR: Unable to connect to WSH 152344.jtslfcs!?proc.25731.3086538432.0: LIBWSC_CAT:1020: ERROR: Unable to obtain authentication level
故障原因分析:
当ULOG中ERROR信息有很多的时候,我们一般重视第一条,后续错误基本上都是由于第一条引起的连发性错误,这里的故障原因很明显了,是客户端的环境变量WSNADDR没有设置,导致远程客户端调用服务失败
故障示例2
ULOG中错误信息如下:
161929.jtslfcs!?proc.28657.3086034624.0: 07-19-2010: Tuxedo Version 9.1, 32-bit 161929.jtslfcs!?proc.28657.3086034624.0: LIBWSC_CAT:1055: ERROR: Unable to establish WSL connection 161929.jtslfcs!?proc.28657.3086034624.0: LIBWSC_CAT:1027: ERROR: Unable to connect to WSH 161929.jtslfcs!?proc.28657.3086034624.0: LIBWSC_CAT:1020: ERROR: Unable to obtain authentication level
故障原因分析:
ULOG中首先报无法连接到WSL,那么问题原因大部分是在WSL上了,那么首先你需要检查下WSL是否正常,其次就是服务端的WSL与客户端的WSADDR的IP:PORT是否一致。