我对服务器问题还比较陌生,我今年年初创建的一个网站已经超出了我的管理能力。我需要帮助。
我最近从共享托管环境移到了 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 显示您超出了内存限制,您可以采取一些措施。
- 升级您的托管包,以便它拥有更多资源。
- 使用轻量级 Web 服务器(例如 lighttpd 或 nginx)替换 apache。
- 参考mysql自带的my-small.cnf文件,配置mysql使用更少的资源。
- 配置您的应用程序以使用更少的内存(例如 PHP 中的 memory_limit)。
有各种教程可以展示如何为各种小型 VPS 选项配置轻量级类似 LAMP 的堆栈。
答案4
我知道这是一个很老的问题,但我认为以下内容会很有用:
如果是 MySQL 服务器调优问题,我会使用http://tools.percona.com 这是一项免费服务,只需注册、登录、填写服务器详细信息,它就会为您提供需要合并到 my.ini 文件中的设置
我已经看到了性能改进,例如,原来需要 20 分钟的导入经过调整后可以在 7 秒内执行。