【问题标题】:Java application Performance issueJava 应用程序性能问题
【发布时间】:2015-11-05 22:57:09
【问题描述】:

手头的问题:

我有一个 java 应用程序,它在 DEV 和 QA 服务器上运行的时间是在我的本地计算机上运行的时间的两倍。在 Dev 和 QA 上运行工作时,我的时间大约是 1:45 – 2:30 (hh:MM),而我的本地时间大约是 0:45 – 1:10。 我正在尝试确定可能导致服务器上的 Java 应用程序性能下降的原因。

到目前为止,我所调查的都没有提供答案:

  1. 使用相同的 maxheap 大小进行测试
  2. 观察 CPU 压力。在运行批处理应用程序时,开发人员大约有 75% 的时间处于空闲状态,因此我认为这不是问题。
  3. 在 Dev 上观察 ram。 Dev 有足够的内存来为 JVM 提供指定的 maxHeap (128mb)。如果我理解正确,机器的可用内存并不重要,只要机器可以提供正确的 MaxHeap 大小?
  4. 确保 java 的版本不会导致问题。
  5. 设置日志级别相同:“INFO”
  6. 处理器:服务器有 2.67GHz 处理器,我的本地只有 2.19GHz

附加信息。

  • 服务器操作系统:Linux
  • 本地计算机操作系统:Windows
  • 单线程 Java 应用程序。
  • 应用程序正在读取和写入文本文件并且还有调用 到数据库(休眠 c3p0)。这些是我最/唯一昂贵的操作

我已经搜索了数十个网站以确定根本原因,但我无法确定导致问题的原因,任何帮助将不胜感激。

【问题讨论】:

  • “75% 空闲”是指一个核心以 100% 运行而另外三个空闲,还是真的意味着测试负载只消耗了 25% 的可用 CPU 资源?跨度>
  • 如果测试负载确实只使用了它可能使用的最大 CPU 的一小部分,那么它可能会因 I/O 而变慢。
  • @JohnBollinger 后者“负载仅消耗了可用 CPU 资源的 25%?”这是一个共享服务器,所以我的应用程序加上服务器上的其他人加起来只使用了 25%。不确定这是否重要,但我的应用程序正在读取和写入文本文件,并且还调用了数据库。这些是我最昂贵的手术
  • 不同型号的 CPU 即使运行在相同的 GHz 下也有不同的性能。我建议你看看实际的 CPU 型号。

标签: java linux windows performance


【解决方案1】:

应用程序正在读取和写入文本文件,并且还调用了数据库(hibernate c3p0)。这些是我最/唯一昂贵的操作

很可能您的服务器对其正在使用的数据库的访问速度较慢。例如如果您要在同一台机器上运行数据库,它可能比通过网络快得多。我会看看在本地和您的服务器上执行一些简单的休眠操作所需的时间。如果性能是一个问题,我建议您考虑删除休眠甚至您的数据库,您的程序运行速度可以提高 10 倍 - 100 倍。

【讨论】:

  • 或者,如果它正在读取和写入的文本文件位于网络文件系统上,那么这也会产生重大影响。特别是当应用程序在 OP 自己的机器上运行时它们是本地的。
【解决方案2】:

我正在尝试确定导致服务器上 Java 应用程序性能缓慢的原因

我正在测试的服务器恰好位于 DMZ(网络外部)中。虽然数据库和我的本地计算机(在办公室工作时)在网络内。 这是我未能评估的情况。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2020-04-04
    • 1970-01-01
    • 2015-03-31
    • 2012-08-22
    • 2018-07-18
    • 1970-01-01
    • 2012-08-24
    • 2020-08-26
    相关资源
    最近更新 更多