性能低下-IIS还是应用程序?

昂热1

我们的团队在IIS中托管了一个带有.NET c#后端的Android应用程序。最近,在以下情况下,我们观察到客户的突发性和无法解释的延迟:

  • 在没有任何警告的情况下,用户可以更改频道(Zapping),因为该产品与Live Media Streaming有关,并且他们甚至无法注销该应用程序。
  • 连接到另一个后端(仍为ac#后端)的移动应用程序正常运行,没有任何问题
  • 经过一段时间(从第一次事件的6小时到最后一次事件的5分钟不等),一切都恢复了正常。

我启用了“失败请求跟踪”日志,以查看是否可以从中获取任何信息,结果如下:

<failedRequest url="https://ourDNS.com:443/servertime.aspx"
               siteId="1"
               appPoolId="DefaultAppPool"
               processId="22232"
               verb="POST"
               remoteUserName=""
               userName=""
               tokenUserName="NT AUTHORITY\IUSR"
               authenticationType="anonymous"
               activityId="{80013C53-0802-B500-B63F-84710C7967BB}"
               failureReason="TIME_TAKEN"
               statusCode="200"
               triggerStatusCode="0"
               timeTaken="45141"
               xmlns:freb="http://schemas.microsoft.com/win/2006/06/iis/freb"
               >

上述页面是一个简单页面,首先获取服务器的时区,然后获取客户的时区(可以从客户端手动设置),然后返回托管应用程序的设备的确切日期和时间,例如流程序的进一步计算,现在正在播放的内容等等。但是,对于此页面,返回一个带有字符串的简单JSON,它需要超过45秒的时间(对我来说这很疯狂)。目前,客户端发出的另一条日志是上述异常:

java.net.SocketTimeoutException
at java.net.PlainSocketImpl.read(PlainSocketImpl.java:491)
at java.net.PlainSocketImpl.access$000(PlainSocketImpl.java:46)
at java.net.PlainSocketImpl$PlainSocketInputStream.read(PlainSocketImpl.java:240)
at org.apache.http.impl.io.AbstractSessionInputBuffer.fillBuffer(AbstractSessionInputBuffer.java:103)
at org.apache.http.impl.io.AbstractSessionInputBuffer.readLine(AbstractSessionInputBuffer.java:191)
at org.apache.http.impl.conn.DefaultResponseParser.parseHead(DefaultResponseParser.java:82)
at org.apache.http.impl.io.AbstractMessageParser.parse(AbstractMessageParser.java:174)
at org.apache.http.impl.AbstractHttpClientConnection.receiveResponseHeader(AbstractHttpClientConnection.java:180)
at org.apache.http.impl.conn.DefaultClientConnection.receiveResponseHeader(DefaultClientConnection.java:235)
at org.apache.http.impl.conn.AbstractClientConnAdapter.receiveResponseHeader(AbstractClientConnAdapter.java:259)
at org.apache.http.protocol.HttpRequestExecutor.doReceiveResponse(HttpRequestExecutor.java:279)
at org.apache.http.protocol.HttpRequestExecutor.execute(HttpRequestExecutor.java:121)
at org.apache.http.impl.client.DefaultRequestDirector.execute(DefaultRequestDirector.java:428)
at org.apache.http.impl.client.AbstractHttpClient.execute(AbstractHttpClient.java:555)
at org.apache.http.impl.client.AbstractHttpClient.execute(AbstractHttpClient.java:487)
at org.apache.http.impl.client.AbstractHttpClient.execute(AbstractHttpClient.java:465)
at com.framework.utilityframe.webhelper.HttpRequest.getHttpResponse(HttpRequest.java:316)
at com.framework.utilityframe.webhelper.HttpRequest.httpRequest(HttpRequest.java:393)
at com.tibo.webtv.web.TiboLog.logBufferingError(TiboLog.java:319)
at com.tibo.webtv.CustomVideoView$Buffering_Problem.doInBackground(CustomVideoView.java:324)
at com.tibo.webtv.CustomVideoView$Buffering_Problem.doInBackground(CustomVideoView.java:307)
at android.os.AsyncTask$2.call(AsyncTask.java:287)
at java.util.concurrent.FutureTask$Sync.innerRun(FutureTask.java:305)
at java.util.concurrent.FutureTask.run(FutureTask.java:137)
at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1076)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:569)
at java.lang.Thread.run(Thread.java:856)

