免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
查看: 6162 | 回复: 4
打印 上一主题 下一主题

请教一个关于Java多线程和数据库连接的问题 [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2010-04-08 19:44 |只看该作者 |倒序浏览
本帖最后由 netactspcl 于 2010-04-08 20:07 编辑

我正在偿试着写一个基于数据库的多线程下载器,刚开始由于超过五百万的数据在一个表上所以MYSQL进程一直处于接近100%的CPU使用率,分表后出现了一个很怪的情况,刚开始时Java程序的进程占用很低的cpu,网络使用率的曲线很平滑,但过一会之后使用率就会达到接近100%,内核时间的红线程绿线几乎重叠(server2003),网络使用率明显降低而且上下波动很大,MYSQL进程基本上不占用多少cpu时间。
开始以为是Java分配的堆内存不够,从网上找资料,加大内存
  1. java -Xms1024M -Xmx1024M -Xmn384M -Xss20M BatchDown
复制代码
但似乎也没有起多大作用,刚启动还好,过一会效率就明显下降了。

程序开50线程使用一个数据库Connection,每个线程一个statement,任务执行期间一直不释放statement,并且线程循环从数据库中取任务,为了减少和数据库的执行次数,使用了大量的addBatch(),这是否产生影响?

哪位能帮我分析一下问题出在哪?谢谢

论坛徽章:
0
2 [报告]
发表于 2010-04-08 23:56 |只看该作者
又仔细在网上查看了一下相关信息,Java知识真是太广博了,自已慢慢研究了,谢谢。

论坛徽章:
0
3 [报告]
发表于 2010-04-09 12:37 |只看该作者
i 每个线程一个statement,任务执行期间一直不释放statement,这样的话会很占用内存

论坛徽章:
0
4 [报告]
发表于 2010-04-11 20:30 |只看该作者
已经解决了,Java根本没有想像中那么柔弱,问题的的关键都不在Java上,而是Windows下一个文件夹中放的文件太多了就会变得奇慢无比,尤其是当爬了两天之后就基本上每秒抓两三个文件了,改为每个目录最多放五万个文件之后速度就跟吸果冻一样爽。

论坛徽章:
0
5 [报告]
发表于 2010-04-20 12:54 |只看该作者
已经解决了,Java根本没有想像中那么柔弱,问题的的关键都不在Java上,而是Windows下一个文件夹中放的文件太 ...
netactspcl 发表于 2010-04-11 20:30



  使用散列等方式可以进行文件的存取.减小每个目录下文件数过大的情况
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP