LinuxSir.cn,穿越时空的Linuxsir!

 找回密码
 注册
搜索
热搜: shell linux mysql
查看: 1822|回复: 4

使用JSF遇到一个非常妖的问题,各位能否给点建议。

[复制链接]
发表于 2009-8-27 14:46:07 | 显示全部楼层 |阅读模式
主要是JSF+Spring+iBatis,JSF用的SUN的实现,服务器用的Tomcat,在开发测试的时候速度很理想。在正式服务器上发现有两个页面,在画面跳转的时候非常耗时。主要症状如下:
1,主要有两部分用户,内网本社用户,通过VPN连接的远程客户,VPN的质量是有保证的,速度慢的问题,主要发生在通过VPN链接的远程客户上。
2,出现问题的页面也不是每次打开都慢,比如从A页面跳转到B页面,如果A页面打开,然后放在那边,隔一定时间间隔,比如2分钟,然后去点击A上面的某个按钮准备去B页面时,从点下按钮到B页面正式显示出来,非常慢,几乎耗时30秒以上。加了fliter的log后发现,从服务器收到access请求进入fliter到事件响应的第一行代码,就花费了30秒左右。

非常妖,这个问题在本社内网没有任何问题,vpn也没有带宽限制,在vpn上运行其它东西没有感觉任何速度慢的迹象。在开发测试的时候也没有任何问题。

各位给点建议。
发表于 2009-8-28 08:55:48 | 显示全部楼层
如果是客户机网速慢的话,需要考虑组件状态是否应该保存在客户端,我只是分析:如果状态在客户端保存,那么每次jsf页面访问的时候,就需要将savestate 这个hidden中大量的组件字符串提交到服务器,有可能产生上传的效率问题(同样页面响应渲染的时候也需要将大量组件状态写到客户端,而导致页面显示延迟,容易导致客户非正常操作!),如果是这样,可以考虑将组件状态放入server端,再进行远端测试,这个server模式在访问量不是很巨大的应用系统中是可以的,我们的系统就是如此使用,但是作为高性能网站,就要当心server端内存的压力了!
回复 支持 反对

使用道具 举报

 楼主| 发表于 2009-8-28 12:01:03 | 显示全部楼层
目前固定客户端不是很多,所以服务器的压力是没有问题的,目前是采用的server模式。
回复 支持 反对

使用道具 举报

发表于 2009-8-28 13:48:32 | 显示全部楼层
再次猜测:从filter到第一段监听代码之间,还要经过,应用请求值-》验证-》模型更新等阶段,是否在这些阶段存在问题:比如说,有可能是某个组件,或者某个验证器等等,访问了一个url地址,在内网是有用的,但是放到公网上就访问不通了!所以可以加入阶段监听,并记录每个阶段前后的打印日志,看看从“状态恢复”一直到“应用调用”的各个阶段,到底是那个阶段变慢了!
回复 支持 反对

使用道具 举报

 楼主| 发表于 2009-8-28 17:21:43 | 显示全部楼层
嗯。是个不错的建议,不过,现在要做这方面的测试有点困难了。因为在开发环境下完全没有问题,开发环境搭了一个VPN,也没有发生类似的问题,只有那个运行环境出现这样的问题。
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

快速回复 返回顶部 返回列表