- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我们有部署在生产环境中的应用程序 [Java/Scala]。当 CPU 使用率或内存使用率出现峰值时,我们会设置警报。
有时我们会看到 CPU 或内存使用量出现大幅上升。有时,正在运行的应用程序会停止响应请求。
我通常会看到崩溃前最后几次 API 命中的日志,这样我最近发现其中一个 API 正在下载大量数据转储,并且内存已耗尽。
当产品出现问题时,我可以获得解决一般问题的提示[用于捕获统计数据的命令/工具]吗?
最佳答案
但这需要大量的经验。以下是您可以遵循的一些步骤:
先决条件:
你应该明白java Memory Model
即什么是New Generation
( Eden
、 Survivor-01
、 Survivor-02
)、 Old Generation
, Meta Space
, Heap
, Stack
等等
阅读this以便更好地理解它。
你应该明白如何Garbage collection
作品。例如你应该明白如何Mark and Sweep
算法有效。检查与上面相同的链接是否相同。
现在您可以安装可视化虚拟机了。另外,在 visual vm
安装插件 visual gc
它会向您显示不同空间中使用的内存。您将看到另一个选项卡 Visual GC
i) Observe Graphs(Heap one to top right in the snapshot below) in Monitor Tab.
**技巧:** 您也可以执行手动 GC 来观察 Used Heap Space is
的图形线有多陡。以及运行某些代码块时它填满的速度有多快。我使用过它很多次,它确实很有帮助(特别是与调试器一起使用)!
ii) 另外,如果多线程导致一些问题,请尝试观察线程转储。
iii) 无论如何,您还可以通过 profiler
进行一些分析或采样。和sampler
选项卡。
下面是 sampler
的快照。看看它如何清楚地表明哪种数据类型占用了多少内存:
重要:屏幕截图是堆的屏幕截图。您可以更改为Per Thread Allocation
选项卡查看每个线程的分配。 同样,您可以观察 CPU 消耗。
或者,使用 JMeter
如果您认为在本地您无法复制相同的内容。 Jmeter 基本上可以帮助您对应用程序进行广泛的负载测试。
此外,如果您集成了任何服务器监控工具,这也会有所帮助。您可以轻松收到有问题的代码的通知。
最后,您可以从生产系统下载堆转储并使用可视化虚拟机在本地进行分析。
jmap -J-d64 -dump:format=b,file=<heap_dump_filename> <pid>
this链接中有一些非常酷的开发人员提供的更详细的答案。
使用jstat
。它带有java,有时非常方便。
jstat -gc 2341 //2341 is the java process id.
这些都是我的经验。但在这个方向上,永远都不够,我相信,随着我面临更多此类问题,我的知识会不断发展。因此,请实践并进一步探索。
话虽如此,还有其他可用的工具,因此您也可以随意查找其他适合您需求的工具。要开始使用,请查看 Jconsole
.
关于java - 解决 java/Scala play 框架应用程序中的性能问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49033563/
所以我的应用程序的评论显示在我的游戏控制台中,但是由于某种原因,当我在 google Play 商店上访问我的应用程序链接并以普通用户的身份查看它时,我没有收到新评论的通知,我的显示了 13 条评论,
一旦我在 2.3 play 项目上运行 'sbt compile',我就不能再使用 'sbt compile' 来编译任何 Play 2.2.x 项目。这是我运行 sbt 命令时的错误。 [info]
我有点困惑,想得到一个解释。 我正在使用 Java Play 2 和 Akka Actor 。我使用 play run 启动系统。 不过,我刚刚看到一个视频,使用了命令: play akka star
当我玩游戏时,我遇到两个选择play.api.mvc和 play.mvc包裹 有什么不同? 最佳答案 从戏! 2 文档: The API available in the play.api packa
从 2.3 迁移到 2.4 后,我收到此错误。我应该使用的正确导入语句是什么? error: value routesImport is not a member of object play.Pla
所以我在 google play 上有一个应用程序已经将近 6 个月了,最近两个月我更新了我的应用程序屏幕截图,从那时起,每次我更新我的应用程序时,我都开始收到应用程序拒绝。 上次我提出上诉并被接受,
我有以下代码: Snapshots.OpenSnapshotResult result; result = Games.Snapshots.open(googleApiClient, "save",
在过去 72 小时内,我为 Google Play 开发者计划支付的 Google 电子钱包付款显示为“您的购买正在处理中”。我知道这可能需要长达 48 小时,但这是他们处理时间最坏情况之后的一整天。
我在 Play 商店发布了应用程序,我不知道为什么应用程序显示预注册,我想为我的用户提供直接下载选项。伸出援手将不胜感激。 最佳答案 instructions for pre-registration
我有一个 PHP 后端,它与 Google Play 服务集成以验证从 APP 进行的购买。购买信息返回收据和签名,我需要验证购买是否正确。 我收到: { ...rest of the data
我在 Google Play Developer Console 上创建了我的 Android 应用程序的草稿。我已经填写了所有需要的信息。必需的步骤之一是“内容评级”。我已填写表格以自动分配 Goo
我已经设置好了 com.typesafe.play play_2.13 2.7.4 在项目 pom.xml 中。但是,当我尝试遵循this tutorial时,语句 pla
我在 Play 商店上发布了一个应用程序,并收到了一些评论。在Google Play开发者控制台中,我在一些评论中看不到应用程序的版本。这是我在“应用程序”标题下找到的内容。 版本代码 — 版本名称
假设 A 是所有者。我希望我们团队的 B、C 和 D 用户能够上传我们应用程序的新版本。这可能吗?来自 this我不太清楚用户有什么样的权限。如果有人对这部分有任何经验,欢迎。 最佳答案 您需要 go
我正在尝试将应用重新提交到 Google Play,但我似乎可以找到一种技术上的方法来实现此目的。 我对“您的应用主要针对 COPPA 定义的 13 岁以下 child 吗?”的回答是肯定的,然后在不
我想分享一下我在分析 Google Play 控制台的新功能时遇到的情况,并尝试找到解决方案。 正如你们许多人可能已经知道的那样,Google 已在 Google Play 控制台上发布了更新并引入了
我有两个用 playframework 编写的应用程序。我想加入另一个。我有一个数据库,我想在它们之间共享我的登录类。应用程序对类、方法、变量使用不同的名称。 我怎样才能实现它?我应该创建 jar 版
对于我的硕士论文,我需要自动将来自 Google Play 的不同 Android 应用程序的信息写入一个文本文件。所以我使用 perl 脚本语言来实现这种自动化。我的 perl 脚本可以在 Goog
我想测试子项目是如何工作的,尤其是 routes在主项目 ( this was not visible before ) 中考虑了子项目的数量。 我在这里阅读了文档: https://github.c
我正在使用 Play 框架 2.1.2,我有一个 handlere 方法返回一个 Promise,如 Play 的 2.1.2 documentation 中所述 但是 Play 抛出编译错误说: C
我是一名优秀的程序员,十分优秀!