分享一点日常服务问题分析的经验:
作为一个运维人员,不可能对所有的软件都熟悉,但是我们却可以用相同的方法进行问题分析和定位。假设现在用一个应用存在问题:
可以登陆系统查看系统是否正常:
- df -h #检查是否有文件系统满
- vmstat -w 1 #检查cpu,memory(内存)是否存在不足
- /var/log/messages是否存在异常信息
- dmesg查看是否有内核异常信息
可以检查应用日志:
虽然我不熟悉应用的信息,但是还是可以大致排查一下的
- top或者ps -ef #定位应用进程
- 然后大致定位进程日志可能存放的文件夹,进入目录
find . -mmin -20 -name *log* -type f
通过这个命令可以大致定位日志文件位置,然后进入日志文件目录执行ls -lrt把文件按时间顺序进行排序,就看故障发生时间点的日志
-
日志中如果有打开或读写某个文件报了permission denied 那就是文件权限问题,命令chmod/chown/usermod(添加组)可以处理这种问题
-
如果报了连接不上某个服务器,那就可以ping测试网络是否通,telnet测试端口是否通
-
如果报打开文件数量过多,那就ulimit -a检查用户配置的相关参数是否太小,lsof检查用户打开的文件数量是否太多
-
如果报连接超时,而且只有部分超时,那就可以netstat -nt | wc -l检查一下连接数量,可能对端连接达到上限;也可以同时ping检查网络是否有丢包