100分求助,ASHX处理程序一个困扰我大半年的问题~~~

2013-12-19 11:28:10
我这边用ASHX 处理手机客户端发过来的JSON 数据,客户端的安装量大概有100W左右,每天都会发送数据过来我处理,然后通过ASHX解析后存储,同时返回处理结果~~

问题是返回客户端的结果超级慢,经过排除了程序的问题,发现就下面几句话,就会导致网站变的超级慢。
客户端是用POST发过来KEY 为mobiledata的JSON 字符串。
为了排除程序问题,我收到数据什么都不做,直接返回结果,就是这样的,用网页打开那个ASHX 页面也是超级之慢

public void ProcessRequest(HttpContext context)
{
if (context.Request.Form["mobiledata"] == null)
{
context.Response.ContentType = "text/plain";
context.Response.Write("{\"result\":[{\"success\":\"0\"}]}");

}
else
{
context.Response.ContentType = "text/plain";
context.Response.Write("{\"result\":[{\"success\":\"1\"}]}");

}
}


更让我想不通的是,有的时候会抽风的好了,就是正常的处理后返回很快,总是在重启IIS ,什么应用池设置,也不知道怎么弄的,不知不觉又好了,重启服务器之后,又挂了~~~但又找不到原因~!!!

大家帮我看看怎么这么奇怪~~~
...全文
1278 57 打赏 收藏 转发到动态 举报
写回复
用AI写文章
57 条回复
切换为时间正序
请发表友善的回复…
发表回复
sunweiheng2013 2014-07-02
  • 打赏
  • 举报
回复
目测服务器问题啊,重新安装下服务器应该没问题了。 明显iis异常
xulingjia3 2014-03-19
  • 打赏
  • 举报
回复
楼主问题解决了没?我们碰到了跟你一样的问题,ashx页面一天几百万次的访问量,现在ashx页面只有一行代码,直接return,服务器还是挂了,换了服务器也是继续挂。现象跟你的一样。
minwen369 2014-03-19
  • 打赏
  • 举报
回复
这个。。。不是你代码的问题吧,服务器本身承载能力,带宽,都有可能造成
  • 打赏
  • 举报
回复
引用 2 楼 tsgx_1989 的回复:
[quote=引用 楼主 u012252167 的回复:] 我这边用ASHX 处理手机客户端发过来的JSON 数据,客户端的安装量大概有100W左右,每天都会发送数据过来我处理,然后通过ASHX解析后存储,同时返回处理结果~~
你这是要赶上大数据处理的节奏啊! 分析并发量,网络带宽,数据存储部分等等各种...[/quote] 100W 就大数据了?
liuxingfffff 2014-03-19
  • 打赏
  • 举报
回复
关键字 :ashx 预编译
late2never 2013-12-26
  • 打赏
  • 举报
回复
顶一下
likevs 2013-12-26
  • 打赏
  • 举报
回复
引用 43 楼 u012252167 的回复:
[quote=引用 40 楼 likevs 的回复:] 楼主,我严重怀疑是这语句引起的 if (context.Request.Form["mobiledata"] == null) 你把它注释掉,直接返回, 这语句是遍历整个表单的所有项的 假如,你一个表单有200个项,然后1秒内10条记录,这个还是占用资源的 如果不判断后,还是不行,那么是你的IIS配置有问题了,肯定是配置了什么影响到ASHX 页面 如果是,请检查一下web.config
就是这样的一句话引起的啊,,我早就知道了啊。。但如何处理,不用这句话 ?POST请求只有这句话得到数据啊 ~~~[/quote] POST的话,这句话不能改,你看一下能不能缩小一些提交过来的数据 至于你说1秒种10条数据,这种不算大的,如果.NET连这个都处理不了,那还混在Web界个毛线,服务器再烂也是双核吧,一秒CPU处理几千万亿次吧,指令 所以,观察一下POST提交过来的数据,到底能不能优化一下数据 然后,根据我说的,CPU不会这么差的,除非你拿到数据后,做很多 数据类型 “转换” 的操作,因为类型强制转换,真的可以杀死一台四核机器 请好好看一下IIS里的参数配置,比如内存最大使用限制,最大同时访问请求个数限制(也就是最大排队等待服务请求线程数),1秒钟10条,10秒内也有蛮多请求过来的,Web这种分布式访问请求的,算是多线程了,所以,这个量还是蛮大的,你得细看IIS,不然它罢工也是应该的 还有就是SQL数据库,无论如何也要移到另一台服务器上,不然你这样的操作量,把它和IIS放同一服务器,你就等着哭吧
md5e 2013-12-25
  • 打赏
  • 举报
