在java的Thread类中有两个有用的函数,sleep和yield,sleep就是线程睡眠一定的时间,也就是交出cpu一段时间,yield用来暗示系统交出cpu控制权.这两个函数在多线程开发的时候特别有用,可以合理的分配cpu,提高程序的运行效率.对于sleep来说,有一个用法可以代替yield函数——sleep(0).调用这个函数也相当于告诉CPU交出cpu的控制权.在C/C++里面,也有sleep函数(Windows下叫Sleep,Unix下叫sleep),同样也可以用sleep(0)的用…
公司最近使用ElasticSearch作为数据报表汇总引擎.上线三个月累计数据800万,但是今天突然大面积出现查询超时,上服务器查看服务运行情况,发现cpu使用率高达300% mem 使用率也到了90%,下面记录了整个排查问题的过程 1.首先查看elastic cpu和mem占用情况 //首先查看所有进程 # top //找到对应的elasticserch运行的PID,查看占用内存比较高的线程,Ctrl+c 退出 #top -Hp 12345 //为了下面方便调用API,将elasticsear…
原文:.NET/C# 如何获取当前进程的 CPU 和内存占用?如何获取全局 CPU 和内存占用? 都知道可以在任务管理器中查看进程的 CPU 和内存占用,那么如何通过 .NET 编写代码的方式来获取到 CPU 和内存占用呢? .NET 中提供了 PerformanceCounter 类型,可以用来监视系统中大量的性能问题. 本文内容 获取全局 CPU 和内存占用 获取当前进程的 CPU 和内存占用 获取全局 CPU 和内存占用 要获取到全系统中的 CPU 占用率,获取全系统中内存占用,需要首先分…
最近发现自己学的很多东西没有做好积淀的工作,也萌生了写一些东西的念头.本人也没有写博客的习惯,下边就写一下手机端的性能测试. 最近公司,要我们从事对竞品的性能测试,我负责CPU和内存的性能测试,下面就和大家来分享一下android应用程序的CPU和内存的性能测试. 首先稍做分析一下测试环境:我们知道CPU和内存占用是一个实时变化的状态,而市面上还没有具体的哪款android应用能做到实时监控CPU和内存占用并使用log日志保存.考虑到android的底层框架是基于Linux的平台,所有我们可以通…
首先稍做分析一下测试环境:我们知道CPU和内存占用是一个实时变化的状态,而市面上还没有具体的哪款android应用能做到实时监控CPU和内存占用并使用log日志保存.考虑到android的底层框架是基于Linux的平台,所有我们可以通过Linux的资源监控命令来实现对android平台的资源实时监控. 要做到上边的测试环境的实现,需要具备以下几点: 1.被测试的手机具备root权限:因为涉及到底层的linux命令,需要读取或执行相应的文件.至于如何root你的手机,不同型号的手机root的方法不…
1.使用top命令 输入M表示按内存排序,也就是RES这一列从大到小排序了 它占用了3.3%的内存,用134568除以4030416结果就是3.3左右 也就是说 总物理内存是3.84GB RES这一列除以1024约等于130MB左右的物理内存,而VIRT这一列不具备参考性.因为可以看到它和实际的物理内存差不多大.甚至比物理内存还大 %MEM:进程使用的物理内存和总内存的百分比 通过下面命令可以查看物理内存占用前十的进程 其中VSZ这一列不具备参考性,RSS这一列才是实际物理内存占用情况 head…
iftop 查看带宽占用情况(总)yum install -y iftop 安装iftopnethogs 查看进程流量 curl http://218.5.73.233:8060/ip.php 查看出口ip 查看当前线程:ps -ef|grep javaps -ef|gerp com.meiya.main(包名) 1.CPU使用率情况命令:top 备注:用户占用CPU1.5%,系统占用CPU1.5%,空闲95.3%,其他占用1.7%:2.内存使用率情况命令:free -g 备注:内存总大小15G…
如何测试sql语句执行时间 在MSSQL Server中通过查看SQL语句执行所用的时间,来衡量SQL语句的性能. set statistics profile on set statistics io on set statistics time on 你执行的SQL语句 go set statistics profile off set statistics io off set statistics time off 执行完后点消息即可.补充说明:set statistics io检查查询…
12. sar 找出系统瓶颈的利器 sar是System Activity Reporter(系统活动情况报告)的缩写.sar工具将对系统当前的状态进行取样,然后通过计算数据和比例来表达系统的当前运行状态.它的特点是可以 连续对系统取样,获得大量的取样数据:取样数据和分析的结果都可以存入文件,所需的负载很小.sar是目前Linux上最为全面的系统性能分析工具之一, 可以从14个大方面对系统的活动进行报告,包括文件的读写情况.系统调用的使用情况.串口.CPU效率.内存使用状况.进程活动及IPC有关…
一.端口占用情况   https://www.cnblogs.com/CEO-H/p/7794306.html (1)查看所有端口.进程的使用情况:netstat -tunlp (2)查看某一端口的使用情况: netstat -tunlp|grep 5560 二.查看内存使用情况 (1)查看占用情况(动态):top https://blog.csdn.net/hongkaihua1987/article/details/76573963 按下P(大写)可以找到占用内存最大的进程 (2)查看占用情…
内存增序 ps aux --sort rss 内存减序 ps aux --sort -rss cpu增序 ps auxw --sort=%cpu cpu减序 ps auxw --sort=-%cpu 内存占用最多的10个进程 cpu占用最多的10个进程…
1.win键+R键打开运行对话框框,输入gpedit.msc打开本地组策略编辑器(组策略):2.依次打开计算机配置-管理模板-Windows组件-Windows Defender:3.如果要关闭Windows defender,则将“关闭 Windows Defender”项设置为“已启用”即可.4.如果要保留Windows defender,只解决CPU占用和内存占用高的问题,则继续下列步骤:5.打开“实时保护”,将里面的“不论何时启动实时保护,都会启动进程扫描”这一配置项设置为“已禁用”(此…
psutil - A cross-platform process and system utilities module for Python 1. 安装 pip 安装即可. windows 下需要安装 vs2008,否则报错: Unable to find vcvarsall.bat 如果已经安装 vs2010 / vs2012 则需要设置环境变量,VS90COMNTOOLS 指向已有的 vs 变量. vs2010 设置如下: VS90COMNTOOLS = %VS100COMNTOOLS%…
1.修改idea配置文件D:\ideaIU-2017.2\bin\idea.exe.vmoptions 如: -server -Xms800m -Xmx800m -XX:MaxPermSize=512m -XX:ReservedCodeCacheSize=350m -XX:+UseConcMarkSweepGC -XX:SoftRefLRUPolicyMSPerMB= -ea -Dsun.io.useCanonCaches=false -Djava.net.preferIPv4Stack=tru…
1,查看CPU占用量最高的会话及SQL语句   select spid,cmd,cpu,physical_io,memusage, (select top 1 [text] from ::fn_get_sql(sql_handle)) sql_text from master..sysprocesses order by cpu desc,physical_io desc   2,查看缓存重用次数少,内存占用大的SQL语句   SELECT TOP 100 usecounts, objtype,…
早些时候,一直有个疑问,就是比如你从前端发一个操作之后,后台为什么能够及时处理你的东西呢?当然了,我说的不是,服务器为什么能够立即接收到你的请求之类高大上的东西.而是,假设你用异步去做一个事情,而后台有一个处理程序在处理你的申请,你的目的自然是不想让操作阻塞,所以处理肯定是处理程序主动触发的过程.那么怎样做能够让其能够及时处理问题呢? 确实也困惑了我许久.(我相信也有不少同学会有类似疑问) 所以我觉得有必要解解惑. 需求示例1: 用户请求某操作时,需要与此同时给用户发个邮件,但是这个邮件可能会很…
早些时候,一直有个疑问,就是比如你从前端发一个操作之后,后台为什么能够及时处理你的东西呢?当然了,我说的不是,服务器为什么能够立即接收到你的请求之类高大上的东西.而是,假设你用异步去做一个事情,而后台有一个处理程序在处理你的申请,你的目的自然是不想让操作阻塞,所以处理肯定是处理程序主动触发的过程.那么怎样做能够让其能够及时处理问题呢? 确实也困惑了我许久.(我相信也有不少同学会有类似疑问) 所以我觉得有必要解解惑. 需求示例1: 用户请求某操作时,需要与此同时给用户发个邮件,但是这个邮件可能会很…
沉淀再出发:java中的HashMap.ConcurrentHashMap和Hashtable的认识 一.前言 很多知识在学习或者使用了之后总是会忘记的,但是如果把这些只是背后的原理理解了,并且记忆下来,这样我们就不会忘记了,常用的方法有对比记忆,将几个易混的概念放到一起进行比较,对我们的学习和生活有很大的帮助,比如hashmap和hashtab这两个概念的对比和记忆. 二.HashMap的基础知识 2.1.HashMap的介绍 HashMap 是一个散列表,它存储的内容是键值对(key-val…
一道编程题如下: 实例化三个线程,一个线程打印a,一个打印b,一个打印c,三个线程同时执行,要求打印出6个连着的abc 题目分析: 通过题意我们可以得出,本题需要我们使用三个线程,三个线程分别会打印6次字符,关键是如何保证顺序一定是abc...呢.所以此题需要同步机制来解决问题! 令打印字符A的线程为ThreadA,打印B的ThreadB,打印C的为ThreadC.问题为三线程间的同步唤醒操作,主要的目的就是使程序按ThreadA->ThreadB->ThreadC- >ThreadA循…
问题 (1)LinkedTransferQueue是什么东东? (2)LinkedTransferQueue是怎么实现阻塞队列的? (3)LinkedTransferQueue是怎么控制并发安全的? (4)LinkedTransferQueue与SynchronousQueue有什么异同? 简介 LinkedTransferQueue是LinkedBlockingQueue.SynchronousQueue(公平模式).ConcurrentLinkedQueue三者的集合体,它综合了这三者的方法…
深入浅出ConcurrentHashMap(1.8) 前言 HashMap是我们平时开发过程中用的比较多的集合,但它是非线程安全的,在涉及到多线程并发的情况,进行put操作有可能会引起死循环,导致CPU利用率接近100%. final HashMap<String, String> map = new HashMap<String, String>(2); for (int i = 0; i < 10000; i++) { new Thread(new Runnable()…
JDK版本 ConcurrentHashMap源码分析 table:默认为null,初始化发生在第一次插入操作,默认大小为16的数组,用来存储Node节点数据,扩容时大小总是2的幂次方. nextTable:默认为null,扩容时新生成的数组,其大小为原数组的两倍. sizeCtl :默认为0,用来控制table的初始化和扩容操作,具体应用在后续会体现出来. -1 代表table正在初始化 -N 表示有N-1个线程正在进行扩容操作 其余情况: 1.如果table未初始化,表示table需要初始化…
转载两篇不错的文章: 第一篇: 前言 HashMap是我们平时开发过程中用的比较多的集合,但它是非线程安全的,在涉及到多线程并发的情况,进行put操作有可能会引起死循环,导致CPU利用率接近100%. final HashMap<String, String> map = new HashMap<String, String>(2); for (int i = 0; i < 10000; i++) { new Thread(new Runnable() { @Override…
转载:https://www.jianshu.com/p/c0642afe03e0 好文 关于文章中的疑问:为什么要构造一个反序链表,放在nextTable的i+n的位置上呢,在<深入分析ConcurrentHashMap1.8的扩容实现 >一文中进行了详细分析. 注意:ConcurrentHashMap中的get方法中,没有进行同步,理由可能如下: 代码中会先执行 e = tabAt(tab, (n - 1) & h)),该方法是通过CAS操作取出hsah值对应桶中的链表(或者树),…
ConcurrentHashMap源码解析 目录 ConcurrentHashMap源码解析 jdk8之前的实现原理 jdk8的实现原理 变量解释 初始化 初始化table put操作 hash算法 获取table中对应的元素f 链表或红黑树操作 table 扩容 get操作 jdk8之前的实现原理 jdk8的实现原理 JDK8的实现已经抛弃了Segment分段锁机制,利用CAS+Synchronized来保证并发更新的安全,底层依然采用数组+链表+红黑树的存储结构. 变量解释 table:默认…
jdk8之前的实现原理 jdk1.7中采用的数据结构是Segment + HashEntry 的方式进行实现.主要的结构如下图: ConcurrentHashMap 并不是将每个方法都在同一个锁上同步并使得每次只能有一个线程访问容器,而是使用一种粒度更细的加锁机制来实现更大程度的共享,这种机制被称为分段锁.在这种机制中,任意数量的读取线程可以并发地访问Map,执行读取操作的线程和执行写入操作的线程可以并发地访问Map,并且一定数量的写入线程可以并发地修改Map.这样可以在并发条件下实现更高的吞吐…
(1) 系统+软件版本 CentOS 6.5 (Final), 64 位,内核initramfs-2.6.32-431.5.1.el6.x86_64, MATLAB Version: 8.1.0.604 (R2013a)     Java 1.6.0_17-b04 with Sun Microsystems Inc. Java HotSpot(TM) 64-Bit Server VM mixed mode (2) 问题描述 通常在这个环境下,小文件的代码都可以调试通过. 最近,把所有函数集合到一…
httpd.exe进程占用cpu超过50%,关闭掉Apache服务,cpu应用率立刻下降到0.  重新启动Apache又出现占用cpu高的情况.  原因是:httpd.exe和防火墙配置有冲突. 解决方法如下: 1.网上邻居->本地链接->属性->internet协议(TCP/IP)->属性->高级->wins标签->去掉起用LMhosts查询前的勾. 2.控制面版->windows防火墙->高级标签->本地链接设置->服务的标签里勾选安全…
http://www.nowamagic.net/librarys/veda/detail/2539 今天下午网站宕了两次机,发工单给阿里云,发现原因是服务器的CPU 100%了. 重启服务器后,使用 top 命令看看是哪些进程消耗那么大的 CPU 使用.盯了有好十几分钟,主要消耗 CPU 的进程有两个,一个是 mysql,另一个是 apache.下面的图可以看到,mysql 占用了很大部分的 CPU 使用.apache 单个进程虽然占得不多,但有不少个 apache 进程同时存在,也消耗了不少…
问题描述:生产环境下的某台tomcat7服务器,在刚发布时的时候一切都很正常,在运行一段时间后就出现CPU占用很高的问题,基本上是负载一天比一天高. 问题分析:1,程序属于CPU密集型,和开发沟通过,排除此类情况.2,程序代码有问题,出现死循环,可能性极大. 问题解决:1,开发那边无法排查代码某个模块有问题,从日志上也无法分析得出.2,记得原来通过strace跟踪的方法解决了一台PHP服务器CPU占用高的问题,但是通过这种方法无效,经过google搜索,发现可以通过下面的方法进行解决,那就尝试下…