linux监控指标和命令

linux监控指标和命令

2023年8月2日发(作者:)

linux监控指标和命令常⽤命令[]cprmtail移动、重命名yum建⽬录rpmfind /usr/local -namexxxrz上传⽂件sz下载wc⾏、字、字chmodchmod 777 –R xxx节数tarheadhead -3

repps –ef|morekill查找ps -ef | grep xxCopyrm –rf xxtail –f kdirfindyum nstall xxxrpm –ivh ①tar xzvf ②cd xxx./configure./configure –prefix=/user/local[指定⽬录]加参数③make && make install

kill -9 [xxPID]

vi /etc/profile 最下⾯配置环境变量

2.影响性能的因素因素1:cpu因素factor指标metricsLoad average描述等待执⾏的队列中进程数+备注监测monitorcpu负荷的趋势.topRun queueProcsBlockedContextSwitch等待uninterruptable task完成的进程数Runnable,ready to run(running vmstat(r)/ waiting for runtime)的进程数【可执⾏未执⾏的】uninterruptible wait(通常因IO)进 vmstat(b)程数线程的切换减少程序⽆关的vmstat(cs)请求正在处理的中断数:(hi)Hard interrupts、(si)soft interrupts处理⾮内核操作的时间处理内核操作的时间 top (cpu--hi、si)vmstat(in)User%+sys%topCPU/proc/cpuinfoSystemInterruptsUser timeSystem timecpu利⽤率WaitingIdle time等待io完成的时间空闲时间好(<70%)⼀vmstat般(85%)糟糕iostat(avg-cpu)(>=90)

<5%-à充分利⽤Nice time处理re-nicing进程的时间 iostat(nice%)CPU影响⼤是最误区,因为服务器的cpu⼀般是overconfigured。除⾮⼀些cpu密集使⽤的应⽤。简单解决⽅法 如果有多余的进程,可以ps –ef来停掉 CPU-intensive的进程,可以renice调整优先级 SMP-based使⽤taskset来将进程绑定cpu,避免来回切换 最新驱动和防⽕墙,减少对cpu的负载。案例:CPU⾼的分析1、us% or sy%⾼,使⽤命令top;1.1.1 、us%⾼,看看是哪个任务/线程的占⽤⾼,使⽤top排序或者ps –ef查看1.1.2、了解线程的作⽤,可使⽤strace 查看该进程的执⾏情况,分析是否有异常,是否需要调整。1.2.1、sy%⾼,查看memory、io⽅⾯性能,使⽤vmstat、iostat命令。1.2.2、memory⽅⾯的问题,考虑是否要调整这⽅⾯的参数或增加内存1.2.2、io⽅⾯的问题,考虑是否要增加快速的磁盘驱动等解决⽅案。1.2.3、也要查看进程的占⽤情况,⽤strace查看该进程的执⾏情况,分析是否有异常,是否需要调整。

因素2:内存因素factor指标metricsFree memory描述Linux把未使⽤的内存作为buffer和cache。使⽤的swap space。physical memory⽤完后,将最近使⽤过,暂不使⽤的memorypages从physical memory写到swap space。监测monitor备注top(mem-free)

vmstat(free)top(swap-used)si 、so[à0好]:vmstat(swpd)swap频繁程度,长期很⼤,表⽰内存不够or未有效利⽤内存Swap usage(si、so)Memory/proc/meminfoBuffer表⽰剩余的可⽀配物理内存严重不⾜,需要通过与磁盘交换内容来保持系统稳定性;磁盘处理速度要远⼩于内存,值越⼤性能瓶颈越明显。不同步设备、优先级不同的设备间缓存top(mem-buffers)

瓶颈表现vmstat(buffer)CacheCpu和主内存间⾼速⽂件缓存(cpu刚⽤top(swap-

过或循环使⽤的部分数据,cpu再⽤时就cached)从cache调⽤)vmstat(cache)Slabs内核使⽤vmstat –m

