我感觉我的 mysql 服务器在处理来自 PHP 网站的查询时比平时慢。
有什么办法可以为 Mysql 服务器分配更多资源以加快其运行速度吗?
我对此不太了解,所以需要你的帮助。
我在 Ubuntu 10 服务器上。
注意:如果上述问题看起来很愚蠢而且不切实际,那么NVM。:)。
答案1
尝试启用所有 mysql 缓冲区和缓存。此外,请确保服务器有足够的 RAM(我建议至少 6GB 内存用于少量查询)。下面您可以找到我添加到 my.cnf 的一些缓冲区:
密钥缓冲区 = 128M
连接缓冲区大小 = 5120K
innodb_buffer_pool_size = 8129M
密钥缓冲区 = 16M
最大允许数据包 = 64M
表缓存 = 2048
查询缓存限制 = 128M
查询缓存大小 = 512M
tmp_table_size = 128M
最大堆表大小 = 128M
另外,您还应该禁用反向查找。以下是配置的变量:
跳过名称解析
另外,修改您的 wait_timeout(如果没有进行查询,孩子应该存活多长时间):
等待超时 = 300
所有上述设置都需要根据您的配置进行微调,因此请不要直接复制/粘贴,因为可能会产生更糟糕的结果。完成所有这些设置后,使用 mysqlreport 监控所有内容(mysqlreport -u username --password=password)
答案2
根据您提供的信息,我理解您已经从 apt 安装了所有内容,因此没有运行任何特殊配置。
这让我开始思考哪个点更有可能成为瓶颈。无意冒犯,但可能是 php 代码,如果 apt repos 配置不当,就会有更多人遇到同样的问题。
所以,您需要做的是调试一下代码,但这并不好玩。
您可以尝试“mtop”,它是一个用于查看 mysql 服务器内部的“top”或“htop”工具,通过它您将能够知道哪些查询花费了更多时间。
另外,如果 mysql 位于不同的服务器中并且您不使用 dns,它通常会使您的查询时间增加 20 秒,这听起来很奇怪,但一个月前我就遇到过这种情况。
如果我所说的没有任何帮助,请再解释一下。谢谢。
答案3
您可以激活慢查询日志并从长时间运行的查询开始。我收藏了以下页面,即使它是德语的:http://techblog.tilllate.com/2006/12/23/optimierung-von-mysql-abfragen-der-slow-query-log/
mysqldumpslow slow.log -t 10 -s t
也许您运行这些查询的频率太高了?您可以使用 EXPLAIN 并查看是否应创建另一个索引以获得更好的性能。
有一篇关于mysql性能的博客:http://www.mysqlperformanceblog.com/
mysql 手册有一章专门讨论性能问题:http://dev.mysql.com/doc/refman/5.5/en/innodb-performance.html
答案4
首先,确保您运行的是 64 位而不是 32 位。其次,验证您的存储运行情况(I/O 等待)。如果您看到大量的 I/O 等待百分比,则可能需要改进您的存储子系统。(更好的控制器、更快的磁盘、RAID 等)第三,确保您已将日志写入不同的分区(磁盘),以便您可以隔离写入。