Apache/Tomcat 参数

Apache/Tomcat 参数

我在 EC2 上有一个中型服务器。我对 Apache 或 Tomcat 了解不多——它们已经启动并运行,但除此之外,我对如何进行修改没有深入的了解。我知道我可以设置 Tomcat 服务器的最小/最大 JVM 大小,并且可以设置 Apache 可以分叉的线程数,但我不知道这些参数的“合理”值是多少。

  1. 我知道答案是主观的,但我应该从哪些常见的设置开始呢?
  2. 是否有一种简单的方法来加载/性能测试我的应用程序?

谢谢。

编辑:

该系统是EC2 Medium:

高 CPU 中型实例:

  • 1.7 GB 内存
  • 5 个 EC2 计算单元(2 个虚拟核心,每个核心有 2.5 个 EC2 计算单元)
  • 350 GB 实例存储
  • 32 位平台
  • I/O 性能:中等
  • API 名称:c1.medium

我唯一运行的服务是 Apache 和 Tomcat。服务器上没有其他任何东西。

答案1

阿帕奇

查看 Apache 自己的文档,它比我在这里提供的更详细:

http://httpd.apache.org/docs/2.0/misc/perf-tuning.html

JVM

将 JVM 的 Xmx 设置为不超过总可用物理 RAM 的 70%(大约)。这样做的原因是 perm gen 和 JVM 库也会占用额外空间 - 目的是使总进程内存永远不会使用虚拟/交换内存。如果将其设置得太高,您将开始看到“超出 GC 开销限制”之类的问题。

您的 GC 算法会对性能产生很大影响 - 确保您使用某种形式的并行收集器,而不是串行的“暂停、标记和清除”。 JVM 通常会在-server模式下自动为您执行此操作。

使用 JConsole 或 JVisual VM 等工具检查 GC 以及您实际使用的堆量,并进行调整以适应 - 过大的堆会影响垃圾收集时间。

雄猫

至于 HTTP 连接器线程,在 Tomcat 的单个实例上,根据您的应用程序,您通常可以在遇到问题之前将线程数增加到大约 600 - 但是,通常不需要那么高 - 您只会对 CPU 和内存施加更大的压力。

一旦你对最大线程数感到满意,我就会设置与此相关的minSpareThreadsmaxSpareThreads。如果我知道新连接数会激增,我就会提高这些值。

接下来acceptCount。这是最大排队连接数 - 使用完连接器线程后超出此设置的连接将收到“连接被拒绝”的消息。

只需稍作调整,即可将enableLookups(允许 DNS 主机名查询)设置为 false。启用后,会(略微)对性能产生不利影响。

另外,请查看 Tomcat Native Library,它使用本机代码来提高某些操作(如文件 IO 等)的性能。

负载测试

对于基本的负载/性能测试,请查看 Apache JMeter:

http://jakarta.apache.org/jmeter/

我们用它来测试基本的页面加载性能,JMeter 测试脚本使用了数百个并发请求。不过,您需要一个相当强大的服务器来运行它(不是在运行 Apache HTTPD 和 Tomcat 的同一台机器上)。

答案2

堆,我最初会设置 ms=mx=1GB。如果你的应用程序内存占用很大,则设置为 1.5。我从未发现在服务器环境中使用可变堆大小有什么意义(或好处)。

线程池大小是一章的内容。我在这里主要讨论 Tomcat。

如果您的应用程序有很多同步部分(共享缓存、外部资源/仅具有串行访问的集成等),工作线程的收益就会递减,因为线程越多,它们等待彼此所花费的时间就越多。根据您的规格,并且对您的应用程序一无所知,我会说 50 作为线程池大小的起点。您需要运行一些性能基准测试才能正确调整这一点。例如,使用 jmeter,并创建一个测试脚本来模拟您网站上的一个或几个主要用例。使用 2 或 3 个临时 EC2 实例作为负载生成器(您只需在短时间内使用它们),在其中运行 jmeter-server 应用程序。

运行测试场景,例如,60、120、180 和 240 个 jmeter 请求线程以及 30、50、70 和 90 个 tomcat 工作线程。比较服务器上的响应时间以及 CPU 和内存使用情况。对于基本的 CPU/内存信息,您可以使用 JVM 中的标准 jconsole 或 visualvm 信息。您还可以使用详细垃圾收集(GC 日志记录)运行 tomcat JVM,并使用类似tagtraums GC 查看器

答案3

合理的起始值是新大小(Xms)占总堆大小(Xmx)的 25%

我建议您根据峰值负载分析您的应用程序,并使用 LambdaProbe 或类似工具观察内存利用率,看看需要更改哪些内容

相关内容