我有以下专用框,仅在上面安装了 apache httpd 服务器,我应该调整 httpd.conf 中的哪些参数才能获得最佳性能?
cat /proc/cpuinfo 显示 8 个处理器(下面仅粘贴一个,其他的都相同)
处理器:0 vendor_id:GenuineIntel CPU 系列:6 型号:23 型号名称:Intel(R) Xeon(R) CPU E5410 @ 2.33GHz 步进:6 CPU频率:2333.470 缓存大小:6144 KB 物理 ID:0 兄弟姐妹:4 核心 ID:0 CPU 核心:4 酸碱度:0 fpu:是 fpu_exception :是 cpuid级别:10 wp :是的 标志:fpu vme de pse tsc msr pae mce cx8 apic sep mtrr pge mca cmov pat pse36 clflush dts acpi mmx fxsr sse sse2 ss ht tm 系统调用 nx lm constant_tsc pni monitor ds_cpl vmx est tm2 ssse3 cx16 xtpr sse4_1 lahf_lm 博戈米普斯:4666.94 clflush 大小:64 缓存对齐:64 地址大小:38 位物理,48 位虚拟
免费-m
已使用的、可用的、缓存的共享缓冲区总数 内存:16054 15546 508 0 251 8084 -/+ 缓冲区/缓存:7210 8843 交换:16370 0 16370
答案1
一些可能对你有帮助的评论:
- 对性能影响最大的 Apache 设置是每个实例占用的内存(取决于加载的模块数量及其配置)和设置的 MaxClients/Servers 数量。如果 Apache 确实是服务器上唯一需要的东西,那么您通常希望消除任何不需要的模块,然后增加 MaxClients/Servers 以使用尽可能多的 RAM,但不要太多以至于开始使用交换。要确定这一点,您需要测试配置...
- 我强烈建议使用 ab/siege 或类似框架对应用程序进行压力测试。这将让您确定应用程序的最佳设置,并为您提供一些硬件功能的硬性数字。例如,您可能会发现,使用默认设置,您可以毫不费力地获得 500 个请求/秒,在这种情况下,花时间进行优化将大部分是浪费。另一方面,它可能会告诉您,您最多只能获得 20 个请求/秒,这意味着重新审视整个应用程序架构。
- 每次更改系统的配置、软件或硬件时,都要重新运行压力测试。这将告诉您所有事情会产生什么影响,并允许您做出更明智的决策来优化事物。如果您不测量/测试,则可能会花费大量时间/金钱去做一些没有效果的事情(或者更糟的是,实际上会产生负面影响)。
- 考虑对动态和代理/负载平衡部分使用不同的软件,尽管您的服务器足够强大,以至于可能不会有太大区别。
答案2
您应该考虑使用 HAProxy 或 nginx 作为代理/负载平衡器,Apache 在这方面并不擅长,因为它无法异步处理请求。Apache 根本不适合这种任务。使用支持异步 I/O 的代理/平衡器可以为您节省大量资源。而且您不需要这么大的服务器来代理/平衡每秒 100 个请求,我能够在 512Mb Rackspace Cloud 实例上使用 HAProxy 代理每秒大约 500 个请求(它使用四核 CPU,但此主机上的 LA 通常约为 0.1,所以我不需要那么多处理能力)。