大约一周前,我终于弄清楚了导致我的服务器持续崩溃的原因。
在检查了我的 mysqld.log 之后,我仍然看到同样的错误,
101210 5:04:32 [Warning] option 'max_join_size': unsigned value 18446744073709551615 adjusted to 4294967295
这是错误报告的链接,http://bugs.mysql.com/bug.php?id=35346有人建议你将 my.cnf 中的 max_join_size 值设置为 4M,我照做了。我以为这样就解决了问题,它运行了大约一周,没有任何问题,直到今天……
我检查了 MySQL,同样的错误又出现了,
101216 06:35:25 mysqld restarted
101216 6:38:15 [Warning] option 'max_join_size': unsigned value 18446744073709551615 adjusted to 4294967295
101216 6:38:15 [Warning] option 'max_join_size': unsigned value 18446744073709551615 adjusted to 4294967295
101216 06:40:42 mysqld ended
有人知道我该如何解决这个问题吗?我不能再让 mysql 像这样崩溃了。
编辑:我忘了说,每次发生这种情况时,我都会收到一封来自 linode 的电子邮件,说我的磁盘 io 速率很高
您的 Linode 磁盘 io 速率已超过通知阈值 (1000),过去 2 小时的平均值为 2483.68。
答案1
对于 linode 向您发送电子邮件,告知您的 IO 阈值超过两个小时,我认为是某些原因导致磁盘 IO 过多。您的内存是否不足或过程中出现其他类似问题?在 Linode 等 VPS 系统上,磁盘 IO 过高通常是由于内存不足和正在进行交换造成的。可能正在调用 OOMkiller,从而杀死 mysql。dmesg 是否显示任何有关 oomkiller 的信息?
答案2
当您说服务器崩溃时——您到底是什么意思?
您的意思是系统重新启动或挂起(变得无响应并且必须重置/关闭电源)?
或者您只是说 MySQL 崩溃了 — — 如果是这样,您是指没有 MySQL 进程正在运行还是所有 MySQL 进程都对查询没有响应?
当发生这种情况时,系统控制台上是否会出现任何内容?
我认为 MySQL 警告与该问题无关 - 我读了您列出的错误报告后发现,它不会导致 MySQL 崩溃,更不用说导致系统崩溃了。
答案3
警告只是一个警告。我不认为这是你的问题。尝试增加 mysql 的日志记录。当你达到 IO 阈值限制时,Linode 是否可能会开始拒绝你的 IO 请求,这会导致 mysql 崩溃或结束?