Tuxedo域连接错误引出的netstat不同平台参数的区别

最近测试同事有一个需求,搭建一套Tuxedo域,连接网关,通过其和其他域交互,搭建过程中配置正确,但域连接报错,模拟过程如下,假设本地域名称为LOCALDOM,网关域名称为GWDOM,主机操作系统是Solaris。

从LOCALDOM本地域执行pd发现无连接的域,connect显示无法连接网关,

使用co强制连接网关域,报错。网关执行pd,显示无法连接LOCALDOM,

本地域重启tmboot,ULOG报错,

找不着一个GWADMIN服务,但实际应该找的不是这服务,因为我们尝试配置这个服务,

重启应用,和预期一致,报了找不着这个可执行文件,

重新检索ULOG日志,提示连接本地域7777端口,Network error,

LIBGWT_CAT-1243错误域连接IP、端口有问题,

本机执行netstat -anp | grep 7777,检索7777端口是否被占用,为空,原因是什么?

其实这块有经验的朋友,应该可以知道了,可能了解判断的方向了。

Solaris下的netstat指令,和Linux下的netstat指令,若干参数含义有一些区别,Linux下netstat的-p参数含义,

-p, --programs             display PID/Program name for sockets

Solaris下netstat的-p参数含义,

-p    Displays the net to media mapping table. For IPv4, the address  resolution  table  is displayed. See arp(1M). For IPv6, the neighbor cache is displayed.

这我们用netstat -anp实际需要看7777端口,目前是否被占用,可Solaris下未按照语义返回占用的进程,我们看下不用-p,Solaris执行返回,

说明7777端口已被占用,处于监听状态,进一步说明是由于本地域7777端口,被占用因而导致GWADM无法连接本地IP的7777端口,进而无法和网关建立连接。

解决方法就是将7777改为空闲端口,例如7000,需要改一下本机,以及网关的domain配置文件,此时本机执行pd,显示连接了网关,connect提示和网关的连接已打开,

网关执行pd,显示连接了LOCALDOM,connect提示和LOCALDOM连接已打开,

总结:

  1. Tuxedo的ULOG日志,大部分系统错误,可以有一些提示,虽然可能错误提示信息简略,但往往可以指明方向。
  2. netstat指令很有用,可以帮助我们找出,端口是否被占用、以及什么进程占用的,可是Solaris和Linux下netstat的参数略有不同,使用man可以检索详细介绍,不一定要记住所有参数,但需要知道如何检索。判断问题的方向和方法是我需要提高的地方,根据错误提示,是否可以快速定位问题,是否可以了解具体指令、工具的一些区别和用法,快速解决问题,例如文中提到了ULOG,记录了网络错误,无法连接本地IP和端口,直觉上应该首先检索端口,看下是否被占用,用netstat指令,根据当前是Solaris,是否知道-p参数不能用,如果上述两步判断正确,发现问题和解决问题,就易如反掌了。