Linux 服务器性能出问题,排查下这些参数指标

Linux 服务器性能出问题,排查下这些参数指标,第1张

11 top

12 vmstat

r 表示可运行进程数目,数据大致相符;而b表示的是 uninterruptible 睡眠的进程数目;swpd 表示使用到的虚拟内存数量,跟 top-Swap-used 的数值是一个含义,而如手册所说,通常情况下 buffers 数目要比 cached Mem 小的多,buffers 一般20M这么个数量级;io 域的 bi、bo 表明每秒钟向磁盘接收和发送的块数目(blocks/s);system 域的 in 表明每秒钟的系统中断数(包括时钟中断),cs表明因为进程切换导致上下文切换的数目。

说到这里,想到以前很多人纠结编译 linux kernel 的时候 -j 参数究竟是 CPU Core 还是 CPU Core+1?通过上面修改 -j 参数值编译 boost 和 linux kernel 的同时开启 vmstat 监控,发现两种情况下 context switch 基本没有变化,且也只有显著增加 -j 值后 context switch 才会有显著的增加,看来不必过于纠结这个参数了,虽然具体编译时间长度我还没有测试。资料说如果不是在系统启动或者 benchmark 的状态,参数 context switch>100000 程序肯定有问题。

13 pidstat

如果想对某个进程进行全面具体的追踪,没有什么比 pidstat 更合适的了——栈空间、缺页情况、主被动切换等信息尽收眼底。这个命令最有用的参数是-t,可以将进程中各个线程的详细信息罗列出来。

-r: 显示缺页错误和内存使用状况,缺页错误是程序需要访问映射在虚拟内存空间中但是还尚未被加载到物理内存中的一个分页,缺页错误两个主要类型是

-s:栈使用状况,包括 StkSize 为线程保留的栈空间,以及 StkRef 实际使用的栈空间。使用ulimit -s发现CentOS 6x上面默认栈空间是10240K,而 CentOS 7x、Ubuntu系列默认栈空间大小为8196K

14 其他

while :; do ps -eo user,pid,ni,pri,pcpu,psr,comm | grep 'ailawd'; sleep 1; done

21 iostat

31 netstat

➜ ~ netstat -antp #列出所有TCP的连接

➜ ~ netstat -nltp #列出本地所有TCP侦听套接字,不要加-a参数

32 sar

33 tcpdump

1、网络问题客户端 ping 它有无返回
2、ps aux | grep ssh (ps -ef|grep ssh) -查询服务是否起来
3、查询端口是否符合预期
netstat -anp | grep ssh --查询服务的端口
4、防火墙是否允许访问22端口,防火墙是否开启
service iptables status, service iptables stop 关闭防火墙
5、客户端,服务端配置文件

