【问题标题】:Webservice taking long time to responseWeb服务需要很长时间才能响应
【发布时间】:2012-08-25 10:55:20
【问题描述】:

我有一个客户端服务器应用程序。我的服务器使用 PHP、Mysql 和 Apache,客户端使用 C# windows Form 开发。我有用于客户端服务器通信的 SOAP WSDL 网络服务。 最近我发现一个问题,当我的客户发送请求时,响应会在很长一段时间后(比如 3/4 分钟到几个小时),有时我从来没有得到响应。我已经检查了客户端(httpwebrequest timeout,readwritetimeout)以及服务器(timeout,keepalivetimeout)端的所有超时值,我拥有的最大值是5分钟(对于httpwebrequest readwritetimeout)。那么有人能说出会是什么问题吗?为什么需要几个小时才能得到回复或没有得到任何回复?

【问题讨论】:

  • 我感觉你的服务器超载了。极长的响应时间很奇怪,但我会说您的请求是空闲的,直到服务器可以处理它。
  • 那么我必须在服务器端或客户端进行什么样的设置。我想要的是,如果它需要这么长时间,那么请求应该超时,所以我可以发送新的请求,第一个请求应该被取消。
  • 我不确定您可以在这里做什么,因为我没有使用过 SOAP。但是,我想指出,如果您等待响应的时间如此长,那么尝试通过重新初始化来强制响应不是一个非常可持续的解决方案,只会给服务器带来更大的压力(符合我的假设服务器超载)。如果响应时间为 5 秒,则可以,但几分钟到几小时是一个危险信号,表明您向其发送请求的服务器需要注意。

标签: c# php web-services soap wsdl


【解决方案1】:

根据我的经验,此类问题来自于 Web 服务连接被防火墙阻止或代理不可靠。检查这不是问题。

您应该首先通过缩小选项范围来定位问题。您是否尝试过在本地调用服务器上的 Web 服务,看看是否遇到同样的问题 - 如果没有,那么很有可能肯定是连接问题。

要排除客户端有问题,请尝试使用http://www.soapui.org/ 之类的东西来调用您的服务器 Web 服务。

你从哪里调用服务器?您确定您调用它的设备没有被 IP 阻止,并且您确定您的 Web 服务能够从运行它的位置访问其数据库。

为您的服务器 API 定义的 MySQL 用户是否可以从服务器的 IP 访问。 MySQL 用户也经常被 IP 屏蔽。

如果您在本地运行它,您确定您的 IIS Express 设置/虚拟文件夹没有混乱并且 URL 解析错误。尝试再次创建虚拟文件夹以排除这种情况。即使在本地运行,也要记得检查 MySQL 用户是否可以从您的本地 IP 访问。

当我遇到像您这样的问题时,我通常会检查以下几项内容。

【讨论】:

  • 我使用的服务器是我的生产服务器,我使用的是 apache。对于我的 php 代码,我的 mysql IP 是“localhost”。至于在本地检查,我从来没有在我的开发机器上找到它,但是我仍然会保留它今天在本地服务器上进行通宵测试。另外,我不是每次都遇到这个问题,但有时在 3/4 小时后。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2017-03-16
  • 1970-01-01
  • 1970-01-01
  • 2020-09-13
  • 1970-01-01
  • 1970-01-01
  • 2017-12-25
相关资源
最近更新 更多