我需要帮助来优化我的 my.cnf 配置文件。我有两台服务器通过 LAN 网络(1 GBit/s)直接连接。第一台服务器是 Apache Web 服务器,第二台是 MySQL 服务器。
问题是 MySQL 服务器占用了大量的 CPU,导致我的网站变得非常慢。
我有大约 2500 个同时用户。
http://www.textdump.com/v/?k=NTc1Ng==
非常感谢您的帮助!
答案1
我总是mysqltuner
获取信息并建议 - 这是一个你可以在 github 上获取的 perl 脚本。
mysqltuner 项目页面的直接链接: http://blog.mysqltuner.com/
答案2
有了这么高的并发性,你真的应该研究一下memcached正确实施后,它可以大大通过缓存(在 RAM 中)经常访问的内容来减少数据库服务器的负载。
您还可以考虑启动一个或两个 mysql 从服务器。这样做的目的是,您所有的数据库读取都将指向从服务器,而写入将指向主服务器。当然,您能否做到这一点在一定程度上取决于应用程序代码及其对集群数据库系统的支持。
答案3
我支持 mysqltuner!
您可能希望首先使用 /usr/share/mysql 中的一个示例配置文件。根据可用的系统资源,有多个示例配置文件可供选择。将现有 my.cnf 中任何已自定义的选项集成到示例配置中。
关闭您不使用的存储引擎:
skip-bdb
skip-ndbcluster
skip-federated
skip-innodb
此时重新启动 mysql 并让其运行几个小时;以便获得代表性性能值。然后,按照之前的建议,下载并运行 mysqltuner。
除此之外,您可能还想在 Munin 或其他图形解决方案中配置 mysql 性能图形。如果没有这样的功能,很难知道 mysql 性能是否存在任何异常或长期趋势。
答案4
我会看看MySQL 的 Jet Profiler- 它会向您显示哪些查询使用了最多的 CPU(以及许多其他事情)并提出改进建议。