优化 Apache 服务器负载

优化 Apache 服务器负载

我们的专用服务器负载存在问题。

如果我正确理解了 cat /proc/cpuinfo 的输出,我们有 16 个处理器,其中 4 核 @ 2.40GHz。

不幸的是,我无法访问 free -m 或 vmstat。

但从顶部我得知我们有 24 GB。

以下是关于流程的顶部快照: 顶部

据我所见,内存根本没有使用。但是 CPU 使用率很高。Apache 消耗了大部分 CPU。

另一条有用的信息:

每 1.0 秒:ps u -C httpd,mysqld,php Tue Mar 27 10:48:19 2012

用户 PID %CPU %MEM VSZ RSS TTY STAT 开始时间命令
root 7476 0.0 0.1 446808 37880 ? SNs Mar06 0:43 /opt/zone/sbin/httpd -D SSL -D SLOT_ID0 -f /etc/opt/zone/apache/ssl_httpd.conf
mysql 36061 41.6 2.1 1113672 529876 ? SNl Feb20 21503:48 /opt/zone/sbin/mysqld --basedir=/opt/zone --datadir=/srvdata/mysql --user=mysql --log-error=/srvdata/mysql/dn79.err --pid-file=/srvdata/mysql/mysqld.pid --socket=/tmp/mysql.sock --port=3306
root 37257 0.0 0.0 424056 16840 ? SNs Mar22 1:03 /opt/zone/sbin/httpd -f /etc/opt/zone/apache/httpd.conf -D SLOT_ID0
http 52743 0.0 0.1 447100 30360?序列号 10:40 0:00 /opt/zone/sbin/httpd -D SSL -D SLOT_ID0 -f /etc/opt/zone/apache/ssl_httpd.conf
http 52744 0.0 0.1 447100 30360?序列号 10:40 0:00 /opt/zone/sbin/httpd -D SSL -D SLOT_ID0 -f /etc/opt/zone/apache/ssl_httpd.conf
http 52745 0.0 0.1 447100 30360?序列号 10:40 0:00 /opt/zone/sbin/httpd -D SSL -D SLOT_ID0 -f /etc/opt/zone/apache/ssl_httpd.conf
http 52746 0.0 0.1 447100 30360?序列号 10:40 0:00 /opt/zone/sbin/httpd -D SSL -D SLOT_ID0 -f /etc/opt/zone/apache/ssl_httpd.conf
http 52747 0.0 0.1 446956 30324?序列号 10:40 0:00 /opt/zone/sbin/httpd -D SSL -D SLOT_ID0 -f /etc/opt/zone/apache/ssl_httpd.conf
http 52980 69.1 1.8 852468 458088 ?RN 10:41 5:02 /opt/zone/sbin/httpd -f /etc/opt/zone/apache/httpd.conf -D SLOT_ID0
http 53483 47.0 0.8 615088 221040 ?RN 10:43 2:05 /opt/zone/sbin/httpd -f /etc/opt/zone/apache/httpd.conf -D SLOT_ID0
http 53641 1.8 0.2 446580 54632 ? SN 10:45 0:03 /opt/zone/sbin/httpd -f /etc/opt/zone/apache/httpd.conf -D SLOT_ID0
http 54384 81.2 0.9 625828 229972 ?RN 10:45 2:14 /opt/zone/sbin/httpd -f /etc/opt/zone/apache/httpd.conf -D SLOT_ID0
http 54411 47.7 0.5 535992 142416 ?RN 10:45 1:09 /opt/zone/sbin/httpd -f /etc/opt/zone/apache/httpd.conf -D SLOT_ID0
http 54470 41.7 0.4 512528 120012 ?RN 10:46 0:54 /opt/zone/sbin/httpd -f /etc/opt/zone/apache/httpd.conf -D SLOT_ID0
http 54475 0.1 0.1 437016 41528?SN 10:46 0:00 /opt/zone/sbin/httpd -f /etc/opt/zone/apache/httpd.conf -D SLOT_ID0
http 54486 1.5 0.2 445636 53916 ? SN 10:46 0:02 /opt/zone/sbin/httpd -f /etc/opt/zone/apache/httpd.conf -D SLOT_ID0
http 54531 2.5 0.2 445424 53012?序列号 10:46 0:02 /opt/zone/sbin/httpd -f /etc/opt/zone/apache/httpd.conf -D SLOT_ID0
http 54549 0.0 0.0 424188 9188 ? SN 10:46 0:00 /opt/zone/sbin/httpd -f /etc/opt/zone/apache/httpd.conf -D SLOT_ID0
http 54642 0.0 0.0 424188 9200?序列号 10:47 0:00 /opt/zone/sbin/httpd -f /etc/opt/zone/apache/httpd.conf -D SLOT_ID0
http 54651 0.0 0.0 424188 9188 ? SN 10:47 0:00 /opt/zone/sbin/httpd -f /etc/opt/zone/apache/httpd.conf -D SLOT_ID0
http 54661 0.0 0.0 424188 9208 ? SN 10:47 0:00 /opt/zone/sbin/httpd -f /etc/opt/zone/apache/httpd.conf -D SLOT_ID0
http 54663 6.9 0.2 449936 58560 ? SN 10:47 0:03 /opt/zone/sbin/httpd -f /etc/opt/zone/apache/httpd.conf -D SLOT_ID0
http 54666 6.0 0.2 453356 61124 ? SN 10:47 0:02 /opt/zone/sbin/httpd -f /etc/opt/zone/apache/httpd.conf -D SLOT_ID0
http 54667 2.8 0.1 437608 42088?序列号 10:47 0:01 /opt/zone/sbin/httpd -f /etc/opt/zone/apache/httpd.conf -D SLOT_ID0
http 54670 1.5 0.1 437540 42172?序列号 10:47 0:00 /opt/zone/sbin/httpd -f /etc/opt/zone/apache/httpd.conf -D SLOT_ID0
http 54672 2.1 0.1 439076 43648?SN 10:47 0:01 /opt/zone/sbin/httpd -f /etc/opt/zone/apache/httpd.conf -D SLOT_ID0
http 54709 0.0 0.0 424188 9192 ? SN 10:47 0:00 /opt/zone/sbin/httpd -f /etc/opt/zone/apache/httpd.conf -D SLOT_ID0
http 54711 1.0 0.1 437284 41780?序列号 10:47 0:00 /opt/zone/sbin/httpd -f /etc/opt/zone/apache/httpd.conf -D SLOT_ID0
http 54712 11.8 0.2 448172 54700?序列号 10:47 0:02 /opt/zone/sbin/httpd -f /etc/opt/zone/apache/httpd.conf -D SLOT_ID0
http 54720 0.0 0.0 424188 9192?序列号 10:48 0:00 /opt/zone/sbin/httpd -f /etc/opt/zone/apache/httpd.conf -D SLOT_ID0
http 54721 0.0 0.0 424188 9188 ? SN 10:48 0:00 /opt/zone/sbin/httpd -f /etc/opt/zone/apache/httpd.conf -D SLOT_ID0
http 54747 9.1 0.2 443568 51848 ? SN 10:48 0:01 /opt/zone/sbin/httpd -f /etc/opt/zone/apache/httpd.conf -D SLOT_ID0
http 54782 1.8 0.1 438708 37896 ?RN 10:48 0:00 /opt/zone/sbin/httpd -f /etc/opt/zone/apache/httpd.conf -D SLOT_ID0
http 54784 0.0 0.0 424188 9180 ? SN 10:48 0:00 /opt/zone/sbin/httpd -f /etc/opt/zone/apache/httpd.conf -D SLOT_ID0
http 54785 0.0 0.0 424188 9188 ? SN 10:48 0:00 /opt/zone/sbin/httpd -f /etc/opt/zone/apache/httpd.conf -D SLOT_ID0
http 54789 0.0 0.0 424188 9188 ? SN 10:48 0:00 /opt/zone/sbin/httpd -f /etc/opt/zone/apache/httpd.conf -D SLOT_ID0
http 54790 0.0 0.0 424188 9188 ? SN 10:48 0:00 /opt/zone/sbin/httpd -f /etc/opt/zone/apache/httpd.conf -D SLOT_ID0
http 54791 0.0 0.0 424188 9188 ? SN 10:48 0:00 /opt/zone/sbin/httpd -f /etc/opt/zone/apache/httpd.conf -D SLOT_ID0
http 54792 0.0 0.0 424056 8352 ? SN 10:48 0:00 /opt/zone/sbin/httpd -f /etc/opt/zone/apache/httpd.conf -D SLOT_ID0

