【发布时间】:2012-07-10 22:46:01
【问题描述】:
我意识到这个问题非常笼统,我正在寻找有关如何协调 linux (RedHat 5) 与 Windows (2008 Server) 上的性能差异的非常一般的输入。我有一个 java 应用程序,它是多个服务的集合,这些服务正在处理来自线路的 netflow 数据包,在完全相同的硬件上,它似乎在 Linux 和 Windows 上以大约一半的容量执行。该应用程序涉及从套接字中提取数据包,并对它们执行一些非常简单的处理,并写出一个压缩的输出文件以由不同的 C++ 应用程序在下游进行处理。
计划中的相关领域: 从套接字中拉出数据包 数据库访问(mysql 5.1.45) 大量的文件 i/o
就优化而言,我对 Linux 的经验很少,如果有人能指出一些在尝试针对不同于 Windows 的 Linux 进行优化时需要注意的事项,那就太好了。
另外,我不完全确定我还能提供哪些其他信息。就像,我知道我没有提供很多有用的信息,我很感激能指出我正确方向的问题。
是否有提供跨 Linux 和 Windows 的 Java 性能基准测试的实用程序?
如果这个问题没有意义,或者我提供的信息太少,甚至无法提出有用的问题,请随意击落我。
谢谢!
编辑: 所有 jvm 设置都是相同的(在两种情况下,我们对所涉及的服务使用完全相同的包装器配置文件)
编辑: 我想暂时提出这个问题。除了运行一个基本的分析器和比较结果之外,我已经无法花更多的时间来探索这个了。 linux 和 windows 上的结果看起来几乎相同,除了从 NIC 中提取数据包的延迟要大得多。我仍然不明白为什么会这样,或者这是与其他网络状况有关的异常情况。当我有时间再看这个时,我会发布更多。
感谢大家的回答!
【问题讨论】:
-
你用的是 NIO 还是 java.io.File 你都试过了吗?
-
是的,我正在使用 NIO。我们在切换到 NIO 之前尝试了 java.io.File,这是在需要 Linux 支持之前。
-
同一个网段和交换机?不同的网卡规格?
标签: java windows linux sockets