在同时也是 Tomcat JSP 应用服务器的服务器上对 Oracle 10g 进行性能优化?

在同时也是 Tomcat JSP 应用服务器的服务器上对 Oracle 10g 进行性能优化?

我继承了一个简单的 RedHat 5 - 64 位平台。

它具有 RAID1 上的 SCSI 磁盘,以及 16GB RAM。双核 CPU。

Oracle 10g,版本 2。

这或许是一个仅用于运行 DB 的不错的平台,但是“AA 模式”集群(非常简单)中的同一台服务器也运行 Tomcat,并且有多个 Java servlet 在其上运行。

遗憾的是没有缓存平台等。我们只使用外部 CDN 进行一些 html 缓存。

我个人比较熟悉LAMPP平台上的Web环境(apache,php,mysql,postgresql)。

问题:由于服务器同时运行 Tomcat JSP/Java 和 Oracle 10g,没有缓存,因此我经常遇到服务器宕机的问题。很不幸,这种情况经常发生。

问题:在提高所有这些不同应用程序的性能方面我有哪些选择?

  • 连接池?例如,在 Postgresql 世界中,我们有 PgBouncer,它确实很有帮助。Oracle 有类似的东西吗?或者是否有一个著名的基于 Java 的外部池,人们在生产环境中使用?(我不熟悉 Java)

  • 有像 MySQL 和 Postgresql 世界中那样的“SQL 缓存”吗?

  • 任何其他类型的应用程序缓存,如 PHP 世界中的“APC”或“eAccelarator”?

  • Java 世界中的“OSCache”东西(我在 Google 上找到的 JSP 东西:http://onjava.com/pub/a/onjava/2005/01/05/jspcache.html?page=2

...

还有什么?

抱歉,这是一个菜鸟问题。我在谷歌上搜索了好几次,但问题是我不知道什么除了上述广泛的一般概念之外,谷歌搜索的内容也很有用。因此,如果没有完整的答案,我甚至会很感激基本的指示,我很乐意亲自尝试。

谢谢!

答案1

我相信 Tomcat 提供了几种连接池选项,尽管 StackOverflow 可能是讨论这些可能性的更好的地方。

其余部分:

Oracle瓶颈和性能调优是一个广泛而复杂的领域,J2EE应用程序、容器和缓存也是如此。

有许多商业和开源工具应该有用,其中一些在识别可能的问题和教育用户方面大有裨益。Quest Software 的 Spotlight on Oracle 就是这样一种商业工具。Quest 还提供了 Performasure,我发现它是低级应用程序诊断的绝佳解决方案。http://www.quest.com/

Oracle 为其数据库平台提供了丰富的免费文档http://docs.oracle.comhttp://tahiti.oracle.com包括有关性能考虑和调整的书籍。

同样,IBM Red Series 包含免费书籍,涵盖从 Oracle、J2EE、Linux、存储到通用系统设计等任何方面相关的性能调整和瓶颈问题。http://www.redbooks.ibm.com/

虽然不是免费的,但《Oracle Database 10g Performance Tuning: Tips & Techniques》是一本很棒的入门书,如果您需要更好地了解 Oracle 数据库的基础知识,那么《Oracle Essentials: Oracle Database 10g》也是一本很棒的入门书。您可以在以下网址在线阅读这两本书http://www.safaribooks.com/我确实相信他们会提供免费试用。

一个好的开始,或者至少是任何好的开始,是弄清楚哪些系统资源紧张,谁在使用它们。CPU 负载高吗?如果是,是由等待 I/O 引起的吗?内存是如何使用的,内存不足是否会导致额外的 I/O?应用程序或数据库是否占用大量 CPU?数据库工作负载是否受 CPU 或 I/O 限制?不稳定是否与性能有关,或者系统上是否存在其他问题。回答几个基本问​​题至少应该能让你走上正轨。

答案2

您应该确保 Tomcat JRE 以服务器模式(而非客户端)运行。这应该在启动时显示,但并非总是显示。这应该与在 PHP 世界中使用 eAccellerator 的步骤相同 - Servlet 在加载时进行编译。

连接池显然是必要的。我认为没有池的应用程序不太可能。但最好检查一下。E

在 Web 应用程序中,我总是通过添加 HTTP-Header(Pragma cache、Expires)来强制缓存静态元素,从而获得巨大的改进。

如果您有能力改变编程,查看 SQL 计划(解释)总是有帮助的......它经常向我展示我缺少索引的地方。

当然还要实现常用元素的缓存......

另一个可以考虑的可能性是增加 Tomcat 的堆 (-Xmx....) - 如果 Tomcat 内存不足并开始垃圾收集,这可能会有所帮助。

“宕机”具体指什么?服务器变慢了或者崩溃了?

相关内容