“修理不好用的WebSphere,有时候要看运气.”这个是我接触过很过有历史的运维工程师经常说的一个梗;研发人员也经常说这个程序在我这里运行好好的,怎么到你那就不灵了?问题是你的,你自己解决.

声明一下:这篇日志不是说明什么责任、扯皮问题,而是运维体系中的一种标准和规范.

这不最近部门内接手了一个移交的运维项目,里面涉及到各种IBM配套产品,使用的操作系统平台是Windows Server 2008 R2.

而IBM的产品通常情况下都会配套Java开发,这使得建立在操作系统之上是IBM一套自有的产品平台,IBM仅仅是使用了Windows的这个平台帮他管理硬件和用户交互而已,所以出现的问题通过查阅产品日志一般都能解决,但是总感觉的有点乱是不?毕竟这一套产品如果没有安装部署文档,需要费些心思先把这个环境了解清楚,而且很多时候是在帮助他人解决相关问题,你完全没有时间去了解这个环境当时是怎么搭建起来的,问题的解决过程或许就是这样变得没有头绪了.

而对于部署人员为了达到高效快速,多会使用绿色版的产品部署,这就会带来一个现象,IBM的很多产品都是可以通过命令行独立运行(复制即可用),此时服务器中会搞好多个cmd的黑框停在服务器上,再有一些可能连日志打印都直接输出到这个黑框里,导致黑框消失日志不知道去哪取.

但是常规情况下IBM安装产品通常会将启动过程变成一个服务,这个好处就是任何问题都可在事件查看器中得到追溯.

而今天遇到的问题恰巧和WebSphere有关,运维人员说怎么启动都起不起来,相应的问题是cmd黑框下启动不了日志也无法输出,不过这个机器下面有当时安装遗留下来的一个WebSphere的服务,接手后我尝试了通过服务启动,发现可以短暂启动后有自动停止运行.

Figure 1通过了解事件,定位时间,找到了这条错误信息

Could not determine the process id of the java process. Changing the IBMWAS70Service - WIN-RKALU0SGIQUNode01 service status to the "stopped" state. To prevent this error, try recreating this service with the -logRoot parameter. The value of the logRoot parameter should be the directory in which the server's .pid file is created.

这个看起来像是无法创建进程文件pid而抛出来的问题,解决办法是使用-logRoot参数查看这个pid文件到底需要被放置在哪里?不过小弟才疏学浅,对WebSphere了解不多,思前想后了一下还是请来Sysinternals的帮忙,用自己熟悉的工具解决问题会比较妥当,而这个软件开发者有一款对Windows进程进行实时监控的产品Procmon.

打开Procmon开始监控之后,再次运行启动服务,通过历史回溯按钮Ctrl+t,发现了挂在services进程下面的was服务,点开可以看到图标样式不实诚,说明该进程已经在我当前时间点前结束掉了.

Figure 2通过查看lifetime,进程名,启动命令行信息确定我们需要找的进程,然后点下IncludeSubtree对这个进程下所有的子进程一起过滤出来

再进一步过滤结果为PATH NOT FOUND的反馈,找到了进程消失的原因.

Figure 3这个pid进程原来是要创建在这个”D:\Program Files\IBM\WebSphere\AppServer\profiles\AppSrv01\logs\server1\”目录下面,而返回值是路径不可得.

好了,现在知道问题了,就去看看这个路径是否存在,进过检查发现WebSphere的概要下面没有这个AppSrv01这个文件夹,那就不可能有其下的logs文件夹了,手工创建一下这两个文件夹,然后再继续找错误,还记得Figure 2图示上面的子进程两个呢,一个cmd,一个java他们都最终变成了灰色.

Figure 4变灰的cmd进程历史遗迹有对AppSrv01\logs目录的请求,现在已经建立了,应该不会有问题了,我们在接的看java进程的

Figure 5Java进程很有意思,他居然需要访问这个AppSrv01概要下的bin目录,并且里面还有配置脚本

这个配置脚本在哪里可以获取到?继续在WebSphere的概要文件夹下寻找线索,发现有一个AppSrv02\bin文件夹下面有我们所需要的脚本文件,处于方便,看看有无副作用,就把Appsrv02下面的bin全部复制到了Appsrv01下面,再起启动,was服务正常了!

真是谢天谢地,不好玩的WebSphere是怎么就这么难启动的呢?想一下这个AppSrv01就莫名其妙的消失了?是不是和部署的时候默认概要冲突?原来的开发环境使用的是AppSrv02而移植到这里一个全新安装的环境下新的默认概要是01,为了部署新的概要02就把01重命名成了02,但是安装服务还是用01来操作的.就现在的表现来看,有些问题可能存在人工介入实现快速部署但有不能彻底铲除原有遗留信息导致的种种怪异问题.

Figure 6可以看到系统内已经没有原先的9080\9060这两个初始化自带概要AppSrv01的业务和管理端口了

当人违背了机器的执行条件的时候就会给运维带来诸多不便,那么对于这个机器上面跑了好多黑框,需要手工启动was服务的问题我们可以通过将其转变成系统服务来处理,这样有了Windows事件作为统一问题寻找点,规范了运维流程,解放双手.

对于这个例子IBM也深知WAS已服务启动的话需要人为配置诸多参数等很多人为因素导致的错误,为了规范was手工启动变服务,IBM提供了而外的配置工具,没有跟先有发布版本一同流出,需要的运维同学可以在这里获取到: http://www-01.ibm.com/support/docview.wss?uid=swg21397335 ,支持WebSphere6.0~8.5的所有发行版.