1查看系统负载
(1)uptime
这个命令可以快速查看机器的负载情况。
在Linux系统中,这些数据表示等待CPU资源的进程和阻塞在不可中断IO进程(进程状态为D)的数量。
命令的输出,load average表示1分钟、5分钟、15分钟的平均负载情况。
通过这三个数据,可以了解服务器负载是在趋于紧张还是趋于缓解。
如果1分钟平均负载很高,而15分钟平均负载很低,说明服务器正在命令高负载情况,需要进一步排查CPU资源都消耗在了哪里。
反之,如果15分钟平均负载很高,1分钟平均负载较低,则有可能是CPU资源紧张时刻已经过去。
(2)W
Show who is logged on and what they are doing
可查询登录当前系统的用户信息,以及这些用户目前正在做什么 *** 作
其中的load average后面的三个数字则显示了系统最近1分钟、5分钟、15分钟的系统平均负载情况
注意:
load average这个输出值,这三个值的大小一般不能大于系统逻辑CPU的个数。
如果输出中系统有4个逻辑CPU,如果load average的三个值长期大于4时,说明CPU很繁忙,负载很高,可能会影响系统性能,
但是偶尔大于4时,倒不用担心,一般不会影响系统性能。相反,如果load average的输出值小于CPU的个数,则表示CPU还有空闲
2dmesg | tail
该命令会输出系统日志的最后10行。
这些日志可以帮助排查性能问题
3vmstat
vmstat Virtual Meomory Statistics(虚拟内存统计),用来获得有关进程、虚存、页面交换空间及 CPU活动的信息。这些信息反映了系统的负载情况。
后面跟的参数1,表示每秒输出一次统计信息,表头提示了每一列的含义
(1)监控进程procs:
r:等待在CPU资源的进程数。
这个数据比平均负载更加能够体现CPU负载情况,数据中不包含等待IO的进程。如果这个数值大于机器CPU核数,那么机器的CPU资源已经饱和(出现了CPU瓶颈)。
b:在等待io的进程数 。
(2)监控内存memoy:
swpd:现时可用的交换内存(单位KB)
free:系统可用内存数(以千字节为单位)
buff: 缓冲去中的内存数(单位:KB)。
cache:被用来做为高速缓存的内存数(单位:KB)。
(3)监控swap交换页面
si: 从磁盘交换到内存的交换页数量,单位:KB/秒。
so: 从内存交换到磁盘的交换页数量,单位:KB/秒。
如果这个数据不为0,说明系统已经在使用交换区(swap),机器物理内存已经不足。
(4)监控 io块设备
bi: 发送到块设备的块数,单位:块/秒。
bo: 从块设备接收到的块数,单位:块/秒。
(5)监控system系统
in: 每秒的中断数,包括时钟中断。
cs: 每秒的环境(上下文)转换次数。
(6)监控cpu中央处理器:
us:用户进程使用的时间 。以百分比表示。
sy:系统进程使用的时间。 以百分比表示。
id:中央处理器的空闲时间 。以百分比表示。
us, sy, id, wa, st:这些都代表了CPU时间的消耗,它们分别表示用户时间(user)、系统(内核)时间(sys)、空闲时间(idle)、IO等待时间(wait)和被偷走的时间(stolen,一般被其他虚拟机消耗)。
这些CPU时间,可以让我们很快了解CPU是否出于繁忙状态。
注:
如果IO等待时间很长,那么系统的瓶颈可能在磁盘IO。
如果用户时间和系统时间相加非常大,CPU出于忙于执行指令。
如果有大量CPU时间消耗在用户态,也就是用户应用程序消耗了CPU时间。这不一定是性能问题,需要结合r队列,一起分析。
4mpstat -P ALL 1
该命令可以显示每个CPU的占用情况,如果有一个CPU占用率特别高,那么有可能是一个单线程应用程序引起的。
MultiProcessor Statistics的缩写,是实时系统监控工具
其报告与CPU的一些统计信息,这些信息存放在/proc/stat文件中。在多CPUs系统里,其不但能查看所有CPU的平均状况信息,而且能够查看特定CPU的信息。
格式:mpstat [-P {|ALL}] [internal [count]]
-P {|ALL} 表示监控哪个CPU, cpu在[0,cpu个数-1]中取值
internal 相邻的两次采样的间隔时间
count 采样的次数,count只能和delay一起使用
all : 指所有CPU
%usr : 显示在用户级别(例如应用程序)执行时CPU利用率的百分比
%nice :显示在拥有nice优先级的用户级别执行时CPU利用率的百分比
%sys : 现实在系统级别(例如内核)执行时CPU利用率的百分比
%iowait : 显示在系统有未完成的磁盘I/O请求期间CPU空闲时间的百分比
%irq : 显示CPU服务硬件中断所花费时间的百分比
%soft : 显示CPU服务软件中断所花费时间的百分比
%steal : 显示虚拟机管理器在服务另一个虚拟处理器时虚拟CPU处在非自愿等待下花费时间的百分比
%guest : 显示运行虚拟处理器时CPU花费时间的百分比
%idle : 显示CPU空闲和系统没有未完成的磁盘I/O请求情况下的时间百分比
系统有两个CPU。如果使用参数 -P 然后紧跟CPU编号得到指定CPU的利用率。
( Ubuntu安装: apt-get install sysstat)
5pidstat 1
pidstat命令输出进程的CPU占用率,该命令会持续输出,并且不会覆盖之前的数据,可以方便观察系统动态
6iostat -xz 1
iostat命令主要用于查看机器磁盘IO情况
r/s, w/s, rkB/s, wkB/s:分别表示每秒读写次数和每秒读写数据量(千字节)。读写量过大,可能会引起性能问题。
await:IO *** 作的平均等待时间,单位是毫秒。这是应用程序在和磁盘交互时,需要消耗的时间,包括IO等待和实际 *** 作的耗时。如果这个数值过大,可能是硬件设备遇到了瓶颈或者出现故障。
avgqu-sz:向设备发出的请求平均数量。如果这个数值大于1,可能是硬件设备已经饱和(部分前端硬件设备支持并行写入)。
%util:设备利用率。这个数值表示设备的繁忙程度,经验值是如果超过60,可能会影响IO性能(可以参照IO *** 作平均等待时间)。如果到达100%,说明硬件设备已经饱和。
注:如果显示的是逻辑设备的数据,那么设备利用率不代表后端实际的硬件设备已经饱和。值得注意的是,即使IO性能不理想,也不一定意味这应用程序性能会不好,可以利用诸如预读取、写缓存等策略提升应用性能
7free -m
free命令可以查看系统内存的使用情况,-m参数表示按照兆字节展示。
最后两列分别表示用于IO缓存的内存数,和用于文件系统页缓存的内存数。
注:
第二行-/+ buffers/cache,看上去缓存占用了大量内存空间。这是Linux系统的内存使用策略,尽可能的利用内存,如果应用程序需要内存,这部分内存会立即被回收并分配给应用程序。
如果可用内存非常少,系统可能会动用交换区(如果配置了的话),这样会增加IO开销(可以在iostat命令中提现),降低系统性能。
8sar -n DEV 1
sar命令在这里可以查看网络设备的吞吐率。
在排查性能问题时,可以通过网络设备的吞吐量,判断网络设备是否已经饱和。
9sar -n TCP,ETCP 1
sar命令在这里用于查看TCP连接状态,其中包括:
active/s:每秒本地发起的TCP连接数,既通过connect调用创建的TCP连接;
passive/s:每秒远程发起的TCP连接数,即通过accept调用创建的TCP连接;
retrans/s:每秒TCP重传数量;
TCP连接数可以用来判断性能问题是否由于建立了过多的连接,进一步可以判断是主动发起的连接,还是被动接受的连接。TCP重传可能是因为网络环境恶劣,或者服务器压力过大导致丢包。
10top
top命令包含了前面好几个命令的检查的内容。比如系统负载情况(uptime)、系统内存使用情况(free)、系统CPU使用情况(vmstat)等。
因此通过这个命令,可以相对全面的查看系统负载的来源。同时,top命令支持排序,可以按照不同的列排序,方便查找出诸如内存占用最多的进程、CPU占用率最高的进程等。
但是,top命令相对于前面一些命令,输出是一个瞬间值,如果不持续盯着,可能会错过一些线索。这时可能需要暂停top命令刷新,来记录和比对数据。

