cpu参数

Java程序线上故障排查

↘锁芯ラ 提交于 2019-12-04 13:59:41
目录 一、Linux 内存和cpu 网络 磁盘 /proc文件系统 二、JVM Java堆和垃圾收集器 gc日志分析 JVMTI介绍 Attach机制 java自带工具 三、三方工具 jprofile arthas (类似btrace的工具) gceasy 四、实际案例 连接泄漏 String拼接导致内存溢出 堆内存占用过大 CPU占用高问题 aerospike线程阻塞导致内存溢出问题 问题 这篇文章是在公司做了不少的线上Java服务故障排查和优化之后的一个总结,可以作为一个工具清单,在分析问题的时候需要有整体思路:全局观,先从系统层面入手,大致定位方向(内存,cpu,磁盘,网络),然后再去分析具体的进程。 一、Linux 内存和cpu 内存和cpu问题是出问题最多的一个点,因为有些命令如top同时可以观察到内存和cpu所以放在一起。 top命令 常用参数: -H 打印具体的线程, -p 打印某个进程 进入后 按数字1 可以切换cpu的图形看有几个核 下面是我的测试环境shell: top - 14:28:49 up 7 min, 3 users, load average: 0.08, 0.26, 0.19 Tasks: 221 total, 2 running, 219 sleeping, 0 stopped, 0 zombie %Cpu(s): 5.1 us, 3.4 sy,

docker 命令大全

杀马特。学长 韩版系。学妹 提交于 2019-12-04 11:56:10
1. 镜像仓库 1.1 docker search [OPTIONS] TERM // 搜索镜像 选项 说明 示例 -f, --filter filter 根据条件筛选 --filter=is-automated=true // 只列出 automated build类型的镜像 --filter=stars=10 // 列出收藏数不小于指定值的镜像 --limit int 设置搜索结果的记录数量 --no-trunc 搜索结果完整显示 1.2 docker pull [OPTIONS] NAME[:TAG|@DIGEST] // 从镜像参数中拉取指定镜像 选项 说明 示例 -a 拉取所有tagged镜像 --disable-content-trust 忽略镜像的校验,默认为true 1.3 docker push [OPTIONS] NAME[:TAG] // 上传镜像到仓库(要先登录仓库) 选项 说明 示例 --disable-content-trust 忽略镜像校验 1.4 docker login -u 用户名 -p 密码 //登录 1.5 docker logout // 登出 2. 容器操作 2.1 docker ps [OPTIONS] //列出容器 选项 说明 示例 -a 显示所有容器,默认只显示正在运行的 -f 过滤 docker ps -f name=hello

PostgreSQL 参数调整(性能优化)

别说谁变了你拦得住时间么 提交于 2019-12-04 10:26:08
昨天分别在外网和无外网环境下安装PostgreSQL,有外网环境下安装的相当顺利。但是在无外网环境下就是两个不同的概念了,可谓十有八折。感兴趣的同学可以搭建一下。 PostgreSQL安装完成后第一件事便是做相关测试,然后调整参数。 /*CPU 查看CPU型号*/ cat /proc/cpuinfo | grep name | cut -f2 -d: | uniq -c /*查看物理CPU个数*/ cat /proc/cpuinfo | grep "physical id" | sort -u | wc -l /*查看逻辑CPU个数*/ cat /proc/cpuinfo | grep "processor" | wc -l /*查看CPU内核数*/ cat /proc/cpuinfo | grep "cpu cores" | uniq /*查看单个物理CPU封装的逻辑CPU数量*/ cat /proc/cpuinfo | grep "siblings" | uniq /*计算是否开启超线程 ##逻辑CPU > 物理CPU x CPU核数 #开启超线程 ##逻辑CPU = 物理CPU x CPU核数 #没有开启超线程或不支持超线程*/ /*查看是否超线程,如果cpu cores数量和siblings数量一致,则没有启用超线程,否则超线程被启用。*/ cat /proc

pidstat 命令(Linux 进程使用资源情况采样)

