[求教] JSP大量用户数据上报系统的性能考虑

gauss 2005-01-07 03:51:29
我要在这个月之内做出一个数据上报的JSP系统,让各地近两万多的用户在一到两天的上班时间内通过互联网上报数据。每个用户上报的数据量不大,只有几条记录。每个用户的操作也很简单,登录-》查询(四五个表)-》填数据-》提交-》退出。数据库中记录最多的表最终有5万行左右。该表有索引。

上报的是重要的数据,多人集中访问的时候服务器不能有严重的拥塞现象,要求系统具有高可用性,高稳定性和高性能。

现在主要考虑的问题是

1。采用什么Web服务器?可选的有Tomcat,Resin,Websphere 5
2。什么样的JSP实现方式?JSP直接访问数据库,JSP+Bean,连接池,连接池采用服务器提供的还是自己实现
3。什么样的部署方式?是否要用群集?
4。压力测试方法?LoadRunner等测试工具。


软硬件条件是:Sybase 12.5, Win2000 Server,100M LAN,Dell:Xeon 1.6G 超线程,1G RAM,Raid 5做的30G硬盘。

JSP我是新手,只用Resin开发过一个小规模的系统,而且时间紧,不能到时在大规模数据上报发现性能问题时才去慢慢着手解决。

所以在这里向大家请教,请有相关经验的朋友多分享一下。

...全文
305 26 打赏 收藏 转发到动态 举报
写回复
用AI写文章
26 条回复
切换为时间正序
请发表友善的回复…
发表回复
eww 2005-02-27
  • 打赏
  • 举报
回复
楼上的?不会吧,你肯定有地方有excepgion没处理好,倒至了conn不能被CLOSE,我自已写的jdbcpool我把F5压住不入,出去玩了2个多小时加来,Resin没有死,10个连结是用完了,不过没有一个是没有释放的。
gauss 2005-02-27
  • 打赏
  • 举报
回复
谢谢后来的几位的意见,关于本问题的那个系统我已经实现,由于提交的时限变长,所以原来的性能考虑现在变得没有那么重要。系统运行快两周,没有用户投诉过速度的问题(其他的问题倒是不少,不过都能解决)。

我在实现上也没有怎么优化,只是用了一个连接池,DBConnectionManager,我测试过性能提高了不少。只是不知道为什么,用着用着就有一些连接不能释放,数据库的连接就不断增加了。但现在又是系统运行期间,我也不好去调程序,只好一天重启一次resin。实际用是没问题的,但作为一个程序员,有这样的bug存在始终不爽。不知道大家有没有遇到过这样的问题。我连接池用的是这个http://www.webdevelopersjournal.com/columns/connection_pool.html

橘子香水 2005-02-24
  • 打赏
  • 举报
回复
我觉得IFresH_MaN说的比较好,接收数据时把数据安排到一个队列里,然后使用另一个线程来把数据插入。也可以用文件来记录传上来的数据。
jFresH_MaN 2005-02-23
  • 打赏
  • 举报
回复
其实按照你说的,就是同时有2万人同时提交数据,你的web服务器都是没有问题的
瓶颈在于得到用户的数据不能同时写入数据库,这样数据库会吃不消
所以我想你可以这样
构造一个队列,把用户提交的数据都提交到这个队列里面,这个队列就当作一个缓冲,然后由另外一个线程从队列的另一端读取数据,写入数据库,写入的时候我们就可以控制一次写入的数据量了。而且写数据的时候采用批处理加事务,效率和出错率都得到了很好的控制。
fly29 2005-02-23
  • 打赏
  • 举报
回复
其实我想的是,用jsp+javabean,数据操作用存储过程(对视图操作)。
用tomcat连接池,sqlserver/oracle数据库系统,把表分到最小化,写个视图,在视图上进行操作。
因为你这个只是数据的提交(即添加Insert),数据完整性不涉及的吧(根本没有删除、修改操作)。
-------------
大家多多讨论~
longrenrex 2005-01-09
  • 打赏
  • 举报
回复
说的玄乎,其实实现很简单的。
楼主考虑了很多无关紧要的因素,把事情搞复杂了。
用 ORALCE9i + weblogic8.1,几万数据量处理起来是小CASE.
关键是数据库要设计好。
gauss 2005-01-09
  • 打赏
  • 举报
回复
hjwl(学得越多,觉得自己越差) :

"比如这个情况 insert 一条数据,然后取出刚刚插入的lastId,你能确保你取得就是刚才insert插入值吗?"

我不太懂数据库,但在我的印象中,即使用了事务,也不能保证能达到你的这个要求.
你说的是并发访问互斥的情况,事务与此不是同一个概念.

