关于WebService调用时随机出错的问题

xaj21 2011-08-07 11:08:49
服务器及开发环境:Win2008+IIS7+VS2008

近期在做一个Winform+WebService的项目。Winfrom和WebService及数据库访问主要用了实体DataSet,
从而导致Web服务器内存不停上涨,导致占用大量内存。现在已经想办法将DataSet进行了Dispose,
似乎比以前要好了点。可是还存在一个很诡异的问题,已经把我块折磨的不行了,跪求各位大虾帮忙。

Web服务器2G内存,w3wp.exe进程占用到800M内存左右的时候,WebService就工作不正常了,而且是
说不准是哪一个,随机的会出现错误。导致客户端访问WebService出错。
WinForm这边会看到如下错误:
响应消息的内容类型 text/html; charset=utf-8 与绑定(text/xml; charset=utf-8)的内容类型不匹配。如果使用自定义编码器,请确保正确实现 IsContentTypeSupported 方法。

然后到IIS查看失败请求跟踪的日志,里面的错误是(好像是内部500错误):
Url http://10.167.18.219:80/asmx/M30/M3010/M301020.asmx
App Pool HSIT
Authentication anonymous
User from token NT AUTHORITY\IUSR
Activity ID {00000000-0000-0000-0B02-0080010000FA}
Site 2
Process 6096
Failure Reason STATUS_CODE
Trigger Status 500
Final Status 500
Time Taken 280 msec

其他错误日志:
94. r MODULE_SET_RESPONSE_ERROR_STATUS
Warning ModuleName="ManagedPipelineHandler", Notification="MAP_REQUEST_HANDLER", HttpStatus="500", HttpReason="Internal Server Error", HttpSubStatus="0", ErrorCode="操作成功完成。
(0x0)", ConfigExceptionInfo=""

还有:
="<html>
<head>
<title>运行时错误</title>
<style>
body {font-family:"Verdana";font-weight:normal;font-size: .7em;color:black;}
p {font-family:"Verdana";font-weight:normal;color:black;margin-top: -5px}
b {font-family:"Verdana";font-weight:bold;color:black;margin-top: -5px}
H1 { font-family:"Verdana";font-weight:normal;font-size:18pt;color:red }
H2 { font-family:"Verdana";font-weight:normal;font-size:14pt;color:maroon }
pre {font-family:"Lucida Console";font-size: .9em}
.marker {font-weight: bold; color: black;text-decoration: none;}
.version {color: gray;}
.error {margin-bottom: 10px;}
.expandable { text-decoration:underline; font-weight:bold; color:navy; cursor:hand; }
</style>
</head>

<body bgcolor="white">

<span><H1>“/”应用程序中的服务器错误。<hr width=100% size=1 color=silver></H1>

<h2> <i>运行时错误</i> </h2></span>

<font face="Arial, Helvetica, Geneva, SunSans-Regular, sans-serif ">

<b> 说明: </b>服务器上出现应用程序错误。此应用程序的当前自定义错误设置禁止远程查看应用程序错误的详细信息(出于安全原因)。但可以通过在本地服务器计算机上运行的浏览器查看。
<br><br>

<b>详细信息:</b> 若要使他人能够在远程计算机上查看此特定错误消息的详细信息,请在位于当前 Web 应用程序根目录下的“web.config”配置文件中创建一个 <customErrors> 标记。然后应将此 <customErrors> 标记的“mode”属性设置为“Off”。<br><br>

<table width=100% bgcolor="#ffffcc">
<tr>
<td>
<code><pre>

<!-- Web.Config 配置文件 -->

<configuration>
<system.web>
<customErrors mode="Off"/>
</system.web>
</configuration></pre></code>

</td>
</tr>
</table>

<br>

<b>注释:</b> 通过修改应用程序的 <customErrors> 配置标记的“defaultRedirect”属性,使之指向自定义错误页的 URL,可以用自定义错误页替换所看到的当前错误页。<br><br>

<table width=100% bgcolor="#ffffcc">
<tr>
<td>
<code><pre>

<!-- Web.Config 配置文件 -->

<configuration>
<system.web>
<customErrors mode="RemoteOnly" defaultRedirect="mycustompage.htm"/>
</system.web>
</configuration></pre></code>

</td>
</tr>
</table>

<br>

</body>
</html>


可WebConfig中将customErrors mode改成OFF,还是remoteonly,错误仍然继续。

比较诡异的是每次内存占用到800M左右,就会有这种问题出现,而且具体是哪一个WebService说不准,都是随机的。
但是在IIS管理器里面进行手动回收,内存占用量下去以后,就又正常了。各位大虾有没有遇到类似情况,或者给
小弟指点以下迷津,谢谢拉!!!

注:用另外一台性能超好的服务器16G内存,w3wp.exe进程占用到1.8G都没有这种问题,而且到1.8G以后好像也不太怎么
往上涨了。
...全文
499 8 打赏 收藏 转发到动态 举报
写回复
用AI写文章
8 条回复
切换为时间正序
请发表友善的回复…
发表回复
kevin-2008 2014-02-26
  • 打赏
  • 举报
回复
我的是把文件,放入到以前部署的文件中存有web.config下面的子文件中,一直出现此类问题。 把文件夹重新放到 D盘根目录,在重新部署一下,就没有事情了。
xaj21 2011-08-11
  • 打赏
  • 举报
回复
原因找到了。我另外一个同事这家伙把进程设置成了1个。。昏死。
把进程开了10个,每个进程占用内存达到400M进行回收,虽然内存还占用挺大的,
但没有问题了。
宝_爸 2011-08-09
  • 打赏
  • 举报
回复
唉,这种问题最头疼了,最廉价的解决方法是加内存。

另外将customErrors mode改成OFF后的异常信息是什么,应该能给点线索。
还有就是排查法,测试没给webmethod,找到出问题的webmethod。在逐步注释掉webmethod中的内容,看看是哪个地方引起的问题。
机器人 2011-08-09
  • 打赏
  • 举报
回复
只能在错误定位上,再出出主意了。lz是否做过服务端的性能测试。

把范围锁定在某个方法上。针对每个方法,循环,长时间调用多次。看看究竟是哪个方法出的问题?
xaj21 2011-08-08
  • 打赏
  • 举报
回复
没有高手么?
xaj21 2011-08-07
  • 打赏
  • 举报
回复
请问.NET Memory Profiler在哪有下载呀。找了几个,没有一个能下载的:(
xaj21 2011-08-07
  • 打赏
  • 举报
回复
分数不够了再加!调查了好几天了,自己也黔驴技穷了要!!!救命啊~~~~
机器人 2011-08-07
  • 打赏
  • 举报
回复
只能用工具查查,有没有内存泄露了。

http://lzy.iteye.com/blog/344317

12,162

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 Web Services
社区管理员
  • Web Services社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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