Webalizer 显示以下内容: Webalizer

以下情况该怎么办?应用程序是Magento。

答案1

您找错了对象。表面上看,是 Apache 占用了 CPU;实际上,是其他mod_php程序必须为您的Magento页面提供服务。

后者就是你的答案:Magento 确实是一个笨重的野兽。此时不要尝试优化 Apache,而要专注于你的 Magento 设置。如果你没有成功,也不要失望。在 Server Fault 中,许多人都尝试过,但成功的人并不多(就我所见)。笨重的软件就是笨重的软件。

答案2

除了 Janne Pikkarainens 的回答之外,我还想提出以下建议:

  • 在 magento 缓存文件夹上使用 tmpfs
  • 确保所有 magento 缓存都已启用(html、xml 等等)
  • 除非你有多个后端,否则将会话存储在 tmpfs 上
  • 使用 apc 作为 fast_backend (也可以选择使用 memcached 作为 slow_backend)
  • 考虑使用 varnish 来缓存部分或全部页面。

有关 Varnish 和 magento 的更多信息:

使用 ESI 的商业 Varnish 插件使用 AJAX 调用的另一种解决方案

答案3

您安装了 APC 吗?如果没有,那情况就大不一样了。

之后,如果我没记错的话,Magento 喜欢在它前面有一个缓存反向代理。在实现它之前,请检查它提供的缓存标头。

答案4

找到配置服务器的人然后枪毙他?

HTTP 调优可以写成一本厚书。但是看看您提供的信息...

对于网络服务器来说,大型机器浪费时间和金钱 - 您可以从多台低端机器获得更好的性能/可用性/价值。

为什么 httpd 的运行优先级异常高?为什么您的 ssh 会话的运行优先级低于 sshd?

您的 Apache 进程似乎占用了相当大的空间 - 您是否删除了不使用的模块?但是,看起来您最大的问题是 Apache 使用的 CPU 数量 - PHP 喜欢 CPU。而 magento 特别耗费 CPU。

但是考虑到您拥有的硬件数量,负载实际上并不算太糟糕。您说您有 16x4 处理器,但顶部屏幕截图仅显示 6 个进程使用了​​大量 CPU。您是想减少负载还是提高性能?前端还是后端?

在 Apache 前面放置反向代理将有助于提高性能(假设您已正确设置了内容的缓存和压缩)——在我看来,Varnish 或 nginx 非常有效。两者都提供 ESI 支持——但您需要对 Magento 进行一些更改才能支持这一点。除了以较少的努力处理静态内容的服务外,代理还可以更快地释放 httpd 资源并以较少的努力完成通过网络发送页面的过程。

您将会话数据存储在哪里?如果这是默认处理程序,那么您可能希望将其移至 memcache(couchbase 实现具有许多技术优势)。

检查您的 APC 统计数据以确保它有足够的内存来缓存大部分代码。

相关内容