Eth*_*man 14 java language-agnostic profiling visualvm production-environment
我正在尝试使用大型复杂的tomcat java Web应用程序解决性能问题.目前最大的问题是,内存使用量不时出现峰值,应用程序也无法响应.我已经修复了我可以使用日志分析器和日志文件的贝叶斯分析修复的所有内容.我正在考虑在生产tomcat服务器上运行一个分析器.
温柔敏感的读者注意事项:
据我所知,有些人可能会发现将生产应用程序分析为冒犯的概念.请放心,我已经用尽了大部分其他选择.我考虑这个的原因是我没有资源在我的测试服务器上完全复制我们的生产设置,而且我无法在我的测试服务器上引起感兴趣的失败.
问题:
我正在寻找能够在tomcat上运行的java Web应用程序,或者以语言无关的方式回答这个问题的答案.
Tod*_*lin 13
OProfile及其祖先DPCI是为分析生产系统而开发的.这些开销非常低,它们可以分析整个系统,包括内核,因此您可以在VM 以及内核和库中发现性能问题.
回答你的问题:
开销:这些是采样分析器,也就是说,它们以某个固定间隔生成定时器或性能计数器中断,并且它们会查看当前正在执行的代码.他们使用它来构建您花费时间的直方图,并且对于合理的采样间隔,开销非常低(1-8%是他们声称的).
请看一下OProfile的采样频率与开销的关系图.如果默认值不符合您的喜好,您可以调整采样频率以降低开销.
生产中的使用:使用OProfile的唯一警告是您需要在生产机器上安装它.我相信自RHEL3以来Red Hat的内核支持,我很确定其他发行版支持它.
内存:我不确定OProfile的确切内存占用量是多少,但我相信它会保留相对较小的缓冲区并偶尔将它们转储到日志文件中.
Java: OProfile包括支持Java的分析代理,并且知道在JIT中运行的代码.因此,您将能够看到Java调用,而不仅仅是解释器和JIT中的C调用.
Web应用程序: OProfile是一个系统级的分析器,因此它不知道Web应用程序可能具有的会话,事务等内容.
也就是说,它是一个完整的系统分析器,所以如果你的性能问题是由操作系统和JIT之间的不良交互引起的,或者如果它出现在某些第三方库中,那么你将能够看到它,因为OProfile配置文件内核和库.这对于生产系统来说是一个优势,因为您可以捕获由于配置错误或生产环境的细节而导致的问题,这些问题可能是测试环境中可能不存在的.
VisualVM:不确定这个,因为我没有使用VisualVM的经验
| 归档时间: |
|
| 查看次数: |
4282 次 |
| 最近记录: |