再则,我的系统比较简单,设计上已经避免出现这种情况.


hjwl 2005-01-09
  • 打赏
  • 举报
回复
"可能考虑的是如果两个用户同时update/delete 操作一条数据吧.对数据操作时候考虑一下使用同步吧."

这种情况无疑是存在的,但我觉得这种加锁应该是由数据库本身底层作为一个很基本的要求实现了.而不需要开发应用的程序员来考虑.

比如这个情况 insert 一条数据,然后取出刚刚插入的lastId,你能确保你取得就是刚才insert插入值吗?


gauss 2005-01-08
  • 打赏
  • 举报
回复
lizzz(不是程序员) :

"逐条提交也是需要有事物的支持阿!用来保证数据的完整性."

不太懂,我操作一条记录,Insert,Delete,Update,只有成功和失败两个结果,数据完整性怎么会不保证呢? 愿闻其详.
gauss 2005-01-08
  • 打赏
  • 举报
回复
longrenrex(菜菜龙) ,系统是要求用户各人独自上报,而不是能集中批量地导入啊.
gauss 2005-01-08
  • 打赏
  • 举报
回复
我现在初步估计

如果峰值达到一秒钟要处理三个用户的业务,

或者一秒钟能对这四五个加了索引的四五万行的表做10个数据库操作(Select,Insert,Update,Delete),系统就能达到较高可用性的要求了.

系统是Dell的Power Edge 6600, 双Xeon 1.6G,Web服务器和数据库放同一台机顶不顶得住?
longrenrex 2005-01-08
  • 打赏
  • 举报
回复
俺做过,解决办法如下:
把数据存在一个TXT文件中,上传到服务器的指定目录中,然后在数据库中写一个存储过程,来读取上传的文件内容,把内容导入数据库!

快给分俺!

lizzz 2005-01-08
  • 打赏
  • 举报
回复
逐条提交也是需要有事物的支持阿!用来保证数据的完整性.
gauss 2005-01-08
  • 打赏
  • 举报
回复
谢谢各位关注.其实数据量并不大,我主要担心峰值并发用户多而导致的拥塞.

其实我的应用如果用事务就最好,但我现在已经打算把系统设计为用户逐条数据地提交,也就是说逐条记录的增加,所以不需要用到事务.

另外我做JSP是新手,时间紧,呵呵,太复杂的技术一时做不过来.
gauss 2005-01-08
  • 打赏
  • 举报
回复
onizuka5211(简单者) :

"该表有索引"

就是说该表的ID字段加了个索引.根据ID来Select的时候不需要走遍整个表.
gauss 2005-01-08
  • 打赏
  • 举报
回复
谢谢大家的关注.

wangzhanlili(小木头) :

“比如你(1、更新一条记录),与这条记录有联系的(2、所有记录都要更新)”

系统的设计已经避免了这种情况的出现.所以这种情况不需要考虑.

hjwl(学得越多,觉得自己越差) :

"可能考虑的是如果两个用户同时update/delete 操作一条数据吧.对数据操作时候考虑一下使用同步吧."

这种情况无疑是存在的,但我觉得这种加锁应该是由数据库本身底层作为一个很基本的要求实现了.而不需要开发应用的程序员来考虑.

退一步就算数据库真的那么差劲没有这个基本的互斥,根据我的设计,在系统里面不会出现这种操作.所以这点我不担心.
drugon 2005-01-08
  • 打赏
  • 举报
回复
用Webshere,其它的都不怎么好。

用连接池,对多用户连接性能要好一些。
onizuka5211 2005-01-08
  • 打赏
  • 举报
回复
对了,我们的软硬件条件是:mysql4.1.7, Win2000 Server,100M LAN,IBM:Xeon 1.4G*2 ,1G RAM,没有Raid。
onizuka5211 2005-01-08
  • 打赏
  • 举报
回复
请教一下 "该表有索引。"是什么意思啊。我不大懂。


我用tomcat的连接池,每天1000左右访问量,4000左右的浏览量,100-200人同时在线的网站性能没有问题。



hjwl 2005-01-08
  • 打赏
  • 举报
回复
让各地近两万多的用户在一到两天的上班时间内通过互联网上报数据。每个用户上报的数据量不大,只有几条记录。

只要不是同时登陆发送,系统负担还是不算啥。
最好使用连接池,事务

操作一条记录,Insert,Delete,Update,只有成功和失败两个结果,数据完整性怎么会不保证呢? 愿闻其详.
可能考虑的是如果两个用户同时update/delete 操作一条数据吧.对数据操作时候考虑一下使用同步吧.


加载更多回复(6)

81,092

社区成员

发帖
与我相关
我的任务
社区描述
Java Web 开发
社区管理员
  • Web 开发社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