linux服务器调优的经验

目录:

1、系统故障排除思路

重视报错信息

永远不要忘记日志文件

分析、定位、解决问题

 

2、影响linux性能的因素

服务器硬件因素

操作系统的相关因素

程序因素

 

3、系统性能优化工具

Cpu性能优化工具 vmstatiostasar

内存性能检测工具 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)文件系统优化

Ext2linux下标准文件系统,无日志记录(inode)功能

Ext3:ext2基础上增加了日志记录功能(inode),仅支持3200个子目录

Ext4:在ext3的后续版本、linux2.6.28内核开始支持,无限子目录支持,快速fsck

Xfs:高性能文件系统,linux3.10内核开始默认支持

 

建议:

读操作频繁,同时小文件众多的应用,首选ext4文件系统,接下来是xfsext3

写操作频繁的应用,首选是xfs,接下来依次是ext4ext3

对性能要求不高、数据安全要求不高的业务、ext3是比较好的选择

 

三、Linux性能优化工具

 

1、cpu性能评估工具

(1)vmstat(系统自带工具)

利用vmstat命令可以对操作系统的内存信息、进程状态、CPU活动等

常用方式:vmstat  3 5

表示每3秒更新一次输出信息,统计5秒后停止输出

 

(2)iostat(需要安装sysstat工具包)

IostatI/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 INsi=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 28核、磁盘 SATA 600GB+2TB

软件环境:nginx+tomcat 架构,通过nginx做负载均衡

现象描述:平时访问量小时,网站正常,当访问量稍大时,网站访问很慢,网站搞活动时,基本处于无法打开状态,而nginx服务器带宽占最高在30M左右,后端2tomcat服务器占用带宽占用也在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,所以增大年轻代后,将会减小年轻待大小。此值对系统性能影响较大

-XXPermSize=256m :设置堆内存持久代初始值为256m

-XXMaxPermSize=512m:设置持久代最大值为512m

 

学习心得:

对于调优线上服务器的原则就是结合业务的需求,对发生的问题要结合日志解决问题,查找根源发生的问题。解决问题时需要注重思路的养成,方便以后处理相关类似问题。