山西农行内网websphere迁移整理
八月底关于农行内网从tomcat服务器迁移至IBM的websphere服务器的一些工作积累。
起因是原来tomcat上的系统一直出现宕机现象,以前服务器是行内的一台虚机,物理内存为3G,但从资源消耗上看,PF使用率一直在3G以上,但可以排除硬件的不足。tomcat最大内存设为1024M,性能依然。所以考虑更换web服务器。以前没有接触过websphere,所以一开始就没有太多的考虑,就直接加载war包,默认安装,没有做任何优化设置。其实也不太懂优化,还没有到那个层次。
接下来问题就开始出现了。
第一个问题:前台访问正常,但进入后台之后,登陆成功,但后天首页一闪而过,出现404错误。脑子里第一感觉是路径错误,404谁都知道。所以开始从后台struts配置的路径找,发现后所有的路径都增加了admin/这个参数,主要是后台过滤。但在tomcat下很正常啊,开始以为是was的路径和tomcat不同,不过最后证实这两者用同样的方法得到的路径确实不同。这个先放到后面说,先说404的问题。针对这个问题本人找了几个解决办法,一一列表,估计有很多也同样是很多人的办法。
one:去掉后台过滤器,无效。
two:最笨的办法,更改后台代码,把所有的路径都去掉admin/,因为我试过,确实换过之后有个页面出来了,但做着做着发现做不下去了,后台代码太多,涉及到的路径太多,牵一发而动全局,根本不可行。
there:也是最终的决绝办法。后来让项目经理帮忙看,人家的解决思路完全和我的不同,我一开始就被路径这个思路给诱导偏了,项目经理首先查找加载不上的两个页面,直接在地址栏数据页面的物理路径,看是否能加载,是否存在,奇怪的是,有的页面能出来,有的就不能出来,这下好了,首先缩小了一半范围,肯定是页面里出了问题,和路径完全没有关系。接着,查看问题页面代码,我们用的是VM模板,基本不是出错,然后跟踪到css样式文件,我当时就觉得这不瞎找吗,怎么可能和CSS样式有关系的,八竿子打不着的呀!但项目经理还是锁定了CSS样式,也是采用删除代码排除法,最后把一断代码删除后,问题页面竟然离奇出现了,看来问题就出现这段CSS代码上,为保险起见,再还原那段代码,页面又没了,最后结果,这段CSS代码惹得祸。后来无意间从网上也看到一篇文章,同样是CSS问题的过,因为was的容错机制比tomcat强,页面如果有问题,比如css加载路径不到,或者引入的某个样式表有问题,就会报出这样的错误。那篇文章的链接找不到了,无法和大家分享了。
第二个问题:上传文件失败。解决404错误之后,文章添加处的上传不能上传。首先跟踪上传路径,发现上传的文件夹名称没有在项目的根路径下面,而是和项目的根路径平级,而且文件的名称为项目名+上传的文件夹名。一直很很困扰,但解决问题的思路没有偏,我一直认为是上传路径不对导致的。就查看源代码,发现String filePath = request.getSession().getServletContext().getRealPath("/")这个方法返回的路径应该不对,如果在tomcat在返回项目名/,而在was下则只返回项目名,没有/,所以才导致上传文件夹名称项目名一起组合,解决方法,在filePath后面+"/",问题解决。看来was和tomcat的区别还是相当大的。
第三个问题:这个问题也是比较棘手的,也是很高深的问题。就是性能优化。按说一个小网站访问应该不是很慢,而且是在内网,更不应该了,但时而慢时而快,就只能等 慢了之后查看下日志再分析了。
其实在迁移过程中还遇到不少问题,比较jdk编译问题,本来打算还迁移一个论坛过来呢,因为它和主网是一起的,但由于论坛是用jsp写的,在was上竟然一点都不能编译,上网查找,按着网友的把项目下面一个叫ibm-web-ext.xml的配置文件里加了行代码,如下:
<jspAttributes xmi:id="JSPAttributes_1283490172661" name="reloadIntervar" value="15">,虽然错误不行了,但还不有问题,最后实在没辙,就只好暂不迁移了。
通过这么一个过程,总结了下,我们在解决问题的时候一定要有一个清醒的头脑,正确的解决思路,然后在慢慢排除错误原因,缩小范围,才能在最短时间内解决问题,但最重要的是在解决完之后,能做一个很好的回顾和总结。这样才能让问题变成收获,成为自己的一份积累。