≡放荡痞女 提交于 2019-12-04 09:03:35
pidstat 作用 pidstat 获取服务器指定进程的使用资源信息(包括 CPU、设备IO、内存、线程、任务切换等)。 执行一波 [root@wille ~]# pidstat Linux 2.6.32-642.4.2.el6.x86_64 (wille) 06/06/2018 _x86_64_ (4 CPU) 09:01:45 AM PID %usr %system %guest %CPU CPU Command 09:01:45 AM 1 0.00 0.00 0.00 0.00 1 init 09:01:45 AM 2033 0.00 0.00 0.00 0.00 0 sshd 09:01:45 AM 2044 0.00 0.00 0.00 0.00 0 ntpd 09:01:45 AM 2123 0.00 0.00 0.00 0.00 0 master 09:01:45 AM 2132 0.00 0.00 0.00 0.00 2 qmgr 09:01:45 AM 2137 0.00 0.00 0.00 0.00 0 crond 09:01:45 AM 15667 0.01 0.01 0.00 0.02 2 java 09:01:45 AM 19061 0.00 0.00 0.00 0.00 0 sshd ... 结果说明: 第一行显示服务器内核信息、主机名、日期和 CPU

每天一个linux命令

戏子无情 提交于 2019-12-04 06:34:36
lscpu:查看cpu参数。 $ lscpu Architecture: x86_64 CPU op-mode(s): 32-bit, 64-bit Byte Order: Little Endian CPU(s): 8 On-line CPU(s) list: 0-7 Thread(s) per core: 2 Core(s) per socket: 4 Socket(s): 1 NUMA node(s): 1 Vendor ID: GenuineIntel CPU family: 6 Model: 60 Model name: Intel(R) Core(TM) i7-4790 CPU @ 3.60GHz Stepping: 3 CPU MHz: 3838.500 CPU max MHz: 4000.0000 CPU min MHz: 800.0000 BogoMIPS: 7200.27 Virtualization: VT-x L1d cache: 32K L1i cache: 32K L2 cache: 256K L3 cache: 8192K 来源: https://www.cnblogs.com/minglee/p/11837887.html

深度解密Go语言之 pprof

坚强是说给别人听的谎言 提交于 2019-12-04 05:29:28
目录 什么是 pprof pprof 的作用 pprof 如何使用 runtime/pprof net/http/pprof pprof 进阶 Russ Cox 实战 查找内存泄露 总结 参考资料 相信很多人都听过“雷神 3”关于性能优化的故事。在一个 3D 游戏引擎的源码里,John Carmack 将 1/sqrt(x) 这个函数的执行效率优化到了极致。 一般我们使用二分法,或者牛顿迭代法计算一个浮点数的平方根。但在这个函数里,作者使用了一个“魔数”,根本没有迭代,两步就直接算出了平方根。令人叹为观止! 因为它是最底层的函数,而游戏里涉及到大量的这种运算,使得在运算资源极其紧张的 DOS 时代,游戏也可以流畅地运行。这就是性能优化的魅力! 工作中,当业务量比较小的时候,用的机器也少,体会不到性能优化带来的收益。而当一个业务使用了几千台机器的时候,性能优化 20%,那就能省下几百台机器,一年能省几百万。省下来的这些钱,给员工发年终奖,那得多 Happy! 一般而言,性能分析可以从三个层次来考虑:应用层、系统层、代码层。 应用层主要是梳理业务方的使用方式,让他们更合理地使用,在满足使用方需求的前提下,减少无意义的调用;系统层关注服务的架构,例如增加一层缓存;代码层则关心函数的执行效率,例如使用效率更高的开方算法等。 做任何事,都要讲究方法。在很多情况下,迅速把事情最关键的部分完成

alsa声卡驱动分析总结

筅森魡賤 提交于 2019-12-04 03:35:01
不小心 参考文章: http://blog.csdn.net/droidphone/ http://blog.chinaunix.net/uid/22917448.html 分析只列出部分重要代码,具体请参考 linux3.0 内核代码。 Alsa 架构整体来说十分复杂,但对于驱动移植来说我们仅仅只需要关心 ASOC 就足够了。 在学习 asoc 之前我们先了解一些专业术语: ASoC currently supportsthe three main Digital Audio Interfaces (DAI) found on SoC controllers and portable audio CODECs today, namelyAC97, I2S and PCM. ASoC 现在支持如今的SoC 控制器和便携 音频 解码器上的三个主要数字音频接口,即AC97 ,I2S,PCM(与pcm音频格式注意区分,前者是一种音频接口,后者是一种输入声卡的音频格式)。 AC97 AC97 ==== AC97 is a five wire interface commonly found on many PC soundcards. It is now also popular in many portable devices. This DAI has a reset line and

