为什么WebSphere好好的,他就不干活了?
“修理不好用的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好好的,他就不干活了?的更多相关文章
- WebSphere Application Server诊断和调优
近段时间,我们项目中用到的WebSphere应用服务器(WAS),但在客户的production环境下极不稳定,经常宕机.给客户造成非常不好的影响,同时,也给项目组很大压力.为此,我们花了近一个月时间 ...
- osgi应用使用桥接的方式打成war包部署在websphere上时遇到的与cxf相关的问题
原来我们的程序都是基于Equinox架构的,可是后面由于要实现打成war包在中间件中部署的需求,使用了eclipse官方提供的桥接方式实现. 桥接的部分后面有时间了我专门写一个文章来说,不明确的临时请 ...
- webSphere内存溢出
有一个做了很长时间的项目,是用websphere做生产环境的,可是一旦加载的项目过多,webSphere就很傲娇的内存溢出,这是一个折腾了公司里某个前辈很久很久的问题,因为是测试版,所以各种官方文档说 ...
- MyEclipse 2016 CI 1支持远程WebSphere连接器
MyEclipse 2016 CI 1有很多Web开发者会喜欢的新功能,包括Live Preview,带有Map支持和hot-swap功能的JavaScript调试.另外还新增支持远程WebSpher ...
- 帆软报表FineReport中数据连接之Websphere配置JNDI连接
以oracle9i数据源制作的模板jndi.cpt为例来说明如何在FineReport中的Websphere配置JNDI连接.由于常用服务器的JNDI驱动过大,帆软报表FineReport中没有自带, ...
- WebSphere MQ Explorer的sqlserver的jdbc
一.IBM WebSphere MQ7.0的jdbc支持数据库有: DB2 Informix Informix_With_Date_Format Microsoft_SQL_Server Oracle ...
- IBM WebSphere MQ的oracle的jdbc
一.IBM WebSphere MQ7.0的jdbc支持数据库有: DB2 Informix Informix_With_Date_Format Microsoft_SQL_Server Oracle ...
- websphere性能调优之dump命令
websphere性能调优之dump命令 基于WebSphere 构建的企业应用,时常会出现性能问题,在严重的情况下还会提示出内存溢出,这是一件很让人恼怒的事情.在WebSphere Applicat ...
- 还是要好好研究开源的php
听说facebook是php写的,还是要静下心来好好研究一番的嘛,踏踏实实点点滴滴的做起来!加油
随机推荐
- 模拟--poj1835宇航员的故事
这道题委实无语了,刚开始以为是很一般的方位模拟题,懒得看样例直接写的代码,然后敲了好几个switch结果样例居然没出来.. 仔细分析了样例之后才发现原来随着宇航员方位的改变他的左手方向以及头顶方向是跟 ...
- 【hihoCoder】1121:二分图一·二分图判定
题目 http://hihocoder.com/problemset/problem/1121 无向图上有N个点,两两之间可以有连线,共有M条连线. 如果对所有点进行涂色(白/黑),判定是否存 ...
- Xamarin的不归路-使用Gorilla Player实时预览XAML
搞了一天,才安装好,记录一下遇到的坑,为大家节约些时间. 一.下载软件 软件下载地址:http://gorillaplayer.com/ 没有FQ前用360极速浏览器和迅雷下载了好多次都失败了.用了蓝 ...
- 【http代理报文】通过发包实现代理请求网页内容
工作中,我们难免需要通过TCP/IP协议发送报文来直接请求网页内容(比如爬虫工具),有同学问如何通过HTTP代理来请求网页,其实我们只需要把报文稍稍修改下,发送给代理服务器即可实现. 基础不过关的朋友 ...
- Javascript初学篇章_8(事件)
事件 HTML 事件是发生在 HTML 元素上的事情.例如用户点击按钮时,点击也是一个事件.事件可以用于处理表单验证,用户输入,用户行为及浏览器动作,如: 页面加载时触发事件 页面关闭时触发事件 用户 ...
- java接口中定义成员变量
//抽象类中可以定义如下成员变量:public abstract class People { public String name; public int age; public abstract ...
- Hadoop学习笔记—2.不怕故障的海量存储:HDFS基础入门
一.HDFS出现的背景 随着社会的进步,需要处理数据量越来越多,在一个操作系统管辖的范围存不下了,那么就分配到更多的操作系统管理的磁盘中,但是却不方便管理和维护—>因此,迫切需要一种系统来管理多 ...
- mysql定义和调用存储过程
/*定义delimiter为 // */ delimiter // CREATE procedure sp_add3(a int, b int,out c int) begin set c=a+ b; ...
- 在Visual Studio上开发Node.js程序
[题外话] 最近准备用Node.js做些东西,于是找找看能否有Visual Studio上的插件以方便开发.结果还真找到了一个,来自微软的Node.js Tools for Visual Studio ...
- 《Entity Framework 6 Recipes》中文翻译系列 (22) -----第五章 加载实体和导航属性之延迟加载
翻译的初衷以及为什么选择<Entity Framework 6 Recipes>来学习,请看本系列开篇 第五章 加载实体和导航属性 实体框架提供了非常棒的建模环境,它允许开发人员可视化地使 ...