110,566
社区成员
发帖
与我相关
我的任务
分享
[quote=引用 楼主 liqgulit 的回复:] 各位大神,我现在需完成一个数据采集的工作,要求并发连接数在10000左右,通过tcp传输,都是长连接,现在采用一个点创建一个新的线程处理,结果到了1000个点左右的时候,服务端就出现死机情况,请问各位我怎么改进,想过线程池,不知线程池对长连接是否有效,谢谢!
可能你的理解存在误区.. 就比如你下面这句话.并发是并发 连接是连接. .. 他们其实不太一样.. 比如你用网上的.net的框架 来实现tcp server 是可以达到几万"连接"的.. 但是并不是说这几万连接瞬间给你发数据 你能处理过来. 所以你现在还没有找到你所谓的问题; 是连接到了1000后代码挂掉了?还是1000个同时发送数据挂掉了? 对于你现在遇到的问题 显然是前者.. 而且你自己说 连接到了1000就死了..现在还根本没有设计到"数据接收" 不是吗? 什么上报数据 连接数据库 那都是后话... 所以我猜你现在是使用那种while true 里面new thread的代码.. 我说的对吗? 要求并发连接数在10000左右
各位大神,我现在需完成一个数据采集的工作,要求并发连接数在10000左右,通过tcp传输,都是长连接,现在采用一个点创建一个新的线程处理,结果到了1000个点左右的时候,服务端就出现死机情况,请问各位我怎么改进,想过线程池,不知线程池对长连接是否有效,谢谢!
要求并发连接数在10000左右
[quote=引用 13 楼 closurer 的回复:] [quote=引用 9 楼 liqgulit 的回复:] [quote=引用 5 楼 closurer 的回复:] 看上去是你把别人的网站爬挂了啊。
谢谢,现在是当tcp连接超过1000时,客户端就连接不上服务器了,所以感觉应该是网络问题,这个怎么解决呀,请指教!
因为,各个传感器数据开始传输后,客户端那边要求一直建立连接。
using (SqlConnection conn = new SqlConnection("server=.;database=TestUserData;uid=sa;pwd=sasa;"))
{
conn.Open();
for (int i = 0; i < 100; i++)
{
SqlCommand cmd = new SqlCommand(string.Format("insert into U1 Values('hello',{0},{1})",i,2*i), conn);
cmd.ExecuteNonQuery();
Thread.Sleep(2000);
}
conn.Close();
}
[quote=引用 9 楼 liqgulit 的回复:] [quote=引用 5 楼 closurer 的回复:] 看上去是你把别人的网站爬挂了啊。
[quote=引用 5 楼 closurer 的回复:] 看上去是你把别人的网站爬挂了啊。
我现在是每个新连接,就新建一个线程,SQL也在线程中,异步怎么实现长连接的高并发,请指教。 sql也有数据库连接池,他也是有数量限制的。而且为何你要长连接呢?1000个线程的长连接?