服务器故障排查方法总结

                         服务器故障排查方法总结

问题描述:

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

 

查找步骤:

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;

 

你可能感兴趣的:(Linux)