### B.3.1 如何确定导致问题的原因

当您遇到问题时，您应该做的第一件事是找出导致它的程序或设备：

-   如果您有以下症状之一，则很可能是硬件问题（如内存、主板、CPU 或硬盘）或内核问题：

    -   键盘不工作。这通常可以通过按 Caps Lock 键来检查。如果 Caps Lock 指示灯没有变化，则必须更换键盘。（在此之前，您应该尝试重新启动计算机并检查键盘的所有电缆。）

    -   鼠标指针不动。

    -   机器不响应远程机器的 ping。

    -   与 MySQL 无关的其他程序无法正常运行。

    -   您的系统意外重新启动。（错误的用户级程序永远无法关闭您的系统。）

        在这种情况下，您应该首先检查所有电缆并运行一些诊断工具来检查您的硬件！您还应该检查您的操作系统是否有任何可能解决您的问题的补丁、更新或服务包。还要检查您的所有库（例如`glibc`) 是最新的。

        使用具有 ECC 内存的机器尽早发现内存问题总是好的。

-   如果您的键盘被锁定，您可以通过从另一台机器登录到您的机器并执行`kbd_mode -a`.

-   请检查您的系统日志文件（`/var/log/消息`或类似的）为您的问题的原因。如果您认为问题出在 MySQL，您还应该检查 MySQL 的日志文件。看[第 5.4 节，“MySQL 服务器日志”](server-logs.html).

-   如果您认为您没有硬件问题，您应该尝试找出导致问题的程序。尝试使用**最佳**,**ps**，任务管理器，或一些类似的程序，检查哪个程序正在占用所有 CPU 或正在锁定机器。

-   采用**最佳**,**df**，或类似的程序来检查内存、磁盘空间、文件描述符或其他关键资源是否不足。

-   如果问题是某个失控的过程，你总是可以尝试杀死它。如果它不想死，操作系统中可能有一个bug。

    如果您已经检查了所有其他可能性，并得出结论，是MySQL服务器或MySQL客户端导致了问题，那么现在是创建错误报告的时候了，请参阅[第1.6节，“如何报告错误或问题”](bug-reports.html)。在错误报告中，尝试完整描述系统的行为以及您认为正在发生的事情。请说明您认为MySQL导致问题的原因。考虑本章中描述的所有情况。当你检查你的系统时，准确地说明问题是如何出现的。对于程序和日志文件的任何输出和错误消息，请使用“复制并粘贴”方法。

    试着详细描述哪个程序不起作用，以及你看到的所有症状。我们在过去收到过很多只声明“系统不工作”的错误报告这并没有为我们提供关于问题所在的信息。

    如果程序失败，了解以下信息总是有用的：

-   有问题的程序是否存在分段错误（是否转储核心）？

-   程序是否占用了所有可用的CPU时间？核实**顶部**.让程序运行一段时间，它可能只是计算密集型的东西。

-   如果[**mysqld**](mysqld.html)服务器出现问题，您是否可以通过[**mysqladmin-u根ping**](mysqladmin.html)或[**mysqladmin-u根进程列表**](mysqladmin.html)?

-   当您尝试连接到MySQL服务器时，客户端程序会说什么？（试一试[**mysql**](mysql.html)，例如。）客户堵塞了吗？你从程序中得到什么输出了吗？

    发送错误报告时，应遵循中所述的大纲[第1.6节，“如何报告错误或问题”](bug-reports.html).