Activeinactive活跃和不活跃的内存⼤⼩vmstat -a

memoryfree↓,swpd↑(si、so↑),bi 、bo↑,in↑,cs↑、b↑,wa↑测试期间,保持内存充⾜,可⽤内存>20%简单解决⽅法 调整swap space,使⽤⼤页⾯,⼤块内存,共享内存; 调整页⾯的⼤⼩; 改进对活动和⾮活动内存的处理; 调整换页率page-out rate.; 限制服务器上每个⽤户的可⽤资源; 停掉不需要的服务; 增加内存;

因素3:I/O因素指标metrics描述监测monitor因素指标metricsiowait描述等待io操作的时间监测monitoriostat(avg-cpu:iowait)等待Average wait好(<20%)⼀般(=35%)糟糕(>=50%)实际的io操作时间svctm +iostat –x (await)+在io队列中等待时间I/O

请求数Svctm越接近awai越好Average queueIo请求队列长度lengthTps每秒处理的io操作数量。r/s、w/s每秒读、写请求数iostat –x (avgqu-sz)iostat (tps)iostat –x(r/s 、w/s)或⽤rrqm/s 、wrqm/s(合并请求)考察vmstat(bi、bo)iostat(Blk_read、BLk_wrtn)bi、bo读、写磁盘的块数(block/s)数据量KB r/s、KB w/s每秒对设备读、写数量Kb/s或⽤kb、mb做单位考察总读写量iostat (Kb_read/s、Kb_wrtn/s)或⽤MB、块、扇区做单位考察每秒读写量瓶颈表现(%util↑)设备繁忙、(await>>svctm)IO请求等待时间长,(avgqu-sz↑)等待队列长度⼤。简单解决⽅法 少量的⼤容量磁盘、减少逻辑盘; 序列式且控制器的带宽压⼒⼤,添加更快的磁盘控制器;随机式,增加磁盘驱动; Raid环境中,添加磁盘驱动; 增加RAM;

因素4:Network因素factor指标metrics收、发送的包数收、发送的字节数描述

备注

监测monitorNetwork

每秒冲突数掉包的数量OverrunsErrors

watch –n 1 “/sbin/ifconfig eth0|grep bytes”

查看⽹络流量date;ifconfig eth0 显⽰当前⽇期下⽹卡⽹络情况

简单解决⽅法 调整⽹络配置; 换⽹卡、加更快的⽹卡。

外⽹:tx 发送[transport]rx 接收[receive]内⽹相反。 调整⽹络配置; 换⽹卡、加更快的⽹卡。

修改ipv4 tcp的内核参数;

案例:⼤量TIME_WAIT连接使⽤netstat –ae|grep “TIME_WAIT”|wc –l #查看多少个TIME_WAIT