1、查看下是什么类型的攻击。检查下系统日志,看下攻击者都去了哪些地方。

2、关闭不必要的服务和端口。

3、整体扫描下服务器,看下存在什么问题,有漏洞及时打补丁;检查是否有影子账户,不是自己建立的账号;内容是否又被修改的痕迹等,如果发现问题及时进行清理。

4、重新设置账户密码,密码设置的复杂些;以及设置账户权限。

5、对服务器上的安全软件进行升级,或者是对防护参数进行重新设置,使他符合当时的环境。如果服务器上没有安装防护软件,可以看下服务器安全狗和网站安全狗。还可以将服务器添加到安全狗服云平台上,这样当有攻击发生时,可以快速知道,并进行处理等。

过载指的是服务器运行时受到过多请求,超出了其处理能力,从而发生故障或性能下降,这种情况一般是由于管理者没有正确监控系统负载,导致资源分配不当,或者负载太高而出现过载。为了防止过载,管理者需要定期监控系统负载,并根据需要增加服务器或新安装更多的硬件设备。另外,管理者还需要经常测试系统的稳定性,以便及时发现和修复问题,避免出现过载现象。

服务器不稳定的主要原因:
一:本地网络问题
如果我们在访问网站的时候突然发现很慢,很卡。我们首先要做的就是检查一下自身本地的网络环境是不是有问题。可以利用ping一下已知的知名域名,ping值出来之后,如果ping值很大,则可能是自己本地的网络环境有问题。反之ping值小,则是美国服务器出现问题了。
二:所在机房问题
网站加载速度过慢时,如果确认本地网络没有问题,还有可能是问题出现在美国服务器所在机房,机房的设备是完善的,但是也不能避免机房出现异常。当机房受到恶意攻击的时候,也会导致美国服务器变慢。另外也要检查一下机房的主干网络是否有异常。如果美国服务器托管了,那么我们可以联系机房的运维人员排查一下什么问题,推荐相关阅读:选择美国服务器应该注意哪些事项
三:运营商国际路由问题
当我们所使用的网络,运行商的路由或者提供的服务出现问题也会导致美国服务器变慢。特别是我们使用国外美国服务器的用户会经常遇到这类问题。当数据在传输的过程中,出现丢包或者无法连接路由时,用到这类网线的美国服务器速度就会很慢。这种情况并不是美国服务器本身出现问题,也不是本地网络出现问题,只需要等运营商修复网络即可。
四:资源不足和美国服务器中毒
我们要知道当美国服务器剩余空间不足时,会导致程序在运行的时候cpu或者内存过载,导致美国服务器速度变慢。遇到这类问题,我们可以尝试优化系统,关闭美国服务器上没必要运行的软件和程序。如果此类事件经常发生,那么我们就应该要升级美国服务器的整体配置了。另外,美国服务器如果遭受到恶意攻击也会导致美国服务器变慢。所以我们选择美国服务器的防火墙和所在机房的安全防护级别也是至关重要的。

