为什么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写的,还是要静下心来好好研究一番的嘛,踏踏实实点点滴滴的做起来!加油
随机推荐
- TreeSet
一.TreeSet中的元素比较有两种方式 1.定义一个类,实现Comparable接口 复写的是comparato方法 2.定义一个类,实现Comparator接口,覆盖compara方法(此种方法 ...
- 【Beta】Daily Scrum Meeting第六次
1.任务进度 学号 已完成 接下去要做 502 无 发布任务到服务器 509 给所有api添加注释 将各个api改为面向对象 517 无 删除任务的控件及逻辑 530 下拉刷新控件 添加及修改职工信息 ...
- Xamarin的不归路-使用Gorilla Player实时预览XAML
搞了一天,才安装好,记录一下遇到的坑,为大家节约些时间. 一.下载软件 软件下载地址:http://gorillaplayer.com/ 没有FQ前用360极速浏览器和迅雷下载了好多次都失败了.用了蓝 ...
- 纯CSS3制作超级漂亮又实用的加载小图标
先来一张各种效果的预览图,其实代码并不复杂,关键看自己如何运用. <!doctype html> <head> <meta charset="utf-8&quo ...
- 仿JQ基础架构,可扩展。
(function(win,doc,fn){ var events = [];//拷贝核心方法 var publicEvent = ["extend","f ...
- pagination 分页
<!DOCTYPE html> <html> <head> <title>pagination</title> <style type ...
- jQuery 2.0.3 源码分析 Deferred(最细的实现剖析,带图)
Deferred的概念请看第一篇 http://www.cnblogs.com/aaronjs/p/3348569.html ******************构建Deferred对象时候的流程图* ...
- Net作业调度(二) -CrystalQuartz远程管理
Source Code-1.6M 介绍 上篇已经了解Quartz.NET的基本使用方法了.但如果想方便的知道某个作业执行情况,需要暂停,启动等操作行为,这时候就需要个Job管理的界面. 本文介绍Qua ...
- [.net 面向对象程序设计深入](6).NET MVC 6 —— 模型、视图、控制器、路由等的基本操作
[.net 面向对象程序设计深入](6).NET MVC 6 —— 模型.视图.控制器.路由等的基本操作 1. 使用Visual Studio 2015创建Web App (1)文件>新建> ...
- Web3DGame之路,Babylonjs 和TypeScript学习笔记(二)
先来认识一下Babylonjs,由于基于webgl来开发,所以先介绍一下基础知识. Webgl是一个html标准,他要在canvas元素上初始化. Html页面上的准备 所以我们先从html页面开始看 ...