[往往是因为程序代码中未关闭mysql连接netstat -ae |grep mysql]。解决⽅法:调整内核参数:vi /etc/加⼊以下内容, 修改后,执⾏/sbin/sysctl –p 让参数⽣效:_syncookies=1#开启SYN Cookies。当SYN等待队列溢出时,启⽤cookies来处理,可防范少量SYN攻击,默认0(关闭)_tw_reuse=1 #开启重⽤。允许将TIME-WAIT socket重⽤于新的TCP连接,默认0(关闭)_tw_recycle=1 #开始TCP连接中TIME-WAIT socket的快递回收,默认0(关闭)_fin_timeout=30 #修改系统默认的TIME_OUT时间_keepalive_probes=5 #减少超时前的探测次数_keepalive_intvl=20 #探测消息发送频率_keepalive_time=1200#表⽰当keepalive启⽤时,TCP发送的keepalive消息的频率。缺省值为2⼩时,修改为2分钟。_local_port_range=1024 65000#⽤于向外连接的端⼝范围。缺省情况很⼩为32768到61000,改为1024到_max_syn_backlog=8192#SYN队列的长度,默认为1024,加⼤了队列的长度为8192,可容纳更多等待连接的⽹络连接数_max_tw_buckets=5000#同时保持TIME_WAIT的最⼤数量,如超出,⽴刻清除TIME_WAIT、打印警告信息。默认180000,改为50003.监测性能指标的⼯具Use the monitoring tools to to narrow down the bottleneck to the subsystem level.⼯具1:top命令top动态实时的运⾏情况当前活跃的进程信息参数:top –u root(看这user是这root的)、top –p 123(看pid123的)运⾏时间当前时间运⾏时间⽤户数Load average平均负载(1min、5min、15min),后两个时间段是重要的task和cpu汇总信息Task:running; sleeping; stopped; zombiecpu间隔内情况,多核(按1):us、sy、id、wa、ni、hi(硬件中断)、si(软件中断)、st(stolen)物理内存和虚拟内存情况u:筛选userT: time排序输⼊⾏MemoryUsagek:killr:renice(调整任务优先级)o:列的顺序i:忽略空闲和僵死进程M:驻留内存⼤⼩(res)排序q:quitA:S:f:显⽰哪些列P: %cpu排序PID进程id⽗进程idPPID进程状态: D=不可中断的睡眠状态、R=运⾏、 S=睡眠S T=跟踪/停⽌、Z=僵⼫进程COMMAND命令名/命令⾏UID进程所有者的⽤户id进程所有者的⽤户名USERReal user name进程所有者的组名RUSERGROUPPR列和TaskNI%CPUTIME%MEMVIRTSWAPRESCODEDATAnFLTnDRT

优先级nice值。负值表⽰⾼优先级,正值表⽰低优先级上次更新到现在的CPU时间占⽤百分⽐进程使⽤的CPU时间总计,秒进程使⽤的物理内存百分⽐进程使⽤的虚拟内存总量,单位kb。VIRT=SWAP+RES进程使⽤的虚拟内存中,SWAP SPACE⼤⼩, kb。进程使⽤的、未被换出的物理内存⼤⼩,单位kb。RES=CODE+DATA可执⾏代码占⽤的物理内存⼤⼩, kb可执⾏代码以外的部分(数据段+栈)占⽤的物理内存⼤⼩, kb

页⾯错误次数最后⼀次写⼊到现在,被修改过的页⾯数。

⼯具2:vmstat命令vmstatvmstat [options] [delay [count]]第⼀个条是⾃开机到现在的平均值(不指定delay,仅显⽰此条)下⾯的是delay时间间隔的抽样 ,procs、memory都是瞬时的情况参数:vmstat –t(时间戳)rRunnable,ready to run(running / waiting for runtime)的进程数uninterruptible wait(通常因为io)的进程数B使⽤的虚拟内存⼤⼩KBswpdfreeMemoryBuffCachesi、soSwapIoSystembi、boin、cs空闲内存⼤⼩Procs被⽤作Buffer的内存⼤⼩被⽤作cache的内存⼤⼩磁盘分页到内存memory Swapped in ⼤⼩(kb/s)内存分页到磁盘memory Swapped out ⼤⼩。si so 趋于0,内存状态较好。读、写磁盘的块数(block/s)每秒中断数System每秒中断数us、sy、每秒上下⽂切换数Cpu时间%id、waStTime stolen from a virtual machineCpu

⼯具3:iostat命令iostat从开机到当前执⾏时刻的统计信息

参数:iostat –x(详细信息)%userCpu处理⾮内核%CPU%nice⽤户级别with a nice priority cpu使⽤%多核:平%sys内核使⽤cpu%均%idle空闲时间的%Device块设备名称tps对应设备的每秒Io请求数rrqm/s每秒该设备的读、写请求被合并数请求wrqm/s数r/s、w/s每秒读rio、写wio请求数Blk_read/sBlk_wrtn/sBlk_readBLk_wrtn数Kb_read/s据Kb_wrtn/s量DeviceKb_readKb_wrtnrsec/sWsec/sAvgrq-szawaitr_await等待w_awaitsvctmAvgqu-sz%util平均每次设备io操作时间(接近await表⽰等待越少)平均io队列长度。设备繁忙程度(80%很忙)每秒读、写数据量(块数)。/读、写的总量。Blk_read、BLk_wrtn从开机到现在 读写的总块数

