当前位置:编程学习 > C#/ASP.NET >>

大家是如何处理很多线程连接数据库连接的?

我的SQlserver 因为在共享的服务器上很多线程都要用(我放在一个廉洁的服务器...512mb内存)
以前我一直以为数据库并发控制 sqlserver内部就实现的很好了 但是现在有个问题

我有个小程序(算是个蜘蛛) 是扫描网站 提取有用的数据 储存到数据库 并且 把扫描过的url一起存入数据库。。。问题是 如果我使用1个线程扫描 或者 少数线程还好
如果使用30个线程 程序运行几秒钟 就出错了 错误内容就是数据库提供错误(provider error)

另外 我如果把程序挪到我自己的电脑上(远程连接数据库,插入数据,但是扫描网站的是由我的电脑完成), 就没问题(我觉得是因为 每次数据库插入都是需要通过网络,这样一部分延迟花在了网络传输上,数据库插入就不会那么频繁 这样就不会出错)

请问大家平时都是怎么处理这个问题的

--------------------编程问答-------------------- 应该不是你说的这个原因哦。
SQLSERVER最大连接数如果不做处理的情况下,100个以下都没有问题,
可以尝试在连接字符串中启用连接池。 --------------------编程问答--------------------
引用 1 楼 wolf_y 的回复:
应该不是你说的这个原因哦。
SQLSERVER最大连接数如果不做处理的情况下,100个以下都没有问题,
可以尝试在连接字符串中启用连接池。


那个是读的连接吧.....我写的话一个线程可能写一次 但是读就很多了
另外我用的EF....(内部实现不知道啥样的 )

想问一下 怎么处理 让他最大连接数增加。。。。


另外:我觉得会不会和CPU和内存有关。。。刚才查了查亚马逊服务器报告 现在cpu利用率100% 内存也是512用满了。。。。但是现在我就用了2个线程 没什么问题 就是服务器卡了点。。。。
是不是50线程的时候 和 CPU和内存有关 --------------------编程问答-------------------- 学习 --------------------编程问答-------------------- 增加连接数是一个办法,但不能无限增加。

你在保存时,对数据库连接的使用率可能有点低, 做个线程池,专门有几个线程去存数据到数据库(可以少用几个连接)
我作过的采集,50个线程,只需要2-4个保存线程就够用了,也就是2-4个数据库连接。 
--------------------编程问答--------------------
引用 4 楼 whrspsoft3723 的回复:
增加连接数是一个办法,但不能无限增加。

你在保存时,对数据库连接的使用率可能有点低, 做个线程池,专门有几个线程去存数据到数据库(可以少用几个连接)
我作过的采集,50个线程,只需要2-4个保存线程就够用了,也就是2-4个数据库连接。


其实我也是采集 基本就是50个采集线程 2-4个数据库操作线程? --------------------编程问答-------------------- 哦,那这样,在控制台上观察一下sqlserver连接数的变化或者在性能计数器中查看下连接是否过多了,要么就是你的保存代码有问题,会引起锁定升级。
--------------------编程问答-------------------- lz会结账么
补充:.NET技术 ,  C#
CopyRight © 2012 站长网 编程知识问答 www.zzzyk.com All Rights Reserved
部份技术文章来自网络,