A. 问题和常见错误 / A.1. 如何确定导致问题的原因

A.1. 如何确定导致问题的原因

当你遇到问题时,首先要做的是找出导致问题的程序和设备部件:

·         如果遇到下述征兆之一,或许是因为硬件问题(如内存、主板、CPU或硬盘)或内核问题:

1.    键盘不工作。正常情况下可通过按Caps Lock建进行检查。如果Caps Lock的点亮状态未改变,就需要更换键盘(在此之前,应尝试重启计算机,并检查与键盘相连的所有电缆)。

2.    鼠标指针不移动。

3.    机器未对远程机器的Ping命令做出应答。

4.    MySQL无关的其他程序工作不正常。

5.    系统意外重启(有问题的用户级程序应不能使系统出现严重问题)。

在该情况下,应检查所有的电缆并运行某些诊断工具,对你的硬件进行检查!此外,还应检查是否有能够解决问题的、适用于你的操作系统的补丁、更新或服务包。请检查所有的库(如glibc)是否是最新的。

使用配备ECC内存的机器以便尽早发现问题总是个好主意。

·         如果键盘已锁定,可从另一台机器登录到你的机器,并执行kbd_mode –a,或许能恢复。

·         请检查系统的日志文件(/var/log/messages或类似物)以找出问题的原因。如果你认为问题出在MySQL中,应检查MySQL的日志文件。请参见5.11节,“MySQL日志文件”

·         如果你不认为存在硬件问题,应尝试找出导致问题的原因。请使用topps、任务管理器或类似程序,以检查哪个程序占用了所有CPU时间或锁定了机器。

·         使用topdf或类似程序检查是否内存不够、磁盘空间不足、文件描述符缺乏、或其他关键资源缺少。

·         如果问题是失去控制的进程,应尝试杀死它。如果杀不死进程,或许是因为操作系统中存在缺陷。

如果在检查了所有其他可能性之后,并得出结论问题是由MySQL服务器或MySQL客户端导致的,应创建提供给我方的邮件列表或支持团队的缺陷报告。在缺陷报告中,请详细描述系统的行为,以及你认为发生了什么情况。+3.

还应阐明为什么你认为是MySQL导致了问题。请考虑本章介绍的所有情况。准确阐明当你检查系统时问题是如何出现的。对于程序和日志文件的任何输出和错误消息,请使用“复制和粘贴”方法。

尽量详细描述不工作的程序,以及你所见到的所有征兆。我们过去收到过很多仅说明“系统不工作”的缺陷报告。这不会为我们提供有助于解决问题的信息。

如果程序失败,了解下述信息总是有用的:

·         有嫌疑的程序是否出现了分段故障(是否转储内核)?

·         程序是否占用了所有可用的CPU时间?用top.进行检查。让程序运行一段时间,或许能简单地评估某些事是否是计算密集性的。

·         如果问题是因mysqld服务器导致的,使用mysqladmin -u root pingmysqladmin -u root processlist是否能获得服务器的响应?

·         当你尝试连接到MySQL服务器(例如,mysql)时,客户端程序给出的信息是什么?客户端是否堵塞?是否获得了来自程序的任何输出?

发送缺陷报告时,请遵循1.7.1.2节,“请教问题或通报缺陷”中给出的说明。