服务器故障排查方法总结
服务器故障排查方法总结
服务器故障排查方法总结
问题描述:
每当出现网站访问不了的时候,估计应该就是服务器出现故障了,这个时候大部分情况都是属于数据库出现问题。
查找步骤:
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;