Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/319.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Oracle Exadata上的Java应用程序_Java_Performance_Oracle_Exadata - Fatal编程技术网

Oracle Exadata上的Java应用程序

Oracle Exadata上的Java应用程序,java,performance,oracle,exadata,Java,Performance,Oracle,Exadata,出于离题的原因,一家公司购买了Exadata第八机架。一些经理认为这将提高当前应用程序的性能。问题是,几乎没有任何应用程序能够进行密集的数据库工作(是的,现在是查看facepalm动画GIF的好时机)。因此,目前,事实证明迁移几乎没有什么好处 问题是显而易见的。大多数应用程序都是用Java编写的,其中一些应用程序大量使用Solr和Cassandra。据我所知,Exadata用于存储数据,而Exalogic也可以保存应用程序。无论如何,我想知道是否有某种方法可以利用上述基础设施。将Solr替换为

出于离题的原因,一家公司购买了Exadata第八机架。一些经理认为这将提高当前应用程序的性能。问题是,几乎没有任何应用程序能够进行密集的数据库工作(是的,现在是查看facepalm动画GIF的好时机)。因此,目前,事实证明迁移几乎没有什么好处

问题是显而易见的。大多数应用程序都是用Java编写的,其中一些应用程序大量使用Solr和Cassandra。据我所知,Exadata用于存储数据,而Exalogic也可以保存应用程序。无论如何,我想知道是否有某种方法可以利用上述基础设施。

将Solr替换为

在我被否决之前:通常情况下,我不会建议用一个很少使用的专有产品来替换用流行的开源程序构建的现有代码。但是,如果您想在数据库服务器上使用大量空间和CPU,那么Oracle文本肯定会有所帮助


更一般的建议是,数据库的主要作用不是存储数据。文件系统可以做到这一点。数据库是为了连接数据而构建的。如果应用程序正在读取大量数据并执行临时联接,则这些作业就是要移动到数据库的作业。

Exadata->Oracle database extreme performance。 Exalogic->Fusion中间件的卓越性能。(这里是Java)

您最好的做法是重构应用程序,以便在DB(PL/SQL)上尽可能多地增加工作负载

另一件事我可以想到,但这将是一个激进的方法,我从来没有真正尝试过它自己(是的,我也与Exadas工作)也许你可以给它一个机会,让我们知道在这里


在Exadata的RAM上使用所有这些GBs并开始调整Java应用程序的延迟怎么样?我的意思是,有了这么多可怕的内存,您可以尝试设置一个非常好的堆,避免垃圾收集引起的延迟。如果您真的尝试了这个方法,请务必让我知道结果。

Java应用程序使用哪种协议连接到Oracle

如果不是IPC(进程间通信,又名遗留,又名共享内存),但可能是TCP和您有许多快速和微小的往返,那么这将是您的低挂果实-消除网络堆栈


edit:刚刚意识到默认情况下exadata不能运行java应用程序(只有ODA能运行),因此无法使用IPC。但是,也许您可以使用以前的基础结构在您的一个应用程序中测试IPC的影响?

Exadata无法承载任何客户应用程序。你不能在那里安装任何东西。您只能在Exadata上托管Oracle数据库。 这意味着您可以使用数据库功能,如DBFS(Oracle数据库上的文件系统)、Java选项(在数据库中存储和执行Java代码)。但您需要检查您拥有哪些选项的许可证。并且使用内部JVM,无法自定义或升级


Exadata是一种数据库设备,旨在以非常有效和可管理的方式处理大量不同访问方式的数据。

对不起,我不理解你的想法。Java应用程序如何可能使用所有RAM?Java堆,当您使用Xmx和Xms启动JVM时,它是有限的,Exadata有大量内存,所以基本上使用它。设置一个巨大的堆大小,并对其进行调整,让老世代占据大部分,大伊甸园和幸存者空间可能会伤害你,因为它们是标记副本压缩。然而,让老一代更大,你实际上可以用几个老一代的集合来交换一些长的,也许你的应用会有一些改进。然而,这只是一个疯狂的想法,无论如何,在Exadata上为Java做不了多少事情。请务必让我知道它是否能正常工作:)Sinuhepop这是您的答案抱歉:因为Java就是这样工作的,所以您可以得到一个自动内存管理系统。Java堆在创建对象时变满。如果您有infite内存,您的应用程序可以永远运行实例化对象,并且您永远不需要运行垃圾收集:)。基本上,这个想法是尝试为Java堆提供它所能获得的所有内存,以降低垃圾收集率。希望这能清楚地说明sinuhepop:)我能想到Java应用程序在Exadata中的一些优势(低延迟、大量RAM和高性能处理器)。但问题是我不知道如何在Exadata中安装它们:(他们还有收据吗?@flup:可能是最近的。为什么?最好的办法不是用它换一台更合适的机器?@flup:AFAIK,这是不可能的。谢谢!@sinuhepop如果你实现了这一点,让我知道结果如何。