Centos/MySQL 服务器高负载

Centos/MySQL 服务器高负载

我目前运营着一个网站,每天的点击量约为 15,000-20,000。我们目前运营着一个非常活跃的论坛,该论坛使用 Vbulletin 软件托管。我们有 450 万个帖子、80,000 个主题,大约有 11,000 名成员,其中近三分之一一直处于活跃状态。现在,我运行的是 Intel Xeon 四核 (2.13Ghz),4GB RAM,Centos 5.5,并在机器上运行 DirectAdmin 来管理它。我还运行当前稳定版本的 Apache、MySQL 和 php。这是唯一托管在这台机器上的站点。现在,在一天中的随机时间,有时当服务器繁忙时,服务器负载可能会达到 20,但当我们只有 200 个活跃用户时也会发生这种情况。我不明白是什么导致了这些问题。有时我得到的页面可以在 0.2 秒内生成,而其他时候则需要 5-8 秒。我已经定制了 my.cnf 文件但没有任何帮助,我不知道还能去哪里,所以如果有人有任何建议请告诉我。

答案1

您是否有日志记录:
遗憾的是,许多人经常忘记查看日志来了解他们的问题。

我将从一些基本的监控、日志记录和诊断工具集开始。

  1. 顶部
  2. 顶部 http://mtop.sourceforge.net
  3. 创新 http://innotop.sourceforge.net
  4. MySQL 进程列表/mysqladmin proc
  5. MySQLTunerhttp://mysqltuner.pl
  6. MySQLidx检查: http://hackmysql.com/scripts/mysqlidxchk-1.1 (非常适合日志解析)
  7. MySQLSLA——MySQL 的状态报告:http://hackmysql.com/scripts/mysqlsla
  8. MySQLReport - http://hackmysql.com/scripts/mysqlreport(一款实用工具,可将 MySQL 的 SHOW STATUS 值解释为有关 MySQL 运行情况的详细报告)
  9. IOTOP/特区
  10. 您确定所有流量都是有效流量吗?可能需要仔细检查日志并确保流量有效。
  11. 所有连接 - 是否来自同一个 IP 地址?(比平时更多)使用它来检查有多少个连接来自 1 个 IP: netstat -ntu | awk '{print $5}' | cut -d: -f1 | sort | uniq -c | sort -n
  12. 你也可以使用 Mod_Evasive
  13. 根据您的发现 - 将 MySQL 移至另一台服务器
  14. 考虑负载均衡器——或者 Nginx,或者从 Apache 网络托管解决方案转移到另一个解决方案,如 Cherokee、Nginx 等……

如果这篇文章对你有帮助 - 为什么不投票呢:-) 祝福

答案2

除了 Glenn 的优秀清单之外,还有一些其他事项:

  • 检查“top”和“free”以确保您没有使用任何交换内存,因为这会降低您的性能。如果您发现您开始使用交换,那么请减少 Apache(主要减少 MaxClients)和 MySQL(所有各种缓存/缓冲区选项)的内存要求。
  • 如果论坛是 PHP,请确保您正在运行像 eAccelerator 或 APC 这样的操作码缓存。
  • 考虑使用 ab 或 siege 等工具测试网站的性能。这将为您提供服务器的当前功能,并允许您测试特定优化的效果。
  • 使用 top 查看哪些应用程序在高峰时段占用了 CPU。这将让您对从哪里开始优化有一个基本的了解。
  • 如果您要提供大量静态内容,请考虑使用更轻量的 Web 服务器(例如 lighttpd 或 nginx)。
  • 检查 MySQL 中的查询日志统计信息,确保它已启用并运行良好。如果您收到大量“LOW MEM Prunes”,请考虑为缓存使用更多内存(如果可以)。
  • 如果为 MySQL 而不是 Apache 分配更多内存,则可能会获得最佳性能。理想情况下,您希望活动记录集能够完全保存在 RAM 中,从而最大限度地减少磁盘访问。这不是数据库的总大小,只是每天通常读取的所有记录的大小。在 4GB 的机器上,我会确保 MySQL 总共至少获得 1GB。
  • 请注意,流量通常会激增,您的服务器不仅需要处理平均流量率,还需要处理流量峰值。不要陷入这样的境地:您的设置只能处理平均流量,但在流量高峰/激增时开始落后。然后,您将处于服务器努力跟上但越来越过载的情况。

仅从我自己的经验来看,只要配置良好并进行一些优化调整,您的服务器“应该”足以支持每天 20k 次浏览的网站。如果您通过一些工作理论上可以获得 10 倍或更多的浏览量,我不会感到惊讶。

相关内容