我有2个服务器运行1个网站。 服务器#1专用于Apache,将网站文件提供给Internet。 服务器#2专用于MySQL,将数据库提供给服务器#1。 千兆位以太网连接2台服务器。
我遇到的问题是服务器#2,当stream量高峰时,它会导致MySQL消失,我不得不重新启动MySQL,让事情重新上线。 当我们在网上达到太多的stream量时,网页只是挂起,每个人都得到一个数据库错误屏幕。
我认为my.cnf文件没有正确拨号,需要优化。
两台服务器都是相同的戴尔PowerEdge服务器,以下是规格:
http://www.day32.com/MySQL/有一个脚本,给你一些非常基本的调整参数。 你的错误日志说什么,服务器实际上崩溃? 是推动交换导致机器运行速度非常慢,但它会恢复?
不得不等待发布,serverfault认为我是一个机器人。
尝试增加最大允许的数据包大小并在服务器端等待超时值
也可能你的应用程序服务器试图连接到MySQL,但得到一个错误,如果有的话在一段时间内将被列入黑名单。 尝试执行mysqladmin flush-hosts而不是执行完全重新启动。 如果这有帮助,把命令放在一个crontab中,然后你就有时间调查一个问题,而不需要停止生产。 启用所有的客户端日志,并去。
(作为答案张贴,所以我可以使用格式)
发布以下内容:
grep -vE '^#' /etc/my.cnf for db in $(mysql -e 'show databases' | sed 1d); do mysql -e 'show table status' $db | awk '{print $2,$5}'; done mysqlreport
从http://hackmysql.com/mysqlreport获取mysqlreport,如果你不能得到它。
我怀疑MySQL中的max_connect_errorsvariables填满了。 默认情况下它只有10个,之后MySQL开始拒绝超过max_connect_errors值的特定服务器。
您可以使用SET GLOBAL max_connect_errors='10000'暂时增加该值,并永久放置
max_connect_errors = 10000
到你的/etc/mysql/my.cnf文件(或者你拥有它的地方)。
我猜你需要适当调整你的my.cnf。 MySQL的默认configuration是保守的方式。
一个可能会让你的MySQL变慢的常见错误是将你的key_buffer_size设置为低值,这是用于索引块的缓冲区的大小。 调整至less30%的内存或重新索引过程可能会太慢。
另一方面,通过激活slow_query_loglogging您的慢速查询。 这将logging所有运行时间超过2秒的查询(这也可以调整)。 然后,看看这个日志,看看哪些查询可以优化。 有时候,这只是创build索引的问题。
你也可以在你的MySQL shell中运行show processlist ,看看哪些查询不断出现。 这些查询也值得一些关注,因为它们可能被优化。
你也可能受益于MySQL查询caching。
在线有一些好的脚本可以帮助你调整你的MySQL服务器。 MySQL调谐器就是其中之一。 按照链接,你也会发现一些很好的提示和常见的错误。
希望这可以帮助!