实际上病毒是导致过载的非常常见的因素,忽略了它的话很难把问题给搞定的。
下文将详细介绍病毒产生过载的原因和原理分析,还有修正办法:
一、计算机病毒引起无线款嗲路由器的过载故障
此次故宽带路由器故障发生地的拓扑结构是这样的:使用一台EnterasysSSR8000作为边界路由器,同时也用它把校园内部划分为8个虚网,每个虚网各有一个堆叠的二层交换机作为台式机和笔记本的接入设备,主干为千兆,百兆到桌面。
二、无线路由器故障的解决办法
(1)首先排查网络客户端的错误配置。进入MSDOS方式使用IPCONFIG命令检查主机的IP地址配置:C:ipconfig
Windows IP Configuration
Ethernet adapter 本地连接:
Connection-specific DNS Suffix :
IP Address : 21016230
Subnet Mask : 2552552550
Default Gateway 2101621
(2)上面显示的配置是正确的,然后ping自己的IP地址:
C: ping 21016230
Reply from 21016230: bytes=32 time<1ms TTL=128
Reply from 21016230: bytes=32 time<1ms TTL=128
(3)这说明IP地址是生效的,网卡工作正常,再使用PING命令,测试从本机到网关的连接情况:
C: ping 2101621 –t
Reply from 2101621: bytes=32 time<1ms TTL=128
Reply from 2101621: bytes=32 time<1ms TTL=128
(4)从主机向网关发送的数据包,全部都得到了回应,线路是连通的。打开浏览器,也能够正常上网,一点儿都没问题。
(5)两台不相干主机同时出现同样此类问题的几率几乎为零。鉴于此现象,首先排除了连接线缆的故障,因为连接的线缆不可能出现这种时断时续的情况,宽带路由器故障最有可能会出在线缆的另一端二层交换机上。
(5)查看交换机的状态,这是一个由两台交换机的堆叠,其中一台交换机上有一个上联的千兆端口。
三、对病毒导致路由器过载的问题的归纳总结
在排查了软件问题后,最后检查硬件。在以上的步骤中确定了某一方面的宽带路由器故障后,如果发现是硬件宽带路由器故障,则需要拆机更换硬件部件。不过这一过程一般不需要你亲自动手,往往是供应商或厂商的工程师来实施的。如果时间拖得越长,就会超出产品包修、包换的期限,那是得不偿失的。
对于很多使用宽带路由器的用户来说,经常会遇到宽带路由器故障,遇到自己无能为力的宽带路由器故障时,除了凭借自己的经验、产品说明书、厂商网站以外,要迅速的想到你的产品供应商,并与之联系,以帮助问题的快速解决。


欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/zz/12757930.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-27
下一篇 2023-05-27

发表评论

登录后才能评论

评论列表(0条)

保存