ASHX 能够多线程运行么 ?

2013-10-25 06:30:28
我有一个ASHX程序负责接收客户端的程序,收到后解析数据,保存到数据库,然后返回客户端已经收到信息。

现在遇到情况是由于客户端数据过多,导致收到数据后解析花费了大量的时间,从而导致发给客户端确认信息延迟很多。

就是一个客户端发送了数据,大概过了3分钟才收到服务器的确认信息。

服务器的CPU 和内存都是99%.主要都是数据库占用98%的CPU和内存.ASHX 程序已经优化,再优化的可能性不大。
设计到的数据表我就做了时间索引,其他索引也没有涉及到。

现在的问题就是客户端收到服务器的响应太慢,可以收到数据马上给客户端确认信息,解析放到另外一个线程慢慢做么?

PS:服务器网络响应带宽没有问题。
...全文
265 6 打赏 收藏 转发到动态 举报
写回复
用AI写文章
6 条回复
切换为时间正序
请发表友善的回复…
发表回复
threenewbee 2013-10-26
  • 打赏
  • 举报
回复
引用 3 楼 u011458723 的回复:
windows azure 的数据库服务很好 可以考虑一下
azure的优势在于可以部署很多实例,这需要你的程序伸缩性良好才行。 如果你的程序不具备伸缩性,azure的单个实例其实性能并不很好。
金色海洋 2013-10-26
  • 打赏
  • 举报
回复
1、问题在于 “解析数据”太耗时。根本的解决方法是优化这个解析过程。 2、客户需要什么样的确认? A 收到信息就可以,不用考虑信息格式是否符合规范,数据是否合理。 B 必须得到信息是否完全符合要求。 如果只是 A 的话,那么可以在起个线程,如果是B的话,起个线程也没用。 另外请注意,上述说法是建立在硬件资源富裕的前提下才行。如果像你说的,cpu和内存都99%了,那么在起线程也是没啥用的。 3、建议: A 分步实现,首先接受数据,保存,返回给客户已经收到信息的反馈。 B 然后在去对数据进行解析。解析可以放在另一个服务器里面实现。 C 如果数据格式不正确,那么在给客户发出提示信息。可以用短信的方式,也可以在用户的下一次提交数据的时候,告知上一次的某条数据信息有问题。
  • 打赏
  • 举报
回复
引用 楼主 u012252167 的回复:
现在的问题就是客户端收到服务器的响应太慢,可以收到数据马上给客户端确认信息,解析放到另外一个线程慢慢做么? PS:服务器网络响应带宽没有问题。
确认什么东西呢? 如果业务逻辑可以,那可当然可以这样实现。
__岑__ 2013-10-25
  • 打赏
  • 举报
回复
windows azure 的数据库服务很好 可以考虑一下
__岑__ 2013-10-25
  • 打赏
  • 举报
回复
数据库放到另一台服务器
licai1210 2013-10-25
  • 打赏
  • 举报
回复
你CPU和内存都满了,这就和你硬件或者服务器有关系了,你所谓的客户数量大概是多少?

62,046

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术交流专区
javascript云原生 企业社区
社区管理员
  • ASP.NET
  • .Net开发者社区
  • R小R
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

.NET 社区是一个围绕开源 .NET 的开放、热情、创新、包容的技术社区。社区致力于为广大 .NET 爱好者提供一个良好的知识共享、协同互助的 .NET 技术交流环境。我们尊重不同意见,支持健康理性的辩论和互动,反对歧视和攻击。

希望和大家一起共同营造一个活跃、友好的社区氛围。

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