回复
引用 47 楼 u012252167 的回复:
[quote=引用 37 楼 liuchaolin 的回复:] http://technet.microsoft.com/zh-cn/office/ocs/dd425294(office.13).aspx 这个应该有帮助
上周五无缘无故的好了,什么都没改,只是在改虚拟目录,重启IIS,重启电脑,只有这些方法。。然后好了,一直都没什么问题,返回值也是1秒内 今天替换了下程序(我确定不是改程序的问题),,,又挂了,, 又是那样的情况~~ CPU 20%,内存10% ,ASHX 页面死打不卡,或者延迟200秒才又返回值。。。这TMD 的奇了怪~!~!! ASHX 页面收到的数据是比较大。。但我觉得不是这个问题。。。[/quote] 这个站点是独立配置的应用程序池不? 还是和其它站点共用? 你可以考虑一下迁移到别的服务器试试,如果还是不行,说明程序本身的问题
2013-12-24
  • 打赏
  • 举报
回复
引用 49 楼 a407121393 的回复:
<compilation debug="true"> 另外这个改成false啊
IIS 重启的时候特别容易假死,只有重启电脑解决~~~
饕餮123 2013-12-24
  • 打赏
  • 举报
回复
<compilation debug="true"> 另外这个改成false啊
饕餮123 2013-12-24
  • 打赏
  • 举报
回复
<authentication mode="Windows"/> web.config里面去掉所有不需要的处理模块试试 <remove name="WindowsAuthentication" /> <remove name="FormsAuthentication" /> <remove name="PassportAuthentication" /> 但是个人感觉这个应该是iis和服务器的问题,可能的话建议重装系统
2013-12-24
  • 打赏
  • 举报
回复
引用 37 楼 liuchaolin 的回复:
http://technet.microsoft.com/zh-cn/office/ocs/dd425294(office.13).aspx 这个应该有帮助
上周五无缘无故的好了,什么都没改,只是在改虚拟目录,重启IIS,重启电脑,只有这些方法。。然后好了,一直都没什么问题,返回值也是1秒内 今天替换了下程序(我确定不是改程序的问题),,,又挂了,, 又是那样的情况~~ CPU 20%,内存10% ,ASHX 页面死打不卡,或者延迟200秒才又返回值。。。这TMD 的奇了怪~!~!! ASHX 页面收到的数据是比较大。。但我觉得不是这个问题。。。
l287816895 2013-12-24
  • 打赏
  • 举报
回复
关注一下,看有没有结果
2013-12-24
  • 打赏
  • 举报
回复
引用 42 楼 jhl52771 的回复:
context.Request.Form["mobiledata"] 这个反回的数据集结果可能过大 在加数量并发引起的
那如何处理,,有时候会无缘无故的好了。好了只要不动 就一直没事,替换程序又挂了。。我受不了了,,关键是没找到答案。。
2013-12-24
  • 打赏
  • 举报
回复
引用 38 楼 hzfqq333 的回复:
mark 请问楼主是否解决了该问题 想学习下下
在我无数种重启IIS ,重启电脑,等操作中,不知不觉好了,今天替换下程序,又挂了,,这不又过来了看答案了。。
2013-12-24
  • 打赏
  • 举报
回复
引用 40 楼 likevs 的回复:
楼主,我严重怀疑是这语句引起的 if (context.Request.Form["mobiledata"] == null) 你把它注释掉,直接返回, 这语句是遍历整个表单的所有项的 假如,你一个表单有200个项,然后1秒内10条记录,这个还是占用资源的 如果不判断后,还是不行,那么是你的IIS配置有问题了,肯定是配置了什么影响到ASHX 页面 如果是,请检查一下web.config
就是这样的一句话引起的啊,,我早就知道了啊。。但如何处理,不用这句话 ?POST请求只有这句话得到数据啊 ~~~
阿拉敏敏 2013-12-20
  • 打赏
  • 举报
回复
mark 请问楼主是否解决了该问题 想学习下下
md5e 2013-12-20
  • 打赏
  • 举报
回复
http://technet.microsoft.com/zh-cn/office/ocs/dd425294(office.13).aspx 这个应该有帮助
btman52 2013-12-20
  • 打赏
  • 举报
回复
试试这样: 应用程序池属性\回收工作进程(请求数目)的勾去掉,请求队列限制的勾去掉或改成10000及更大 C:\WINDOWS\Microsoft.NET\Framework\应用程序池使用的.net版本号\CONFIG\machine.config 将system.web节下面的 <processModel autoConfig="true"/> 改为 <processModel autoConfig="true" requestQueueLimit="这里写个队列上限,建议为10000以上"/>
杰拉尔 2013-12-20
  • 打赏
  • 举报
回复
context.Request.Form["mobiledata"] 这个反回的数据集结果可能过大 在加数量并发引起的
加载更多回复(37)

62,072

社区成员

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

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

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

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