and*_*szs 30 optimization performance apache-2.2
我正在运行一个流量密集的网站,其中包含大量动态内容,主要是用户生成的。
该服务器是专用服务器,共有 4 个 Intel(R) Xeon(R) CPU X3210 @ 2.13GHz 处理器。我需要知道 ServerLimit 和 MaxClients apache 指令的最佳值,考虑到服务器有 4GB 的 RAM 并且 MySQL 数据库在单独的服务器上运行。该面板是带有 CentOS 的 DirectAdmin。
下面是我当前的指令,但在超过 5k 用户的高峰时段,注意到一个重要的延迟 - 这不完全是 MySQL 的错,因为页面似乎生成得很快(我实现了一个页面生成时间计数器),但是有很长的时间连接延迟,直到页面开始响应并发送到浏览器。
<IfModule prefork.c>
StartServers 800
MinSpareServers 20
MaxSpareServers 60
ServerLimit 900
MaxClients 900
MaxRequestsPerChild 2000
</IfModule>
Timeout 90
KeepAlive On
KeepAliveTimeout 5
Run Code Online (Sandbox Code Playgroud)
我应该提到使用 top 命令监控服务器,CPU 使用率在高峰时段永远不会超过 20% ~ 30%。MySQL 服务器当时也有 30~50% 的使用率,我一直在努力修复慢查询,但这是一个不同的问题。我知道这不是数据库瓶颈,因为静态页面在高峰时段也需要很长时间才能加载。
任何优化这些值的提示将不胜感激,谢谢。
top*_*gon 25
您的 MaxClients 太高了。您的 apache 进程的当前大小是多少?乘以 x 900。是否大于 4GB?如果是这样,机器很可能会进入交换状态。我通常从包装盒中的 MaxClients = 2x vCPU 开始(grep -c 处理器 /proc/cpuinfo)。在这种情况下大约是 8。然后确保 MaxClients x apache 进程大小不超过 4GB。
您可以从那里启动 MaxClients,具体取决于您的客户端拥有的连接类型。(拨号用户需要用勺子喂食等)但请确保您永远不会陷入交换状态。
然后将您的 Min、Max 和 Start 服务器设置为 MaxClients。在专用服务器环境中没有必要让它们有所不同。
然后用 ab 做一些测试(如鹅绒笔记。)
小智 5
我建议使用 apache 的基准测试 (ab) 工具。您可以使用这些值来将它们与您的流量相匹配,并查看就平均加载时间等而言您得到的响应类型。在这一点上,您可以尝试使用您正在谈论的设置来尝试优化它们。您应该能够使用 ab 来处理每个性能调整的最佳性能。
对我来说谈论您的设置并不是明智之举,但是您还需要考虑到您的 RAM,因为听起来您使用这些设置占用了大量 RAM。虽然这只是猜测,没有任何数据。htop 为您提供了对资源的良好视觉阅读。
此外,您的平均负载可以说很多。我怀疑您的使用率是否远高于 20-30% cpu 的内核总数,但这是您的服务器实际工作强度的另一个指标。
您需要获取 apache 进程的平均大小。使用此数字和 RAM 的总大小,您可以计算 MaxClients 指令。记住这一点:“网络服务器永远不必交换”(Apache 性能调优)
使用 top 或 htop 进行监控是可以的,但是您需要使用一些监控工具(如 ganglia 或 munin)更好地查看服务器的所有统计信息(cpu、ram、磁盘 i/o、apache 请求、mysql 慢查询等...)找到可能的瓶颈。
| 归档时间: |
|
| 查看次数: |
76575 次 |
| 最近记录: |