我正在开发一个Akka应用程序,每个actor调用一个Web服务 . 当进行性能测试时,演员在大约6分钟后开始响应非常缓慢 . 我已经创建了一个单元测试来测试性能而没有看到任何问题 . 我意识到这是一个通用的问题,但我是否可以调查一下应用程序的一般领域,以发现问题所在?
我正在考虑的一个领域是路线:http://doc.akka.io/docs/akka/snapshot/scala/routing.html
我正在开发一个Akka应用程序,每个actor调用一个Web服务 . 当进行性能测试时,演员在大约6分钟后开始响应非常缓慢 . 我已经创建了一个单元测试来测试性能而没有看到任何问题 . 我意识到这是一个通用的问题,但我是否可以调查一下应用程序的一般领域,以发现问题所在?
我正在考虑的一个领域是路线:http://doc.akka.io/docs/akka/snapshot/scala/routing.html
2 回答
首先使用标准工具jvisualvm,jconsole检查应用程序的一般条件 .
如果所有基本参数(cpu,内存,线程状态)都正确,那么你应该尝试使用kamon.io和garfana / statsd / graphite stack监视特定的actor docker-config
您可以按照get-started手册并在
application.conf
中应用以下配置鉴于您只是调用远程Web服务,您的系统不太可能受CPU限制 . 以下是您应该注意的事项(使用分析工具,我强烈推荐YourKit . 如果不想支付许可证,您可以使用VisualVM) . 由于您尚未发布任何示例代码,因此无法确定在您的情况下是否存在以下任何一种情况 .
你的actor的receive方法中有阻塞代码 . 这意味着如果Web服务需要花费太长时间才能返回并且您阻止它们返回,那么您将很快耗尽线程 .
你没有为你的演员系统提供足够的内存 .
内存泄漏 . 例如,您是在完成他们的Web服务调用后停止/杀死演员还是您正在重用演员
最后,@ hicolour提到kamon.io是一个很好的工具,可以找到性能瓶颈 .