块的⼤⼩:dumpe2fs –h /dev/sda1 |grep –F “Block size”每秒读、写数据量(KB)/读、写的总量。----- iostat –krMB/s、wMB/s (MB) ----- iostat –m

每秒读、写数据量(扇区)

每个io请求的平均扇区数。平均每次设备i/o等待和操作的时间。

⼯具4:strace命令strace被进程调⽤的系统调⽤的执⾏情况,定位异常的具体位置。先使⽤top命令定位异常的进程strace –T –p [pid]显⽰每次调⽤所耗时间strace –c –p [pid]strace –c find/etc –name xxx (strace –c

统计每⼀系统调⽤的内核执⾏时间、次数和出错次数等

⼯具5:netstat命令netstat各种⽹络相关信息,如⽹络连接,路由表,Interface Statisticsmasquerade连接ActiveRecv-Q接收但未做处理的字节数。InternetconnectionsSend-Q发送但还未被确认的字节数。ActiveUNIXdomainsocketsProtoRefCntTypesState⼀般应是0。⼤于0表⽰正在队列中堆积数据Proto显⽰连接使⽤的协议(tcp udp )RefCnt表⽰连接到本套接⼝上的进程号Types显⽰套接⼝的类型socket状态:LISTEN(服务端socket正在监听)ESTABLISHED(已建⽴连接)SYN_SENT(发送连接请求后等待匹配)SYN_RECV(收到连接请求等连接请求的确认)FIN_WAIT1(发送中断请求后,等中断确认),FIN_WAIT2(收到ack后,稍后中断)TIME_WAIT(收到fin、 ack,socket等关闭对剩余数据包的处理后再回复中断确认)CLOSE_WAIT(收到fin后回复了ack,由本地确认是否关闭连接)CLOSING(都中断了,但还有数据传输)LAST_ACK(被动关闭在发送了fin后,再等待对⽅的ack,收到ack后关闭连接)CLOSED(没有任何连接状态)unknown(未知)PathPath表⽰连接到套接⼝的其它进程使⽤的路径名。-a (all)显⽰所有listen和non-listen,默认不显⽰listen-t (tcp)仅显⽰tcp相关选项;-u (udp)仅显⽰udp相关选项-n 拒绝显⽰别名,能显⽰数字的全部转化成数字。

-p 显⽰建⽴连接的pid和程序名 [root@centos0 xampp]# netstat -anp|grep mysql

-e 显⽰扩展信息,例如uid等netstat -ae |grep mysql-s 按各个协议进⾏统计-c 不停的刷新continuous listing。

提⽰:LISTEN和LISTENING的状态只有⽤-a或者-l才能看到

ps命令ps详细的进程信息ps –elFLSPstree pmapF进程状态:S=sleeping、R=runnig、T=stopped ortraced、D=interuptable sleep,Z=zombieProcess flagUIDPIDPPIDLWPCNLWPPRINIADDRSZWCHANRSSPSRSTIMETTYTIMECMDPs –A :显⽰正在运⾏的所有进程:LWP[Light weight process,or thread]ID of thelwp being reportedCpu利⽤率Number of lwps(threads)in the processPriority of theprocessNiceness levelProcess address space【不显⽰的】Code+data+stack 总的memory⼤⼩(kb)Sleeping的Kernel function名。- 进程为运⾏,*多线程驻留集⼤⼩、non-swapped物理内存使⽤⼤⼩Processor that process is currently assigned to.本次开始的时间终端⾃动启动占⽤的cpu时间开启命令(有参数)⼯具6:Iptraf使⽤(待整理)⼯具7:spotlight on linux使⽤(待整理)各种命令

4.调优(还没有熟悉)注:⼀点⼀点的调,调了⽤同⼀⽅式来衡量性能改变情况 修改各项配置相关信息前,要备份。记录每次修改,尤其是会影响其他⽅⾯的修改。不要在⽣产环境调调优完成后,继续监测其它指标,直到达到性能⽬标调优后再评估性能情况,和基准对⽐。ulimit调整内核参数ulimit –a #⽤来显⽰当前的各种⽤户进程限制。linux对每个⽤户、系统限制了最⼤的进程数。vi /etc/profileulimit –u 10000 #⽤户的最⼤进程数ulimit –n 4096 #每个进程可以打开的⽂件数ulimit –d unlimited #数据段长度ulimit –m unlimited #最⼤内存⼤⼩ulimit –s unlimited #堆栈的⼤⼩ulimit –t unlimited #cpu时间ulimit –v unlimited#虚拟内存解除linux系统的最⼤进程数和最⼤⽂件打开限制vi /etc/security/,添加以下内容,注意添加完成后重启*代表所有⽤户,也可以指定⽤户;noproc 代表最⼤的进程数;nofile 代表最⼤⽂件打开数* soft noproc 11000*hard noproc 11000*soft nofile 8192*hard nofile 20480

命令: show status like '%下⾯变量%';Aborted_clients 由于客户没有正确关闭连接已经死掉,已经放弃的连接数量.Aborted_connects 尝试已经失败的MySQL服务器的连接的次数.Connections 试图连接MySQL服务器的次数.Created_tmp_tables 当执⾏语句时,已经被创造了的隐含临时表的数量.Delayed_insert_threads 正在使⽤的延迟插⼊处理器线程的数量.Delayed_writes ⽤INSERT DELAYED写⼊的⾏数.Delayed_errors ⽤INSERT DELAYED写⼊的发⽣某些错误(可能重复键值)的⾏数.Flush_commands 执⾏FLUSH命令的次数.Handler_delete 请求从⼀张表中删除⾏的次数.Handler_read_first 请求读⼊表中第⼀⾏的次数.Handler_read_key 请求数字基于键读⾏.Handler_read_next 请求读⼊基于⼀个键的⼀⾏的次数.Handler_read_rnd 请求读⼊基于⼀个固定位置的⼀⾏的次数.Handler_update 请求更新表中⼀⾏的次数.Handler_write 请求向表中插⼊⼀⾏的次数.Key_blocks_used ⽤于关键字缓存的块的数量.Key_read_requests 请求从缓存读⼊⼀个键值的次数.Key_reads 从磁盘物理读⼊⼀个键值的次数.Key_write_requests 请求将⼀个关键字块写⼊缓存次数.Key_writes 将⼀个键值块物理写⼊磁盘的次数.Max_used_connections 同时使⽤的连接的最⼤数⽬.Not_flushed_key_blocks 在键缓存中已经改变但是还没被清空到磁盘上的键块.Not_flushed_delayed_rows 在INSERT DELAY队列中等待写⼊的⾏的数量.Open_tables 打开表的数量.Open_files 打开⽂件的数量.Open_streams 打开流的数量(主要⽤于⽇志记载)Opened_tables 已经打开的表的数量.Questions 发往服务器的查询的数量.Slow_queries 要花超过long_query_time时间的查询数量.Threads_connected 当前打开的连接的数量.Threads_running 不在睡眠的线程数量.Uptime 服务器⼯作了多少秒.

发布者:admin,转转请注明出处:http://www.yc00.com/web/1690955895a472454.html

相关推荐

发表回复

评论列表(0条)

  • 暂无评论

联系我们

400-800-8888

在线咨询: QQ交谈

邮件:admin@example.com

工作时间:周一至周五,9:30-18:30,节假日休息

关注微信