AppEngine 上的 JAX-WS 慢

Posted

技术标签:

【中文标题】AppEngine 上的 JAX-WS 慢【英文标题】:JAX-WS slow on AppEngine 【发布时间】:2017-02-11 18:24:54 【问题描述】:

我正在开发一个客户端应用程序,它通过 SOAP 与第三方 API 进行通信。该应用程序在我的本地机器上运行良好,但在上传到 AppEngine 时会变慢 10 倍,进一步调查发现它的客户端库使用的底层 jax-ws 导致速度变慢。

一个重要的事情是增加实例的数量,性能会显着提高,但在这种情况下,实例会消耗更多的资源。

我找不到此问题的任何解决方案,任何指导都会有所帮助。

PS:我使用的客户端库是this。

【问题讨论】:

嘿维维克!我们很乐意提供帮助,但需要更多信息才能这样做。您能否向我们展示任何相关代码(例如您实际调用 API 的方式)? @WillHayworth 你可以看看我给你的客户端库链接。它在内部使用 jax-ws,可悲的是,当我在 AppEngine 上上传我的应用程序时,它的工作可悲。令人惊讶的是,随着实例的增加,它会显着加快速度。 我在询问您调用客户端的代码。 this 示例在这里。我刚刚在我的代码中复制了相同的示例。 这仍然没有提供关于您可能正在使用的其他库或它们如何交互的太多上下文,并且也不清楚您看到什么样的性能差异或它是如何的测量。 【参考方案1】:

一般来说,SOAP 被认为是一种缓慢而臃肿的序列化技术;使用 JSON 可能会获得更好的性能。

您的本地计算机可能比单个应用引擎实例强大得多;这是我的经验。

对于 SOAP、Spring 等重量级框架来说,App Engine 可能不是一个很好的环境……这些框架往往会使用大量资源来提供大量功能。 App Engine 旨在快速扩展,这些框架的启动时间很慢。

我建议坚持使用基本的 REST/JSON 架构,或者转移到允许您调整 compute size 的计算引擎。

【讨论】:

以上是关于AppEngine 上的 JAX-WS 慢的主要内容,如果未能解决你的问题,请参考以下文章

如何测试 JAX-WS 连接超时

WebService:JAX-WS实现WebService

JDK6:何时使用捆绑的 JAX-WS 实现与 Project Metro

如何在 GlassFish 上从 JAX-WS 向 Swing 客户端构建推送通知?

如何在 jax-ws 网络服务中解组 xml 文件

JAX-RS 和 JAX-WS 有啥区别?