1、重视报错提示信息
每个错误的出现,都是给出错误提示信息,一般情况下这个提示基本定位了问题的所在。因此一定要重视这个报错信息,如果对这些错误信息视而不见,问题永远得不到解决。
2、永远不要忘记日志文件
日志是排查问题的第一思路,一定要学会查看日志的习惯。
系统日志:dmesg、 /var/log/messages、 /var/log/secure
应用日志:
Apache:$APACHE_BASE/logs/error_log $APACHE_BASE/logs/access_log
Nginx:$NGINX_BASE/logs/error_log $NGINX_BASE/logs/access_log
Tomcat:$TOMCAT_BASE/logs/catalina.out
3、分析、定位问题、解决问题
综合分析过程,要以日志为导向,配合实际的应用环境,根据报错信息,排出故障。
4、网络故障排查思路
1)网络硬件传输问题
2)检查网卡是否能正常工作,可以从网卡是否正常加载、网卡IP设置是否正确
3)检查DNS是否设定正确
4)服务是否正常打开
5)访问权限是否打开(iptables、selinux)
6)局域网主机之间联机是否正常
1)CPU
如何判断多核CPU和超线程
消耗CPU的业务:动态web服务、mail服务
2)内存
》物理内存与swap的取舍
》选择64位Linux操作系统
消耗内存的业务:内存业务数据库(redis、hbase、mongodb)
3)磁盘IO
》 RAID技术(raid1、raid5、raid10)
》SSD磁盘
消耗磁盘的业务:数据库服务器
4)网络带宽
》网卡、交换机的选择
》操作系统双网卡绑定
消耗带宽的业务:hadoop平台、视频业务平台
1)系统安装优化
磁盘分区、raid设置、swap设置
2)内核参数优化
ulimit -n(最大打开文件数)
ulimit -u(最大用户数)
3)文件系统优化
<1>、ext2:linux下标准文件系统,无日志记录(inode)功能
<2>、ext3:在ext2基础上增加了日志记录功能(inode),仅支持32000个子目录
<3>、ext4:ext3的后续版本,linux2.6.28内核开始支持。无限子目录支持,快速fsck
<4>、xfs:高性能文件系统,linux3.10内核开始默认支持
建议:
读操作频繁,同时小文件众多的应用:首选ext4文件系统,接下来是xfs和ext3
写操作频繁的应用首选是xfs,接下来是ext4和ext3
对性能要求不高、数据安全要求不高的业务,ext3是比较好的选择
此类问题需要开发文员查看代码,介入处理。但作为运维人员需要给出程序问题的有力证据。
1)vmstat(系统默认自带,Virtual Memory Statistics 虚拟内存统计)
利用vmstat命令可以对操作系统的内存信息、进程状态、CPU活动等进行监视。
常用方式:vmstat 3 5
表示每3秒更新一次输出信息,统计5次停止输出
r:表示运行和等待CPU时间片的进程数, r <= CPU总核数,如果大于CPU总核数,则表示CPU资源不足.
b:表示正在等待资源的数目(b不等大于CPU的总核数)
So、si:如果经常为0,则表示系统资源是非常充足的。如果不为0,表示swap会经常被使用到,进一步表面系统资源是不够的。
wa:根据线上优化的经验,一般将此值设为20%,如果该值超过20%,则表示io存在比较严重的等待,查看是否有大量的磁盘io读写导致。
2)iostat(需要安装sysstat工具包)
iostat是I/O statistics(输入、输出统计)的缩写,主要的功能是对系统的磁盘I/O操作进行监视。
常用方式:iostat –c 3 5
其中,-c表示显示CPU的使用情况,-d:显示磁盘的使用情况
3)uptime命令
Uptime是监控系统性能最常用的一个命令,主要用来统计系统当前的运行情况,输出的信息依次为:系统现在的时间、系统从上次开机到现在运行了多长时间、系统目前有多少登陆用户、系统在一分钟内、五分钟内、十五分钟内的平均负载。
1)free命令
free命令是监控linux内存使用状况最常用的指令。
常见用法:free –m
2)sar/pidstat
此两个命令主要用来监控全部或指定进程占用系统资源的情况,如CPU、内存、设备IO。
三个公用参数:-u(获取CPU状态)、-r(获取内存状态)、-d(获取磁盘)
常用组合:
sar –u 3 获取CPU 3秒内的状态
pidstat –r –p 1 3 获取内存3 秒内的状态
看看以上两个命令的差别?
1)iostat –d组合
iostat –d 2 3
2)pidstat –d –p 32434 3
3)sar –d 2 3
1)ping命令
2)netstat命令
netstat –i(查看路由情况)
netstat –r(查看网络接口状态)
3)mtr/traceroute命令
跟踪网络路由状态,推荐使用mtr,动态跟踪网络路由状态,用于排查网络问题非常方便。
其中:
%user:表示CPU处在用户模式下的时间百分比
%sys:表示CPU处在系统模式下的时间百分比
%iowait:表示CPU等待输入输出完成时间的百分比
swap in:即si,表示虚拟内存的页导入,即从SWAP DISK交换到RAM
1、系统无法执行su操作
问题现象:
su:warning:cannot change directory to /home/linux:permission denied
su:/bin/bash:Permission denied
解决思路:
从上面的错误提示可知是权限出了问题,那么可以从权限入手进行排查,基本思路如下:
1、用户目录/home/linux权限问题
2、su程序执行权限问题(ll /bin/su )
3、程序依赖的共享库权限问题
4、selinux问题导致(more /etc/selinux/config)
5、系统根空间问题
2、“Read-only file system”问题分析与解决
问题现象:客户说网站无法添加访问,无法添加内容了。
解决思路:
1、网站程序可能出现问题
2、服务器磁盘故障
3、基于动态、静态内容结合的网站优化案例
硬件环境:DELL R710 3台、32GB内存、CPU 2颗4核、磁盘SATA 600GB+2TB
软件环境:nginx+tomcat架构,通过nginx做负载均衡
现象描述:平时访问量比较小时,网站正常,当访问量稍大时,网站访问很慢,网站搞活动时,基本处于无法打开的状态,而nginx服务器带宽占比最高在30M左右,后端2个tomcat服务器占用带宽也在30M左右。
问题分析:
1)、硬件、系统方面
2)、网络方面
3)、软件架构方面
4)、程序配置方面
解决问题:
1)、架构方面调整
upstream myserver{
ip_hash;
server 172.16.110.11:8080 weight=1 max_fails=2 fail_timeout=10s;
server 172.16.110.12:8080 weight=3 max_fails=2 fail_timeout=10s;
server 172.16.110.13:8080 weight=1 max_fails=2 fail_timeout=10s;
server 172.16.110.14:8080 weight=2 max_fails=2 fail_timeout=10s;
}
2)、网站动静分离
Location ~*\.(gif|jpg|png|js|css)${
root /data/static/images/ROOT;
}
nginx中的location匹配规则:
首先匹配 =,其次匹配^~,然后是按文件中顺序的正则匹配,最后是交给/通用匹配。当有匹配成功的时候,停止匹配,按当前匹配规则处理请求。
3)、Tomcat JVM参数优化
优化参数:
-serber –Xms3550m –Xmx3550m –Xmn1g –XX:PermSize=256M –XX:Max PermSize=512M
整个堆内存大小=年轻代大小+年老代大小+持久代大小
–Xms3550m:设置JVM最大堆内存3550M
–Xmx3550m:设置JVM初始堆内存3550M
–Xmn1g:设置堆内存年轻代大小为1G。整个堆内存大小 = 年轻代大小+年老代大小+持久代大小
持久代一般固定大小为64M,所以增大年轻代后,将会减少年老代大小。此值对系统性能影响比较大。
–XX:PermSize=256M:设置堆内存持久化代初始值为256M
–XX:Max PermSize=512M:设置持久到最大值为512M
--------------------------------------------------------------------------------------------------------------------------------------------------------------------
用人品去感动别人,用改变去影响别人,用状态去燃烧别人,用行动去带动别人,用阳光去照耀别人,用坚持去赢得别人,要求自己每天都去做与目标有关的事情,哪怕每天只进步一点点,坚持下来你就是最优秀卓越的!欢迎大家加入大数据交流群:725967421 一起交流,一起进步!!
---------------------------------------------------------------------------------------------------------------------------------------------------------------------
---------------------