Shell----监控CPU/内存/负载高时的进程 1.编写脚本 vim cpu-warning.sh #!/bin/bash #监控系统cpu的情况脚本程序 #取当前空闲cpu百份比值(只取整数部分) [ ! -f /bin/sar ] && yum install sysstat -y &>/dev/null cpu_idle=`sar -u 1 5|awk 'END{print $NF}'|awk -F'.' '{print $1}'` #设置空闲cpu的告警值为20%…
利用shell监控cpu.磁盘.内存使用率,达到警报阈值发邮件进行通知 并配合任务计划,即可及时获取报警信息 #!/bin/bash ############################################## #Author: Liuzhengwei - 1135960569@qq.com #QQ:1135960569 #Last modified: 2017-04-19 21:50 #Filename: jiankong.sh #Description:  #########…
话说有些时间没有更新博客了,今天正好解决这个问题,顺便把它记录下来.. 今天遇到的情况是这样的,当CPU占用过高时,屏幕四周会出现一个红框. 闪一次两次算了,但是挺萌的(TMD)不停的闪,我的钛合金狗眼都受不了!! 首先我在"开发人员选项",里面勾掉"严格模式",闪屏有改善,但是还是存在啊~ 那该肿么办啊,请看下面讲解!! 打开system/build.prop,加入下面的代码 persist.sys.strictmode.visual= persist.sys.s…
linux Java项目CPU内存占用高故障排查 top -Hp 进程号 显示进程中每个线程信息,配合jstack定位java线程运行情况 # 线程详情 jstack 线程PID # 查看堆内存中的对象的情况,如果有大量对象在持续被引用,没有被释放掉,就产生了内存泄露,要结合代码,把不用的对象释放掉 jmap -histo 线程PID # 查看堆的使用情况,各个堆空间的占用情况 jmap -heap # 查询进程id垃圾回收情况 jstat -gcutil 线程PID…
想在服务器上写一个shell脚本,在磁盘使用率达到80%时,自动清理掉一些没有用的日志文件,根据这个想法,在生产环境上写了一个以下脚本,按照该流程,可实现在linux环境做一个定时任务来执行shell脚本,监控磁盘内存,当到达80%时,将自动清空catalina.out的日志文件. 1.进入到tomcat的bin目录执行以下操作: #touch clearlog.sh #vim clearlog.sh 1 #!/bin/bash 2 maxUsed=$(df -h|grep /dev/sda1|…
一.使用top命令查看占用高资源的java项目的进程ID(pid): top 二.查看该进程中的线程所占用资源的情况:top -Hp pid 三.查看该线程对应的16进制:printf %x 11129 打印并保存该进程中堆栈的使用信息日志:jstack -l 11095 >> jstack.log  四.查看该进程中使用高资源的线程的具体信息日志:vim jstack.log 查找上一步的16进制的线程id:/2b79 定位到问题代码: 以上是测试所用(自己写的死循环) 实际排查时却并没有发…
一,安装pidstat: 1,安装 [root@localhost yum.repos.d]# yum install sysstat 2,查看版本: [root@localhost ~]# pidstat -V sysstat 版本 11.7.3 (C) Sebastien Godard (sysstat <at> orange.fr) 说明:一般会默认安装,如未安装则可以用上面的yum命令进行安装 3,如果已安装,可以查看所属的rpm包: [root@yjweb ~]# whereis p…
在阅读Nginx模块开发与架构模式一书时: "Nginx  上的进程数 与CPU核心数相等时(最好每个worker进程都绑定特定的CPU核心),进程间切换的代价是最小的;" &&  "我们不能任由操作系统负载均衡,因为我们自己更了解自己的程序,所以,我们可以手动地为其分配CPU核,而不会过多地占用CPU0,或是让我们关键进程和一堆别的进程挤在一起" 引申出此文: 绑定CPU核心: 1.taskset taskset是LINUX提供的一个命令(ubun…
该脚本检测cpu和内存的使用情况,只需要调整memorySetting.cpuSetting.userEmail要发邮件报警的email地址即可 如果没有配置发邮件参数的哥们,已配置了的,直接飞到代码区: 1.vim /etc/mail.rc 2.找到以下内容 set from=yangxingyi@duoduofenqi.com #来自什么 set smtp=smtp.exmail.qq.com #根据您的邮箱发件服务器填写,我这位是TX的企业邮箱 set smtp-auth-user=yan…
cpu信息采集 cpu使用率 采集算法 通过/proc/stat文件采集并计算CPU总使用率或者单个核使用率.以cpu0为例,算法如下: 1. cat /proc/stat | grep ‘cpu0’得到cpu0的信息 2. cpuTotal1=user+nice+system+idle+iowait+irq+softirq 3. cpuUsed1=user+nice+system+irq+softirq 4. sleep 30秒 5. 再次cat /proc/stat | grep 'cpu0…
一次线上问题的解决 线上发现服务cpu使用达到98%,负载高达200多,64核心cpu,下面介绍解决过程: 1.top命令查出占用cpu高的进程pid 2.使用jstack -l pid >dump.txt 获取dump文件 3.使用top -H查询出消耗资源的线程号tid(十进制线程id),转换为16进制 4.cat dump.txt | grep -10 tid(16进制) 查询出该进程号上下10行,定位问题并解决问题 ====================================…
#!/usr/bin/python #coding:utf-8 #导入psutil模块 import psutil import yagmail def mail(subject,contents): #形参为邮件的标题和内容 yag = yagmail.SMTP(user='zhangweihappy8@163.com', password='xxx', host='smtp.163.com') #passwd为授权的密码不是登陆密码 #发送邮件 yag.send(to='zui_city_z…
# qianxiao996精心制作 #博客地址:https://blog.csdn.net/qq_36374896 import psutil, time,smtplib,socket import datetime from wechatpy import WeChatClient from email.mime.text import MIMEText from email.utils import formataddr from prettytable import PrettyTable…
监控的时候我们会监控cpu的负载,那么什么是负载? 编程时候有多核多线程的概念,那么cpu内部如何运作的? 搞清多少bit cpu? 有几个物理cpu?每个cpu是几核的? 之前购买内存条时候,需要关注服务器的内存条信息,是ddr3还是4,还有频率. 多CPU: 即一个机器装了多个cpu 多核CPU:即一个cpu有多个核心 - 简单粗暴的看下我共有几核cpu(2个) $ cat /proc/cpuinfo |grep processor processor : 0 processor : 1 -…
Oracle数据库经常会遇到CPU利用率很高的情况,这种时候大都是数据库中存在着严重性能低下的SQL语句,这种SQL语句大大的消耗了CPU资源,导致整个系统性能低下.当然,引起严重性能低下的SQL语句的原因是多方面的,具体的原因要具体的来分析,下面通过一个实际的案例来说明如何来诊断和解决CPU利用率高的这类问题. 数据库:Oracle9.2.0.4 问题描述:现场工程师汇报数据库非常慢,几乎所有应用操作均无法正常进行. 首先登陆主机,执行top发现CPU资源几乎消耗殆尽,存在很多占用CPU很高的…
一,slabtop 所属的包: [root@yjweb ~]# whereis slabtop slabtop: /usr/bin/slabtop /usr/share/man/man1/slabtop.1.gz [root@yjweb ~]# rpm -qf /usr/bin/slabtop procps-ng-3.3.15-1.el8.x86_64 如果找不到命令,可以用yum进行安装: [root@yjweb ~]# yum install procps-ng 说明:刘宏缔的架构森林是一个…
Linux 性能监控之CPU&内存&I/O监控Shell脚本2   by:授客 QQ:1033553122 思路: 捕获数据->停止捕获数据->提取数据 备注:一些命令的输出,第一次记录的数据是自重启到当前时间的平均值,所以,如果采用循环的方式不断重复开启命令,获取的数据可能不太准确,所以,这里采用开启命令后,一次性捕获需要的数据. (一) 捕获数据 用法:sh capture.sh arg1 arg2 参数说明:arg1为采样频率,arg2为采样时长,单位都为秒 例子:2秒采…
Linux 性能监控之CPU&内存&I/O监控Shell脚本1   by:授客 QQ:1033553122   #!/bin/bash # 获取要监控的本地服务器IP地址 IP=`ifconfig eth0 | grep "inet addr" | cut -f 2 -d ":" | cut -f 1 -d " "` echo "IP地址:"$IP # 获取cpu总核数 cpu_num=`grep -c &qu…
这篇博客中所写的脚本,在实际工作中并没有什么卵用,工作中并不会用到这种脚本去监控.不过自己写一遍,可以让初学者对CPU.内存.磁盘等一些基础知识和基础命令更加了解. 1.利用vmstat工具监控CPU详细信息,然后基于/proc/stat计算CPU利用率进行监控,超过80报警并提取出占用cpu最高的前十进程. vmstat是Linux系统监控工具,使用vmstat命令可以得到关于进程.内存.内存分页.堵塞IO.traps及CPU活动的信息. r:运行队列中的进程数:b:等待IO的进程数. swp…
获取cpu.内存结果 pid=$1 #获取进程pid echo $pid interval=1 #设置采集间隔 while true do echo $(date +"%y-%m-%d %H:%M:%S") >> proc_memlog.txt cat /proc/$pid/status|grep -e VmRSS >> proc_memlog.txt #获取内存占用 cpu=`top -b -n 1 -p $pid|tail -2|head -1|awk '{…
1.监控CPU利用率(通过vmstat工具) #!/bin/bash #==================================================== # Author: lizhenliang - EMail:zhenliang369@.com # Create Date: -- # Description: cpu utilization monitor # blog:lizhenliang.blog.51cto.com #=====================…
前序 1,#cat /proc/stat/ 信息包含了所有CPU活动的信息,该文件中的所有值都是从系统启动开始累积到当前时刻 2,#vmstat –s 或者#vmstat 虚拟内存统计 3, #cat /proc/loadavg 从系统启动开始到当前累积时刻 4, #uptime 系统运行多长时间 5, #mpstat CPU的一些统计信息 6, # 一,linux系统CPU,内存,磁盘,网络流量监控脚本 [作者:佚名来源:不详时间:2010-7-6 [我来说两句大中小] cme.sh网络流量监…
原因总结 产生的原因一句话总结就是:等待磁盘I/O完成的进程过多,导致进程队列长度过大,但是cpu运行的进程却很少,这样就体现到负载过大了,cpu使用率低. 下面内容是具体的原理分析:在分析负载为什么高之前先介绍下什么是负载.多任务操作系统.进程调度等相关概念. 什么是负载 什么是负载:负载就是cpu在一段时间内正在处理以及等待cpu处理的进程数之和的统计信息,也就是cpu使用队列的长度统计信息,这个数字越小越好(如果超过CPU核心*0.7就是不正常) 负载分为两大部分:CPU负载.IO负载 例…
参考网站: https://www.fujieace.com/php/php-fpm.html https://www.fujieace.com/php/pm-max_children-2.html pm.max_children 设置多大合适? php-fpm.conf有两个至关重要的参数: 一个是”max_children”,另一个是”request_terminate_timeout”. pm.max_children 表示 php-fpm 能启动的子进程的最大数量. request_te…
一.内存过高 1.内存过高一般有两种情况:内存溢出和内存泄漏 (1)内存溢出:程序分配的内存超出物理机的内存大小,导致无法继续分配内存,出现OOM报错 (2)内存泄漏:不再使用的对象一直占据着内存不释放,导致这块内存浪费掉,久而久之,内存泄漏的对象堆积起来,也会导致物理机的内存被耗尽,出现OOM报错 2.内存过高的检测办法:通常我们的Java服务器部署在Linux机器上面,可以通过jvm自带的命令进行一些检测 (1)查看对象的数目和占用内存大小 ①参数为Java程序的进程号,将结果导出到指定目录…
公司最近使用ElasticSearch作为数据报表汇总引擎.上线三个月累计数据800万,但是今天突然大面积出现查询超时,上服务器查看服务运行情况,发现cpu使用率高达300% mem 使用率也到了90%,下面记录了整个排查问题的过程 1.首先查看elastic cpu和mem占用情况 //首先查看所有进程 # top //找到对应的elasticserch运行的PID,查看占用内存比较高的线程,Ctrl+c 退出 #top -Hp 12345 //为了下面方便调用API,将elasticsear…
一个简单的小程序 用函数实现!~~ 实现: cpu 使用率大于百分之50 时  ,  C 盘容量不足5 G 时, 内存 低于2G 时. 出现以上其中一种情况,发送自动报警邮件! 主要运用 到了两个 模块        yagmail   与   psutil      (没有的需要下载  pip 或者导入环境变量) 废话不多说 源代码如下: import yagmaildef sendmail(subject,contents): yag = yagmail.SMTP(user='xxxxxxx…
一.CPU过高分析 1)使用TOP命令查看CPU.内存使用状态可以发现CPU占用主要分为两部分,一部分为系统内核空间占用CPU百分比,一部分为用户空间占用CPU百分比.其中CPU状态中标示id的为空闲CPU百分比.当空闲CPU百分比越低,说明CPU占用率越高. 2)目前针对Linux下java进程占用CPU高的分析手段主要为使用linux命令查出高CPU使用的进程,前分析其是由于进程原因还是系统原因,在分析出为进程消耗过高CPU后列出占用CPU高和占用时间最长的线程并使用jdk自带的jstack…
一.内存过高 1.内存过高一般有两种情况:内存溢出和内存泄漏 (1)内存溢出:程序分配的内存超出物理机的内存大小,导致无法继续分配内存,出现OOM报错 (2)内存泄漏:不再使用的对象一直占据着内存不释放,导致这块内存浪费掉,久而久之,内存泄漏的对象堆积起来,也会导致物理机的内存被耗尽,出现OOM报错 2.内存过高的检测办法:通常我们的Java服务器部署在Linux机器上面,可以通过jvm自带的命令进行一些检测 (1)查看对象的数目和占用内存大小 ①参数为Java程序的进程号,将结果导出到指定目录…