Figure 7通过使用WASServiceCmd 工具快速安全的设置was服务启动项,最下面禁用的那个是原来随系统安装进来的默认概要

-=EOB=-

为什么WebSphere好好的,他就不干活了?的更多相关文章

  1. WebSphere Application Server诊断和调优

    近段时间,我们项目中用到的WebSphere应用服务器(WAS),但在客户的production环境下极不稳定,经常宕机.给客户造成非常不好的影响,同时,也给项目组很大压力.为此,我们花了近一个月时间 ...

  2. osgi应用使用桥接的方式打成war包部署在websphere上时遇到的与cxf相关的问题

    原来我们的程序都是基于Equinox架构的,可是后面由于要实现打成war包在中间件中部署的需求,使用了eclipse官方提供的桥接方式实现. 桥接的部分后面有时间了我专门写一个文章来说,不明确的临时请 ...

  3. webSphere内存溢出

    有一个做了很长时间的项目,是用websphere做生产环境的,可是一旦加载的项目过多,webSphere就很傲娇的内存溢出,这是一个折腾了公司里某个前辈很久很久的问题,因为是测试版,所以各种官方文档说 ...

  4. MyEclipse 2016 CI 1支持远程WebSphere连接器

    MyEclipse 2016 CI 1有很多Web开发者会喜欢的新功能,包括Live Preview,带有Map支持和hot-swap功能的JavaScript调试.另外还新增支持远程WebSpher ...

  5. 帆软报表FineReport中数据连接之Websphere配置JNDI连接

    以oracle9i数据源制作的模板jndi.cpt为例来说明如何在FineReport中的Websphere配置JNDI连接.由于常用服务器的JNDI驱动过大,帆软报表FineReport中没有自带, ...

  6. WebSphere MQ Explorer的sqlserver的jdbc

    一.IBM WebSphere MQ7.0的jdbc支持数据库有: DB2 Informix Informix_With_Date_Format Microsoft_SQL_Server Oracle ...

  7. IBM WebSphere MQ的oracle的jdbc

    一.IBM WebSphere MQ7.0的jdbc支持数据库有: DB2 Informix Informix_With_Date_Format Microsoft_SQL_Server Oracle ...

  8. websphere性能调优之dump命令

    websphere性能调优之dump命令 基于WebSphere 构建的企业应用,时常会出现性能问题,在严重的情况下还会提示出内存溢出,这是一件很让人恼怒的事情.在WebSphere Applicat ...

  9. 还是要好好研究开源的php

    听说facebook是php写的,还是要静下心来好好研究一番的嘛,踏踏实实点点滴滴的做起来!加油

随机推荐

  1. 关于C#的微信开发的入门记录二

    在准备了空间和域名之后,现在来讲讲我们接下来的编码过程: 今天就先到这里了!没有服务器那些的请看我之前的博客:http://www.cnblogs.com/zhankui/p/4515905.html ...

  2. c#中abstract与virtua、overridel的用法

    1.abstract 抽象方法 ,virtual 虚方法 ,override 重载函数 父类A.m() 子类B.m()   abstract的方法父类可以不实现,让子类去重写(重写=overwrite ...

  3. 新版startssl 免费SSL证书申请 (实测 笔记 https http2 必要条件)

    简单说明: 目前多个大型网站都实现全站HTTPS,而SSL证书是实现HTTPS的必要条件之一. StartSSL是StartCom公司旗下的.提供免费SSL证书服务并且被主流浏览器支持的免费SSL.包 ...

  4. Androidannotations框架

    Java注解:    注解(Annotation),也叫元数据.一种代码级别的说明.它是JDK1.5及以后版本引入的一个特性,与类.接口.枚举是在同一个层次.它可以声明在包.类.字段.方法.局部变量. ...

  5. Ubuntu中的快捷键

    Ubuntu中的许多操作在终端(Terminal)中十分的快捷,记住一些快捷键的操作更得心应手. 在Ubuntu中打开终端的快捷键是Ctrl+Alt+T.其他的一些常用的快捷键如下: 快捷键 功能 T ...

  6. ThinkPHP5 助手函数

    对于ThinkPHP5.0以前的版本,助手函数全部是单字母函数,但到ThinkPHP5之后,使用如下函数来代替单字母函数: 最常用: /** * 实例化Model * @param string $n ...

  7. WebServer+ADO+百万数据查询

    很简单的demo,查询速度快,易理解,废话不说  上demo 看完就明白了 源码地址:http://files.cnblogs.com/files/SpadeA/WebDemo.zip 这是关于Web ...

  8. adb devices出现no permissions

    在做Android开发的时候,有些设备插入USB调试线,无法调试,出现以下错误: joey 09:58 $ adb devices List of devices attached 20080411 ...

  9. '-[__NSCFString stringFromMD5]: unrecognized selector sent to instance 0x14d89a50'

    类型:ios 问题描述: 导入百度地图 然后在模拟器运行可以,真机测试不行: 报错: '-[__NSCFString stringFromMD5]: unrecognized selector sen ...

  10. ENode框架Conference案例分析系列之 - 架构设计

    Conference架构概述 先贴一下Conference案例的在线地址,UI因为完全拿了微软的实现,所以都是英文的,以后我有空再改为中文的. Conference后台会议管理:http://www. ...