通过不同的论坛阅读,我发现了导致性能泄漏的不同原因,从数据库到IIS,甚至是应用程序的错误配置。我将数据库丢弃是有原因的,因为:

  • 在出现问题时,数据库参数绝对正确,查询时间执行没有变化,没有等待任务,没有锁定
  • 其次,移动和解码器应用程序连接到相同的数据库,并且移动应用程序在运行相同查询的情况下运行良好

现在,如果我想到了IIS,托管在该AppPool上的每个应用程序都可以正常运行并且没有延迟,但是那边仍然可能缺少我的东西。至少,令我感到怀疑的是,移动应用程序与众不同解码器应用程序有两种方式:

  • 首先,移动应用程序以XML格式从后端获取响应,解码器使用JSON。
  • 其次,移动应用程序使用http请求,而解码器使用https(SSL)

如果有人遇到过类似的问题,将非常感谢他们的帮助。对于您需要的其他任何详细信息,只需询问即可,我会提供。

昂热1

因此,今天,我们的团队进行了另一项测试,其中包括:

  • 应用程序托管在一台服务器中,数据库托管在另一台服务器中

  • 托管在完全不同的服务器(Azure环境)中的应用程序和数据库

在这两种情况下,结果都是相同的:服务的延迟和问题。问题既不在后端,也不在服务器上。首先,当将日志保存到另一台服务器时,Java应用程序错误地执行了“同步任务”(专用于此,它有潜力保留尽可能多的数据)。其次,日志服务器具有完整的HDD,只有超过1 TB的DB日志,因此,当应用程序执行那些同步任务(在与通道进行任何交互之前,这是第一次调用)时,它们会收到Socket异常。因此,也许对于可能看到此帖子的其他人:请,始终检查您的应用程序中的任务,并始终检查与您的应用程序相关的任何服务器!!!非常感谢你:D

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

JavaFX PixelWriter性能低下

来自分类Dev

JavaFX PixelWriter性能低下

来自分类Dev

性能低下的查询

来自分类Dev

Spring MVC应用程序中的性能

来自分类Dev

iOS性能问题的绘图应用程序

来自分类Dev

提高应用程序性能的方法

来自分类Dev

衡量Web应用程序的性能?

来自分类Dev

代表如何提高应用程序的性能?

来自分类Dev

.NET应用程序和性能监视

来自分类Dev

CodeNameOne应用程序的HTC性能问题?

来自分类Dev

使用MPI应用程序运行性能

来自分类Dev

Spring MVC应用程序中的性能

来自分类Dev

本地移动应用程序的性能测试

来自分类Dev

基于流星的应用程序的性能测试

来自分类Dev

提高学生信息应用程序的性能

来自分类Dev

如何使用nVidia 650M和各种驱动程序解决Ubuntu 15.10上的性能低下问题?

来自分类Dev

IIS:发布为新网站还是新应用程序?

来自分类Dev

groupbykey在Spark中的性能低下

来自分类Dev

绑定功能性能低下

来自分类Dev

mysql执行查询性能低下

来自分类Dev

Scala Future 多核 - 性能低下

来自分类Dev

C# foreach 性能低下

来自分类Dev

测量Android应用程序渲染时间/应用程序延迟/性能性能的工具

来自分类Dev

Windows应用商店应用程序的性能分析

来自分类Dev

Windows应用商店应用程序的性能分析

来自分类Dev

我应该将Direct3D还是仅Windows GDI用于精美/高性能的Win32应用程序UI?

来自分类Dev

考虑到缓存一致性的高性能应用程序的POD数学结构类的C ++选择按值传递还是按引用传递

来自分类Dev

在一个应用程序中使用多个角度应用程序时的性能影响

来自分类Dev

用于大型应用程序的Angularjs应用程序架构可增强性能

Related 相关文章

热门标签

归档