Apache 每 5 分钟崩溃一次

Apache 每 5 分钟崩溃一次

我对服务器问题还比较陌生,我今年年初创建的一个网站已经超出了我的管理能力。我需要帮助。

我最近从共享托管环境移到了 Mediatemple 的专用虚拟服务器。

每周,我都会运行一个脚本,从我的数据库中获取数据,从 last.fm 的 API 中获取数据,然后将信息发布到 Twitter。

我的服务器使用 Virtuozzo,当脚本运行时,Apache 每 5 分钟崩溃一次。我检查后发现“kmemsize”参数已达到上限(13mb)。

我意识到我的问题了。MySQL 进程长时间保持打开状态,而 Apache 需要处理大量传入链接(根据我之前的主机的 AWSTATS,当天的页面浏览量约为 200 000)。是的,我在这方面相当缺乏经验,而且我显然因为传入链接过多而导致服务器崩溃,而服务器必须管理数据库的更新。

这就是先例:我想要一些答案。

1) 为什么我的共享主机环境没有每 5 分钟就让 Apache 崩溃一次?它运行良好,只是网站速度慢了很多。显然,这一定是虚拟容器和 kmemsize 限制的问题?

2) 我该怎么做?物理服务器(而非虚拟容器)会遇到同样的问题吗?


我也向 Mediatemple 发送了支持请求。我需要所有可能的帮助。

答案1

这可能就像调整 mySQL 一样简单。

您的旧主机/服务器可能有一个独特的 /etc/my.cnf 文件而不是普通文件。

从一些基本的 MySQL 监控开始 - 以下一些工具可能会有所帮助:

top、mtop 和 innotop

(top 是 Linux 中的默认设置) mtop -http://mtop.sourceforge.net创新顶峰 -http://innotop.sourceforge.net

您也可以通过命令行(cli)使用 MySQL 监控工具

mysqladmin 进程列表 / mysqladmin proc

遗憾的是 - 许多人会使用 /usr/share/mysql 下提供的默认模板

我强烈建议跳过它们——它们已经很旧了,不值得使用,原因如下:

某些操作系统或 MySQL 版本的设置无效(例如,thread_concurrency 和 skip-locking)添加了您可能不了解它们是什么的巨大数组变量,根据其他设置测试它们的性能不仅仅是值得怀疑的,运行这些之后 - 并进行一些调整 - 让 mysql 运行至少 24-48 小时,然后使用以下诊断工具:

MySQL tuner(只需在 Linux 中输入 wget mysqltuner.pl 即可下载,然后 chmod755 mysqltuner.pl 并通过执行 ./mysqltuner.pl 运行它;-) mysqlidxchk(通过 wget hackmysql.com/scripts/mysqlidxchk-1.1 chmod 755 mysqlidxchk* mv mysqlidxchk* mysqlidxchk 安装)然后通过执行以下操作来运行:(./mysqlidxchk --general /var/lib/mysql/ general.log)如果您在安装这些时也需要帮助,请告诉我

PS-其中大多数都是仅适用于Linux的脚本-但对您的mySQL服务器的调整和管理将有很大帮助。

以及像 mysqlsla 和 mysqlreport 这样的良好日志解析工具用于状态报告

您是否偶然使用了控制面板?

答案2

vzctl 设置 101 --kmemsize 2211840:2359296 --保存

尝试一下,它会增加 kmemsize

答案3

VZ 技术的工作方式是限制各种资源。如果您的 beancounter 显示您超出了内存限制,您可以采取一些措施。

  1. 升级您的托管包,以便它拥有更多资源。
  2. 使用轻量级 Web 服务器(例如 lighttpd 或 nginx)替换 apache。
  3. 参考mysql自带的my-small.cnf文件,配置mysql使用更少的资源。
  4. 配置您的应用程序以使用更少的内存(例如 PHP 中的 memory_limit)。

有各种教程可以展示如何为各种小型 VPS 选项配置轻量级类似 LAMP 的堆栈。

答案4

我知道这是一个很老的问题,但我认为以下内容会很有用:

如果是 MySQL 服务器调优问题,我会使用http://tools.percona.com 这是一项免费服务,只需注册、登录、填写服务器详细信息,它就会为您提供需要合并到 my.ini 文件中的设置

我已经看到了性能改进,例如,原来需要 20 分钟的导入经过调整后可以在 7 秒内执行。

相关内容