【发布时间】:2014-03-20 17:01:58
【问题描述】:
我构建了一个 java 程序,它连接到本地服务器并提取信息,然后将其放入 mysql 数据库(使用 jdbc 和准备好的语句)。该程序还创建了许多线程来执行此操作。在我的 Mac OSX 上的编程环境中,它使用单个 2.3 GHz 处理器以极快的速度运行。我现在已经把它移到了 VPS,安装了 mariaDB,VPS 有 3gb 的内存和 2 个 2.4ghz 处理器,但它的运行速度比我的 mac 慢。我能做些什么来解决这个问题?我在 linux 上安装了替代 JVM,我使用了 visualVM 来优化它。我似乎无法弄清楚为什么在我的 Mac 上创建这些线程的速度如此之快,而在此 VPS 上运行其他程序时却非常慢。
任何帮助或指导都会有很大帮助!
【问题讨论】:
-
我看到 VPS 的拖累是由于 I/O 等待时间长。我不知道如何解决这个问题,但也许可以与主机讨论,如果那是困扰您的 VPS 的原因。运行“top”并查看标题上的 0.0%wa 值。它应该是非常低的数字,如果健康时不是 0.0。无论应用程序是否运行,我都会这样做。
-
在两台机器上运行单线程和多线程 Java 基准测试,以确保 VPS 确实具有更高的性能。
-
@MichaelFord 它在 30% 范围内,应用程序正在运行。 MariaDB 的 I/O 等待时间不是吗?所有这些 java 程序都是数据库和其他程序之间的桥梁,因此它不会向 I/O 写入任何内容。 mariadb 在这种环境中运行良好。
-
@AlexeiKaigorodov 是 VisualVM 进行基准测试的好方法吗?
-
只需运行 SPECjvm2008 或其他基准测试。站点en.wikipedia.org/wiki/Java_performance 有很多有用的链接。
标签: java mysql linux multithreading mariadb