linux服务器调优的经验
目录:
1、系统故障排除思路
重视报错信息
永远不要忘记日志文件
分析、定位、解决问题
2、影响linux性能的因素
服务器硬件因素
操作系统的相关因素
程序因素
3、系统性能优化工具
Cpu性能优化工具 vmstat,iosta,sar
内存性能检测工具 free,top,sar,pidstat
磁盘性能评估工具 iostat,sar
网络性能分析工具 ping,mtr,netstat
4、系统性能分析与标准
5、性能调优的思路与技巧分享
几个故障鼓励案例和性能优化案例
Su命令切换用户导致的问题
磁盘突然变成只读怎么处理
基于动、静态网站的优化案例
一、Linux故障排除思路
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)局域网主机之间联机是否正常
二、影响Linux性能各种因素
1、系统硬件资源
(1)CPU
如何判断多核CPU与超线程
消耗CPU的业务:动态web服务、mail服务
(2)内存
物理内存与swap的取舍
选择64位与Linux系统
消耗内存的业务:内存数据库(redis/hbase/mongdb)
(3)磁盘IO
RAID 技术(RAID 0/1/5/01/10)
SSD 磁盘
消耗磁盘的业务:数据库服务器
(4)网络带宽
网卡/交换机的选择
操作系统的双网卡绑定
消耗带宽的业务:hadoop平台、视频业务的平台
2、操作系统相关资源
(1)系统安装优化
磁盘分区、RAID设置、swap设置
(2)内核参数优化
Ulimit -n(最大打开文件数)
Ulimit -u (最大用户数)
(3)文件系统优化
Ext2:linux下标准文件系统,无日志记录(inode)功能
Ext3:在ext2基础上增加了日志记录功能(inode),仅支持3200个子目录
Ext4:在ext3的后续版本、linux2.6.28内核开始支持,无限子目录支持,快速fsck
Xfs:高性能文件系统,linux3.10内核开始默认支持
建议:
读操作频繁,同时小文件众多的应用,首选ext4文件系统,接下来是xfs、ext3
写操作频繁的应用,首选是xfs,接下来依次是ext4和ext3
对性能要求不高、数据安全要求不高的业务、ext3是比较好的选择
三、Linux性能优化工具
1、cpu性能评估工具
(1)vmstat(系统自带工具)
利用vmstat命令可以对操作系统的内存信息、进程状态、CPU活动等
常用方式:vmstat 3 5
表示每3秒更新一次输出信息,统计5秒后停止输出
(2)iostat(需要安装sysstat工具包)
Iostat是I/O statistics(输入/输出统计)的缩写,主要的功能是对系统的磁盘I/O操作进行监视
常用方式:iostat -c 3 5
其中,-c表示显示CPU的使用情况,-d:显示磁盘的使用情况
(3)uptime命令
Uptime是监控系统性能最常用的一个命令,主要用来统计系统当前的运行状况,输出的信息依次为:系统现在的时间、系统上次开机到现在运行了多长时间、系统目前有多少登录用户、系统在一分钟内、五分钟内、十五分钟内的平均负载。
2、内存性能评估
(1)free命令
Free命令是监控linux内存使用状况最常用的指令
常见用法: free -m
(2)sar/pidstat
此两个命令主要用于监控全部或指定进程占用系统的情况,如CPU,内存、设备IO。
此三个共用参数:-(获取CPU状态)、-r(获取内存状态)、-d(获取磁盘)
常用组合:
Sar -u 3 获取cpu3秒内的状态
Pidstat -r -p 1 3获取内存3秒内的状态(获取指定的进程id)
3、网络性能评估
(1)ping命令
(2)Netstat 命令
Netstat -i(查看网络接口情况)
Netstat -r(查看路由情况)
(3)mtr/traceroute 命令
跟踪网络路由状态,推荐使用mtr,动态跟踪网络路由,用于排除网络问题十分方便
四、系统性能分析标准
影响性能因素评判标准
好坏 糟糕
CPUuser%+sys%<70%user%+sys%=85user%+sys%>=90
内存Swap IN(si)=0Per CPU with 10 page/sMoreSwap In & Swap Out
Swap Out(so)=0
磁盘iowait%<20%iowait%=35%iowait%>=50
五、几个故障处理和优化案例
1、系统ing无法执行su操作
问题现象:
Su : warning :cannot change directory to /home/people:Permission denied
Su:/bin/bash:Permission denied
解决思路:
从上面错误提示可知是权限出现了问题,那么可以从权限入手进行排查,基本思路如下:
用户目录/home/people权限问题
Su 程序执行权限问题 ll /bin/su
程序依赖的共享库权限的问题 ldd /bin/su
Selinux问题导致 getentforce
系统根空间问题
最终解决方法:
发现根目录的权限问题
(注意解决思路)
2、”Read-only file system” 问题分析与解决
问题现象:网站无法添加内容
解决思路:
网站程序可能出现问题
磁盘出现问题
文件系统问题
解决方法:
卸载磁盘分区,用fsck命令修复磁盘分区
3、基于动态、静态内容结合的网站优化案例
硬件:DELL R710 3台,32GB内存、CPU 2颗8核、磁盘 SATA 600GB+2TB
软件环境:nginx+tomcat 架构,通过nginx做负载均衡
现象描述:平时访问量小时,网站正常,当访问量稍大时,网站访问很慢,网站搞活动时,基本处于无法打开状态,而nginx服务器带宽占最高在30M左右,后端2个tomcat服务器占用带宽占用也在30M左右
分析问题:
(1)硬件、系统方面
(2)网络方面
(3)软件架构方面
(4)程序配置方面
步骤:分发用户请求-网站动静资源分离
解决问题:
(2) 网站动、静态分离
Location ~*\.(gif|jpg|png|js|css)${
Root /data/static/p_w_picpaths/ROOT;
}
Nginx 中的location匹配规则
首先匹配=,其次匹配^~,然后是按文件中顺序的正则匹配,最后是交给/通用匹配。当匹配成功时候,停止匹配,按当前匹配规则处理请求
(3)Tomcat JVM参数优化
优化参数:
-server -Xms3550m -Xmx3550m -Xmn1g -XX:PermSize=256m -XX:MaxPermSize=512m
整个堆内存大小 = 年轻代大小 + 年老代大小 + 持久代大小
-Xms3550m:设置JVM最大内存3550m
-Xmx3550m:设置JVM初始堆内存3550M
-Xmn2g:设置堆内存年轻代大小为2G.。整个堆内存大小 = 年轻代大小 + 年老代大小 + 持久代大小。持久代一般固定大小为64m,所以增大年轻代后,将会减小年轻待大小。此值对系统性能影响较大
-XX:PermSize=256m :设置堆内存持久代初始值为256m
-XX:MaxPermSize=512m:设置持久代最大值为512m
学习心得:
对于调优线上服务器的原则就是结合业务的需求,对发生的问题要结合日志解决问题,查找根源发生的问题。解决问题时需要注重思路的养成,方便以后处理相关类似问题。