B.3.1 如何确定问题的原因
当你遇到问题时,首先你应该做的是找到问题的原因是哪个程序或设备:
-
如果你遇到以下症状,那么可能是硬件问题(例如内存、主板、CPU或硬盘)或内核问题:
-
键盘不工作。这可以通过按下 Caps Lock 键来检查。如果 Caps Lock 灯不变,需要更换键盘。(在更换键盘前,应该尝试重新启动计算机并检查键盘到计算机的所有电缆。)
-
鼠标指针不移动。
-
机器不回应远程机器的 ping。
-
其他与 MySQL 无关的程序不正确地工作。
-
系统突然重新启动。(一个错误的用户级程序绝不能将系统关闭。)
在这种情况下,你应该首先检查所有电缆,并使用一些诊断工具来检查硬件!你也应该检查操作系统是否有补丁、更新或服务包,可以解决问题。检查所有库(例如
glibc
)是否是最新的。总是使用具有 ECC 内存的机器来尽早发现内存问题。
-
-
如果键盘被锁定,你可能可以通过从另一个机器登录到你的机器并执行
kbd_mode -a
来恢复。 -
请检查你的系统日志文件(例如
/var/log/messages
)以了解问题的原因。如果你认为问题是 MySQL 的,你也应该检查 MySQL 的日志文件。见第7.4节,“MySQL 服务器日志”。 -
如果你不认为你有硬件问题,你应该尝试找到问题的原因。尝试使用 top、ps、任务管理器或类似程序来检查哪个程序占用了所有 CPU 或锁定了机器。
-
使用 top、df 或类似程序来检查是否缺乏内存、磁盘空间、文件描述符或其他关键资源。
-
如果问题是某个 runaway 进程,你可以尝试杀死它。如果它不想死,那可能是操作系统中的错误。
如果你已经检查了所有其他可能性并确定 MySQL 服务器或 MySQL 客户端是问题的原因,那么是时候创建一个错误报告了,见第1.6节,“如何报告错误或问题”。在错误报告中,尽量描述系统的行为和你认为发生的事情。也state为什么你认为 MySQL 是问题的原因。考虑所有本章中描述的情况。state任何问题的描述如何出现的。使用 “copy and paste” 方法来复制和粘贴来自程序和日志文件的输出和错误消息。
尝试详细描述哪个程序不工作和你看到的所有症状。我们过去收到过许多错误报告,其中只写了 “系统不工作。”” 这种报告对我们没有任何信息。
如果一个程序失败,总是有用知道以下信息:
-
该程序是否出现了 segmentation fault(是否dumped core)?
-
该程序是否占用了所有可用的CPU时间?请使用top检查。让程序运行一段时间,它可能只是计算密集型的内容。
-
如果mysqld服务器出现问题,可以使用mysqladmin -u root ping或mysqladmin -u root processlist与其交互吗?
-
客户端程序在尝试连接到 MySQL 服务器时说了什么?(例如,使用mysql。)客户端是否卡住?是否从程序中获得任何输出?
在发送错误报告时,应该遵循第1.6节,“如何报告错误或问题”中的outline。