该帖已经被评为良好帖
|
|
---|---|
作者 | 正文 |
发表时间:2007-04-26
但是导出和打印功能是基于全部数据的. 系统投入使用后,对于导出和打印功能的使用远远要高于我们的预期. 而我们的系统的硬件设备是有限的 不能再升级了. 抓取内存大对象的时候,常常发现数百个5M以上的collection大对象 我们的这个系统不大,就是一个提供一些信息管理的,页面也不多(不到1000个 其中能有6 7百的页面是查询),但是并发访问量比较大,同时在线能有5000人,而并发的查询操作至少也有500了,其中大数据量(10万以上)的太多了.这个问题怎么办啊 哪位有好的解决办法 (不生成vo 和 vo的collection也许可以,但是这样改动太大了) 而且关键是 系统已经上线了, 不太可能重新开发所有的dao层 :'( 4G内存的机器(当然java只用了2g) websphere 6.0的机器 声明:ITeye文章版权属于作者,受法律保护。没有作者书面许可不得转载。
推荐链接
|
|
返回顶楼 | |
发表时间:2007-04-26
某些业务操作做人工的并发控制,不能同时多人访问一个业务模块?大的业务模块在每次做完以后都强制GC?
都是一些不成熟的想法,这种问题的确很头痛。 |
|
返回顶楼 | |
发表时间:2007-04-26
导出和打印的操作是怎么进行的?从数据库里面先全部抓出对象塞到某个collection,然后再丢给处理导出/打印的功能?
数据库交互用的是什么工具?hibernate? ibatis? jdbc? 宕机时候的现象是什么?out of memory? 补充一些具体信息吧,要不然,在论坛上这种问题没有人能解的... |
|
返回顶楼 | |
发表时间:2007-04-26
1,查询的时候不要一次加载全部数据
2,对查询的结果进行缓存 3,建立集群 |
|
返回顶楼 | |
发表时间:2007-04-26
我也遇到过这种问题,后来的解决办法就是用时间换空间,更改业务算法,让数据分次加载,控制大对象(1M以上)生成。效果还是比较明显的
|
|
返回顶楼 | |
发表时间:2007-04-26
我现在的项目也遇到类似问题了,而且情况更为复杂
不仅要导出,有时还需要大数据量(50万以上)的数据库update操作 暂时只能弄个列表将需要执行的部分command记下来,然后晚上没人的时候执行... |
|
返回顶楼 | |
发表时间:2007-04-26
现在看起来导出和打印是瓶颈?
那么详细描述一下上述功能所用的技术、方法。 比如,导出为什么格式?用什么类库完成?导出的文件一般有多大? 打印是直接用浏览器的功能么? 另,数据库分页是JDBC层面还是SQL层面的? 找准瓶颈,深入细节,办法会有的。 |
|
返回顶楼 | |
发表时间:2007-04-26
谢谢大家的回复 我再详细说说我的情况.
数据库使用 jdbc 现象就是内存耗尽 导出的文件格式 有xls csv 确实是所有结果都放入collection 打印就是用的浏览器的,但是也是打印全部(在隐藏帧里显示一个简单的表格,然后调用window.print 我也知道这方案不好,但是还有别的方法吗?) |
|
返回顶楼 | |
发表时间:2007-04-26
先保证不拓机. 用iptable限定最大并发保护服务器
然后用集群顶顶看,再不行就慢慢改程序吧. |
|
返回顶楼 | |
发表时间:2007-04-26
fins 写道 打印就是用的浏览器的,但是也是打印全部(在隐藏帧里显示一个简单的表格,然后调用window.print 我也知道这方案不好,但是还有别的方法吗?)
这种打印挺好的,其他方法比如jasperreport生成pdf打印,或者applet打印,但是我觉得js打印是最好的 |
|
返回顶楼 | |