第一次接手JAVA项目,在上线后就遇到了网站性能问题.说实话,对于JAVA我不是很了解,同时有点感冒.
客户内网网站的是用JAVA+TOMCAT6+ORACLE9I开发的.上线后,客户单位有二百多人,大部分时候有150左右在线.上线后在客户某些机器上网页呈现的很快,一点就开了.可是在某些机器上打开网页要一到二分种.这个是没办法忍受的.客户一个接一个的电话打过来.头都晕了.
在发布线,内部都做过一些测试的,理论上性能不会如此差的.没办法.只能听客户和现场的实施人员的描述来判断.(因为是客户的内网,机密的,不让远程登录).一开始的判断是:我以为是刚上线,并发量比较大,在客户打不开页面时,又多次刷页面,从而引起这种现象.所以让实施人员这样和客户解释. 终于能安静一会了.
没想到,刚安静一会,客户的电话又打过来了,先是斥责一番,啥也不说,就是我们做的程序出了问题.立马给解决.汗! 客户是公司VIP客户,大家都靠他吃饭的.怎么办.只能答应.
对于初期的症状描述,就那点信息.一时也想不出哪个部分会出问题.那就从头来排查吧.网站的性能,无非就是 WEB服务器的并发量,数据库的并发量,IO操作量,及数据的吞吐量等等.
第一先声明,第一次接触JAVA的项目,具体技术是啥都不懂.那只好虚心的请教公司这方面所谓的专家们了. TOMCAT的并发量是首先排除掉,公司以前的项目也有用TOMCAT的,没遇上过这样的问题. ORACLE数据库这方面,是由客户提供的.那可是花钱买的.理论上问题也不大.(相应的服务器的配置及性能那就更不能怀疑了).问题出在哪个地方呢.那是不是IO处理方面有问题呢.
想想网站使用了模板来实现,可是相应的模板都进行了缓存了.有些客户机访问每次都很快,也可以排除这方面的问题.
是啥问题啊,真是越想越头晕.客户又在异地.我又看到现场.没办法,只能在公司布署站点,进行压力测试,看看近200人的并发量有没有问题. 最终的结果,也没什么问题. 那就意味着理论上我们的程序没什么问题.
现场人员也在按计划排查客户现场故障:
1以为是客户网络有问题.最后用简单的测试方法,拿台本本去拨网线,网络很快啊.页面一点即开.
2.网站停了,用静态页来测试,慢的机器,还是那样慢.
得出一个结论:某些用户的机器有问题.那就和客户直说吧,没想到一开口说机器有问题.客户马上说所有的机器都是一批的.环境地都是一样的.再说也不能让我随便拿一台出来测试.要向领导申请的.反正就是一堆近乎不可理遇的回答.和他解释,回答是我啥都不懂,有很多事要做.你只要给我一个解决方案.但是不能动他的机器. ......... 人要抓狂了. 啥都不想了.只能现场见.
第二天一早就赶到客户单位.用我的本本上去一试,没问题,再看一下,上线访问网站的客户也不少.再一看客户的机器,果然是很慢.头痛啊. 只能仔细的做功课了,自己去询问一些出问题的细节,并自己操作. 仔细观察结果.最后发觉只要出现慢的网页时,网页最上部都有一个FLASH,可是FLASH上看似内容都出现了(估计是用图片做了一个背景,上面再放FLASH,具体代码我也没看,说实话,没兴趣看这个),可是在FLASH的位置上出现了另一个小图标,差不多就是FLASH插件没安装时的那个小图片,要等那个小图片不显示了,IE就会立即显示页面的数据.试了几个其他差不多的页面,都是要一二分种出来,SWF都是同一个. 估计是这个原因吧,让随同的开发人员立即将FLASH的内容去了,再测.果然,慢的机器也能很快的显示网页的内容了.
得出正确的理论结果了.应该是FLASH插件的问题.打开慢的机器的FLASH插件和我的FLASH插件一比对,果然客户的版本都比较低,最高就是9,可是FLASH9版本的就没有问题.其他都会有慢的现象.
看看实际刚才的理论是不是成立,让客户找了一台机器安装了一个FLASH9插件,问题没有了.立即建议客户升级FLASH插件,回答是这样多的机器,不可能升级,要让程序适应现场环境.无语,立马将FLASH转成图片放上去.(转成的图片为了不失真,是很大的,不管了),终于可以解脱了.
谁能想到问题就在这个小小的FLASH上,客户机是内外网分开运行的.所以机器是同一批的,可是有些配置不大一样.有些FLASH插件没有升级过.就造成这样的很慢的问题.