线上Linux服务器优化--系统调优

一、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、mongodb)

3)磁盘IO

       》 RAID技术(raid1、raid5、raid10)
       》SSD磁盘

消耗磁盘的业务:数据库服务器

4)网络带宽

       》网卡、交换机的选择

       》操作系统双网卡绑定

       消耗带宽的业务:hadoop平台、视频业务平台

2、操作系统相关资源

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是比较好的选择

 

3、程序问题

此类问题需要开发文员查看代码,介入处理。但作为运维人员需要给出程序问题的有力证据。

 

 

 

三、Linux性能优化工具

1、CPU性能评估工具

1)vmstat(系统默认自带,Virtual Memory Statistics 虚拟内存统计)

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

       常用方式:vmstat 3 5

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

线上Linux服务器优化--系统调优_第1张图片

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:显示磁盘的使用情况

线上Linux服务器优化--系统调优_第2张图片

线上Linux服务器优化--系统调优_第3张图片

3)uptime命令

       Uptime是监控系统性能最常用的一个命令,主要用来统计系统当前的运行情况,输出的信息依次为:系统现在的时间、系统从上次开机到现在运行了多长时间、系统目前有多少登陆用户、系统在一分钟内、五分钟内、十五分钟内的平均负载。

2、内存性能评估

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 秒内的状态

       看看以上两个命令的差别?

3、磁盘性能评估

1)iostat –d组合

       iostat –d 2 3

2)pidstat –d –p 32434 3

3)sar –d 2 3

4、网络性能评估

1)ping命令

2)netstat命令

       netstat –i(查看路由情况)

       netstat –r(查看网络接口状态)

3)mtr/traceroute命令

       跟踪网络路由状态,推荐使用mtr,动态跟踪网络路由状态,用于排查网络问题非常方便。

 

四、系统性能分析标准

线上Linux服务器优化--系统调优_第4张图片

其中:

       %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     一起交流,一起进步!!

---------------------------------------------------------------------------------------------------------------------------------------------------------------------

 
--------------------- 
 

你可能感兴趣的:(线上Linux服务器优化--系统调优)