2012-11-26 162 views
1

场景: ASP.NET MVC的Web应用程序调用Java的web服务请求2年有价值的数据。以下是来自网络服务的响应的大小:Web服务性能优化

Request Count: 1 
Bytes Sent:  937  (headers:396; body:541) 
Bytes Received: 689,300  (headers:338; body:688,962) 

这需要大约2分钟的时间。这会导致ASP.NET运行速度缓慢,从而导致用户感到沮丧。已经与Java人谈过,他们已经尽了最大努力来优化其性能。

可能有人请帮助我,这将是优化Web服务调用第三方的最好方法?以下是名单的事情我做过和 已经忍不住了:

  1. 2年的数据分解到每1年ASYC通话。
  2. 已要求Java的家伙,减少邮件大小,使有效载荷 小。

仍表现并没有增加。

如果我创建一个异步VOID方法,只是要求有2年的数据,并填充缓存将这项工作,?主要关心的是登录过程是否需要等待 这个VOID方法才能完成。

+1

我做了很多类似的任务,并且asp.net运行速度并不慢。也许你需要调查让它运行缓慢的一点。是硬件上的内存问题,是锁定其他用户的SQL数据的某种锁定,是另一回事吗?还需要定义缓慢,直到任务结束才返回,是返回什么,什么?即使是一个错误的sql安装程序也可以做到这一点,如果你改变SQL线程优先级。您是否有权访问服务器以查看造成速度缓慢的原因? – Aristos

+0

你是否真的需要为每个用户提供不同的两年数据? – dove

+1

首先,您应该监视http通道,突出显示发送请求的时间与返回响应的第一个字节的时间。然后,测量响应转移的持续时间(和吞吐量)。这会告诉你究竟是花费时间 –

回答

1

这类问题不容易从远程调试,但是你应该先衡量地方开始你失去了你的大部分时间。它是否在调用处理中的Java服务?将性能计数器添加到您的代码中,或者登录以查看哪些地方可以提高最多。接下来,您可以使用存根交换webservice调用等部分,并查看您的性能是否更好,现在您知道必须更改性能的位置了。

+0

在Java上执行速度很慢,需要进行异步调用并将本地缓存填充为login.but这个调用应该在后台运行,fire和forget.it不应该是Henderson登录进程。当用户点击两年很少的页面时。然后从本地缓存加载 –

+0

以上是可能的吗?我不知道的是如何在asp.net中运行后台异步调用 –

+0

是的,您可以在用户登录到将您的数据放入会话或缓存的网站时启动线程。 – Peter