领先一步
VMware 提供培训和认证,以加速您的进步。
了解更多几周前,Filip Hanik 和我举办了关于优化和调整 Apache Tomcat 的网络研讨会系列中的第二场。您可以在 SpringSource 网站的网络研讨会部分 获取网络研讨会的录制和幻灯片的副本。同一页面还提供了所有以前的 SpringSource 网络研讨会的链接,以及 Covalent 网络研讨会档案。
在问答环节中,我们没有时间回答所有问题,因此,正如承诺的那样,以下是剩余问题和我们的答案。
您几乎肯定需要使用分析器来识别内存泄漏的根本原因。最新的 Sun JDK 包括 诸如 jhat 和 jmap 之类的工具。还有许多其他分析器可用,包括免费和商业分析器。Filip 和我使用 YourKit 来调查 Tomcat 内存泄漏,因为 YourKit 为开源开发者提供免费许可证。
这通常发生在 Tomcat 加载的类保留对 Web 应用程序加载的类的引用时。当 Web 应用程序停止时,Tomcat 类加载器继续保留对 Web 应用程序加载的类的引用。此类保留对 Web 应用程序类加载器的引用,而 Web 应用程序类加载器又保留对其加载的所有类的引用。因此,Web 应用程序类加载器及其加载的所有类都不符合垃圾回收的条件。这会导致内存泄漏。这种情况的典型根本原因是 JDBC 驱动程序和日志记录框架。
要使用的 JVM 使用 JAVA_HOME(完整 JDK)或 JRE_HOME(仅 JRE)环境变量设置。正确设置此变量的位置将取决于您的环境,尤其是在 Tomcat 配置为在系统启动时自动启动的情况下。如果您有自由选择在哪里设置它,请根据您的操作系统使用 setenv.bat 或 setenv.sh。
不,我们没有。您选择的 JVM 供应商取决于您的操作系统。
我们推荐 mod_proxy_http,其次是 mod_jk。通常,mod_proxy_ajp 比 mod_proxy_http 或 mod_jk 不稳定。请注意,mod_jk2 已弃用,不应再使用。
使用 SSL 时,应启用 HTTP 保持活动,因为 SSL 握手对于每个请求来说都是一项相对昂贵的操作。
是的,我们建议不要使用。我们从客户那里得到的反馈是,APR 连接器在 Solaris 上不稳定。
在不知道您使用的确切错误或版本的情况下,很难发表评论。所有已知的 Apache httpd 问题以及当前状态都可以在 ASF Bugzilla 数据库 中找到。Tomcat 问题也可以在 Bugzilla 中找到。
对于高并发环境,将其设置为 1。否则,将其设置为页面上对象数量的平均值,范围在 10 到 100 之间。
JkOptions +DisableReuse 应与其他 mod_jk 设置一起放在 httpd.conf 文件中。
当您需要支持带有保持活动的高并发,并且 APR 不是选项时,例如因为它在您的平台上不稳定。
视情况而定。如果您将所有请求代理到 Tomcat,则性能会略有下降。如果 httpd 处理某些请求(例如所有静态内容),则您可能会看到一些好处。有一些基准测试试图证明一个连接器比另一个连接器更好。但是,这些基准测试不太可能代表您的应用程序。唯一确定方法是在您的环境中使用真实的负载和使用模式进行测试。
可以。这是否为您的环境提供最佳性能将取决于该环境和您的应用程序。与上一个问题一样,唯一确定方法是在您的环境中使用真实的负载和使用模式进行测试。
您安装的安全性将取决于许多因素。是否使用 Apache httpd 不太可能显着改变您安装的安全性。其他因素(例如及时更新补丁并使用防火墙)通常对您的整体安全级别有更大的影响。
与往常一样,这将取决于您的环境,但 httpd 性能调整文档 提供了一些有用的常规指南。
SpringSource ERS 不仅仅是 Apache Tomcat。从纯 Tomcat 的角度来看,性能不是区别因素。ERS 的优势在于简单的安装、易于管理的升级和修补、对多个实例的支持以及所有组件的集成。
会有很多差异,并且重要的差异会因组织而异。首先确定您希望从应用程序服务器中获得什么,然后将该列表与市场进行比较。合并有很多好处。更大的一致性意味着更简单的维护、更少的培训等等。但是,也存在成本。您需要查看您的组织以及它如何计划合并(仅限新项目、下一个主要版本的全部项目、现在的一切等等),以将成本与相关收益进行比较。
该领域已发布了各种报告。结果的有用性取决于测试与您的负载匹配的程度。与往常一样,唯一确定方法是在您的环境中使用真实的负载和使用模式进行测试。
Tomcat 没有将此作为配置选项提供。当然,您可以创建多个 Tomcat 实例,在每个实例上安装您的应用程序,然后跨实例进行负载平衡。
管理器状态页面 可能是一个不错的起点。您可以使用该 Servlet 的代码作为您自己更具体/更广泛检查的基础(如果需要)。如果您对其进行了增强,请考虑将您的增强功能贡献回 Apache Tomcat 社区。
默认位置位于 $CATALINA_BASE/conf 中。