前一段时间做了一个单独的系统,用的是SSH框架,目前系统处于使用者的状态。经过一段时间系统使用者的反馈,系统有了很大的改善,但是有几个问题一直令人头疼,特希望大神帮忙想办法:
  1.系统有生成pdf文档部分,绝大部分人在生成pdf都很正常(为greatway.pdf),但是偶尔出现了有人生成的pdf为greatwaypdf 
  2.部分人员反映系统在刷新页面的时候页面会突然不显示数据
  3.....
不知道大家碰到类似的情况不,如果有的话请麻烦指点下在这里感谢了
系统  稳定 架构师 

解决方案 »

  1.   

      1、文件名使用户输入的吗? 如果是的话校验一下,用正则过滤掉特殊字符。  2、刷新页面不显数据: 有使用过缓存吗?或者session覆盖掉了?
      

  2.   

    文件名不是用户输入的,没有使用缓存,项目很少用session的
      

  3.   

    对于第一个生成的文件名不一致,那你得检查下你文件的生成过程了。是在每个线程独立的action里生成的,还是在spring所管理的单例的service层提供的方法来生成的。如果是action层生成的因为每个action都是单独的线程不会受并发英雄的,如果是单例的service层提供的方法生成的那么自己就要注意有没什么东西会受并发的影响了。
    对于第二个问题这个你得做下压力测试了,看看并发量是多少,数据不显示有可能是因为当前的并发用户所开辟数据库连接数已经达到了数据源所配置的最大连接了。导致其他的用户在等待空闲的连接或新的连接这时数据就可能不显示了。对于这类问题先做下压力测试,并发用户多少,如果多的话最好用像memcache这样的缓存框架,如果并发用户不大的可以适当增加下数据源的最大连接数
      

  4.   

    文件名不是用户输入的,没有使用缓存,项目很少用session的如果文件名是自己生成的,检查下生成文件名的代码是否存在并发访问的问题,做个同步处理。页面不显示数据的问题没碰到过。
      

  5.   


    文件名不是用户输入的,没有使用缓存,项目很少用session的如果文件名是自己生成的,检查下生成文件名的代码是否存在并发访问的问题,做个同步处理。页面不显示数据的问题没碰到过。
    每个访问者的session不一样,并且使用系统的人不多,并发问题好像不可能吧
      

  6.   


    文件名不是用户输入的,没有使用缓存,项目很少用session的如果文件名是自己生成的,检查下生成文件名的代码是否存在并发访问的问题,做个同步处理。页面不显示数据的问题没碰到过。
    每个访问者的session不一样,并且使用系统的人不多,并发问题好像不可能吧session是非线程安全的,谁知道会有些什么奇葩的代码 在怎么弄