目录

服务器故障排查方法总结

目录

服务器故障排查方法总结

服务器故障排查方法总结

问题描述:

每当出现网站访问不了的时候,估计应该就是服务器出现故障了,这个时候大部分情况都是属于数据库出现问题。

查找步骤:

1、查找 top

检查服务器负载是否有问题

一般网站访问不了, top

显示的负载都是很大的,这个时候可以看到

mysql

的进程占用资源很高,往往就是

mysql

发生故障了

2、在服务器中查看网站的访问记录

这些访问记录存储在: /home/

对应的网站名

/access-logs/

对应的网站名

可以先通过 tail

查看,查看出异常的

ip

的时候可以通过

grep

进行过滤查看,在这个文件一般都可以找到恶意爬虫、恶意访问的记录,这些往往有可能是导致

mysql

数据库挂掉的原因。

3、这个时候先对数据库进行重启,对 apache

进行重启

service mysql restart

service httpd restart

重启之后一般都可以暂时恢复正常的访问的了。如果是出于恶意访问的话,找出恶意访问的 ip

把它禁止掉即可,如果是网站数据库出现故障,那么还要进行数据库排查。

4、查找数据库错误日志

首先需要知道数据库 mysql

的安装目录,可以通过

whereis mysql

找到,但是这往往没用

还有一种方法,就是通过 ps -ef | grep mysql 来查看

或者也可以通过进入 mysql

,使用

select @@basedir as basePath from dual

来查看

mysql

安装目录

我们在第二种查找方法 ps -ef | grep mysql

中对应

mysql

的几种日志找到其所在目录,然后查看对应文件进行分析

mysql 有以下几种日志

错误日志: -log-err

查询日志: -log

慢查询日志: -log-slow-queries

更新日志: -log-update

二进制日志: -log-bin

如下便是对应的数据库错误日志和慢查询日志的查看方法了

下面附加一篇关于 mysql

慢查询日志的说明

随着数据量的不断增长,性能尤为重要,或许经过优化及好的解决方案,使你当前感觉不到性能问题的存在,但随着数据量的不断增长,

从百万到千万再到几亿,可能问题会随之而来,为了能更好的掌握数据库的运行效率,添加慢日志查询是很有必要的。

查看日志相关信息:

参数如下:

-slow_launch_time

如果创建线程的时间超过该秒数,服务器增加 Slow_launch_threads

状态变量。

-slow_query_log

是否记录慢查询。用 long_query_time

变量的值来确定

慢查询

-slow_query_log_file

慢日志文件路径

-long_query_time

慢日志执行时长(秒),超过设定的时间才会记日志

日志配制:修改 my.ini

文件为以下内容

开启慢日志

1

:开启

0

:关闭

slow_query_log=1

设置日志时长 单位(秒)

long_query_time = 2

测试慢日志记录信息:

查询总记录数

- collegets-slow.log 日志信息

(

文件默认存放在

datadir

目录下

)

C:\Program Files\MySQL\MySQL Server 5.5\bin\mysqld, Version: 5.5.23-log (MySQL Community Server (GPL)). started with:

TCP Port: 3306, Named Pipe: (null)

Time                 Id Command    Argument

C:\Program Files\MySQL\MySQL Server 5.5\bin\mysqld, Version: 5.5.23-log (MySQL Community Server (GPL)). started with:

TCP Port: 3306, Named Pipe: (null)

Time                 Id Command    Argument

# Time: 121205 16:09:31

# User@Host: root[root] @  [192.168.17.105]

# Query_time: 2.171875  Lock_time: 0.000000 Rows_sent: 1  Rows_examined: 2381725

SET timestamp=1354694971;

SELECT COUNT(*)

FROM usersession;