SDRAM/DDR是怎么寻址的?

99封情书 提交于 2019-12-04 01:54:20
SDRAM/DDR是怎么寻址的? 为了读取特定单元格的数据,在寻址时要首先确定是哪一个bank,然后在这个选定的bank中进行行列的寻址。在实际工作中,bank的地址与相应的行地址是同时发出的,此时这个命令称之为"行有效"或者“行激活”。在此之后,发送列地址寻址命令和具体的操作命令(读或写),这两个命令也是同时发送的。行列地址是可以复用的,一般来说DDR芯片的地址线为A0~A15,低地址线会被行列复用。以K4B4G1646B 4Gbit 256MB x 16bit内存芯片为例,A0~A14用做行地址,A0~A9用做列地址,这款芯片同时含有B0~B2用来选择bank。 在实际工作中,Bank地址与相应的行地址是同时发出的,此时这个命令称之为“行激活”(Row Active)。在此之后,将发送列地址寻址命令与具体的操作命令(是读还是写),这两个命令也是同时发出的,所以一般都会以“读/写命令”来表示列寻址。根据相关的标准,从行有效到读/写命令发出之间的间隔被定义为tRCD,即RAS to CAS Delay(RAS至CAS延迟,RAS就是行地址选通脉冲,CAS就是列地址选通脉冲),我们可以理解为行选通周期。tRCD是DDR的一个重要时序参数,广义的tRCD以时钟周期(tCK,Clock Time)数为单位,比如tRCD=3,就代表延迟周期为两个时钟周期,具体到确切的时间

使用WakeLock使Android应用程序保持后台唤醒

倾然丶 夕夏残阳落幕 提交于 2019-12-04 01:15:57
在使用一些产品列如微信、QQ之类的,如果有新消息来时,手机屏幕即使在锁屏状态下也会亮起并提示声音,这时用户就知道有新消息来临了。但是,一般情况下手机锁屏后,Android系统为了省电以及减少CPU消耗,在一段时间后会使系统进入休眠状态,这时,Android系统中CPU会保持在一个相对较低的功耗状态。针对前面的例子,收到新消息必定有网络请求,而网络请求是消耗CPU的操作,那么如何在锁屏状态乃至系统进入休眠后,仍然保持系统的网络状态以及通过程序唤醒手机呢?答案就是Android中的WakeLock机制。 首先看看官方的解释: PowerManager :This class gives you control of the power state of the device. PowerManager.WakeLock : lets you say that you need to have the device on. PowerManager负责对Android设备电源相关进行管理,而系统通过各种锁对电源进行控制,WakeLock是一种锁机制,只要有人拿着这把所,系统就无法进入休眠阶段。既然要保持应用程序一直在后台运行,那自然要获得这把锁才可以保证程序始终在后台运行。之前我做过一个需求是要在后台跑一个Service执行轮询,但发现一段时间以后,轮询就中断了

oracle学习篇:九、性能诊断与SQL优化

戏子无情 提交于 2019-12-04 00:02:16
9.1 使用autotrace功能辅助sql优化 oracle sql*plus提供一个autotrace的功能,可以用于跟踪sql的执行计划,收集统计信息,通常被作为sql的优化工具之一而被广泛使用。 9.1.1 autotrace功能的启用 autotrace有几个常用选项,简单说明如下: set autotrace off:不生产autotrace报告,这是缺省模式; aet autotrace on explain:autotrace只显示优化器执行路径报告; set autotrace on statistics:只显示执行统计信息; set autotrace on:包含执行计划和统计信息; set autotrace traceonly:同set autotrace on,但是不显示查询输出。 9.1.2 autotrace功能的增强 9.1.3 autotrace功能的内部操作 当使用autotrace功能时,在数据库内部,oracle实际上是启动了2个session连接,一个session用于执行查询等操作,另外一个session用于记录执行计划和输出最终结果等操作。 这两个session都是由一个进程衍生。select * from v$process;一个进程在数据库中可能对应多个session。 主要的操作步骤如下: (1)执行计划的输出 (2)统计信息输出