psutil(Python system and process utilities)是python的系统监控及进程的管理的工具,是一个功能很强大的跨平台的系统管理库。 官方文档(https://pythonhosted.org/psutil/)
不止一次,我们都萌发过想对运行中程序的底层状况一探究竟的念头。产生这种需求的原因可能是运行缓慢的服务、Java 虚拟机(JVM)崩溃、挂起、死锁、频繁的 JVM 暂停、突然或持续的高 CPU 使用率、甚至于可怕的内存溢出(OOME)。好消息是现在已有许多工具能帮你得到Java 虚拟机运行过程中的不同参数,这些信息有助于你了解其内部状况,从而诊断上述的各种情况。
就在几天前,有个同学加我微信,当然我并不惊讶,甚至习以为常(因为总有人加我微信),为什么呢?
Prometheus是一套开源监控系统和告警为一体,由go语言(golang)开发,是监控+报警+时间序列数 据库的组合。适合监控docker容器。因为kubernetes(k8s)的流行带动其发展。
这次为大家带来的是另外一个 PHP 的压缩扩展,当然也是非常冷门的一种压缩格式,所以使用的人会比较少,而且在 PHP 中提供的相关的函数也只是对字符串的编码与解码,并没有针对文件的操作。因此,就像 Bzip2 一样,我们也可以用它来进行一些加密传输的操作。
由于版本节奏比较快,开发与测试几乎并行,一个版本周期内会有两版在推动,也就是波次发布,波次发布用于尝试新加入的功能,做小范围快速的开发,验证和发布,为下个大版本的功能做实验和调研。快速发版的需求要求测试快速响应,敏捷测试模式适应项目需求。
先看效果 为了查看慢的地方,添加了一些日志记录。其中遍历1w次便会输出一次时间。 优化前 优化后 优化后 背景 报表的查询导出功能,查询导出使用同一方法获取数据。 页面分页查询耗时还能接收,小数据
因为for range创建了迭代对象每个元素的副本,而不是直接返回每个元素的引用,如果使用该值变量的地址作为指向每个元素的指针,就会导致错误,在迭代时,返回的变量是同一个迭代过程中根据切片依次赋值的变量,所以最终map中存储的地址都是同一个变量的地址,而其值即为最后一次迭代中赋的值
提到压力测试,我们想到的是服务端压力测试,其实这是片面的,完整的压力测试包含服务端压力测试和前端压力测试。
16年的时候花了一些时间整理了一些关于jvm的介绍文章,到现在回顾起来还是一些还没有补充全面,其中就包括如何利用工具来监控调优前后的性能变化。工具做为图形化界面来展示更能直观的发现问题,另一方面一些耗费性能的分析(dump文件分析)一般也不会在生产直接分析,往往dump下来的文件达1G左右,人工分析效率较低,因此利用工具来分析jvm相关问题,长长可以到达事半功倍的效果来。 jvm监控分析工具一般分为两类,一种是jdk自带的工具,一种是第三方的分析工具。jdk自带工具一般在jdk bin目录下面,以exe的形
首先回顾一下C语言纯POD的结构体(struct)。如果用C语言实现一个类似面向对象的类,应该怎么做呢?
工具做为图形化界面来展示更能直观的发现问题,另一方面一些耗费性能的分析(dump文件分析)一般也不会在生产直接分析,往往dump下来的文件达1G左右,人工分析效率较低,因此利用工具来分析jvm相关问题,长长可以到达事半功倍的效果来。
类的加载指的是将类的.class文件中的二进制数据读入到内存中,将其放在运行时数据区的方法去内,然后在堆区创建一个java.lang.Class对象,用来封装在方法区内的数据结构。类的加载最终是在堆区内的Class对象,Class对象封装了类在方法区内的数据结构,并且向Java程序员提供了访问方法区内的数据结构的接口。
上周六是我们TestOps性能进阶课程第八天——性能测试实战的学习。这一天的课程是由测试行业的大牛叶微微老师为我们带来的,必须是干货满满。老师教大家一起学习企业级的性能测试应该如何做,这里芒果一如既往的抽出其中一部分内容跟大家介绍~
云豆贴心提醒,本文阅读时间5分钟 隐藏nginx header里版本号信息 1.查看版本号 2.隐藏版本号 在nginx配置文件的http标签内加入“server_tokens off; ”参数,也
Arthas 是阿里巴巴 2018 年 9 月开源的一款 Java 线上诊断工具。
工欲善其事必先利其器,一个优秀的程序员除了代码写得好,善于利用各种开发工具同样可以事半功倍。以 BAT 为代表的各大厂程序员们在平时的工作中都用什么开发工具呢?我们盘点了大厂内部常用的开发工具,以供读者参考。本文涉及工具大部分为开源项目,大家可以按需选用。
如果你有一定的前端基础,比如 `HTML、CSS、JavaScript、jQuery;那么,Node.js 能让你以最低的成本快速过渡成为一个全栈工程师(我称这个全栈为伪全栈,我认为的全栈也要精通数据库,不喜勿喷),从而触及后端和移动端的开发。当然,Node.js也不是万能的、也不是说学了它就可以完全取代后端的其他开发语言,它有自己的使命和擅长的应用领域。
有一点需要注意的是:CMS并发GC不是“full GC”。HotSpot VM里对concurrent collection和full collection有明确的区分。所有带有“FullCollection”字样的VM参数都是跟真正的full GC相关,而跟CMS并发GC无关的,cms收集算法只是清理老年代。
前面在学习JVM的知识的时候,一般都需要利用相关参数进行分析,而分析一般都需要用到一些分析的工具,因为一般使用IDEA,而VisualVM对于IDEA也不错,所以就选择VisualVM来分析JVM性能,这篇文章就介绍一下如何利用VisualVM进行性能分析,以及在分析之前需要知道一些GC优化的原则,GC优化的目的,以及遇到问题时怎么去解决问题的方法。
Induction是一款用于理解数据关系的开源管理工具,它可用来探索行/列,运行查询和数据可视化等方面。该工具支持多种数据库,包括PostgreSQL,MySQL,SQLite,Redis以及MongoDB。此外,Induction还可以通过编写添加其他新的适配器。
本文介绍压测是什么,解释压测的专属名词,教大家如何压测。介绍市面上的常见压测工具(ab、locust、Jmeter、go实现的压测工具、云压测),对比这些压测工具,教大家如何选择一款适合自己的压测工具,本文还有两个压测实战项目:
JAVA程序运行与虚拟机之上,运行时需要内存空间。虚拟机执行JAVA程序的过程中会把它管理的内存划分为不同的数据区域方便管理。
1.功能性测试: ——根据产品需求文档编写测试用例。 ——软件设计文档编写用例。 注意:就是根据产品需求文档编写测试用例而进行测试。 2.兼容性测试: ——android版本的兼容性 ——手机分辨率兼容性 ——网络的兼容性:2G\3G\4G\WIFI,弱网下、断网时 ——app跨版本的兼容性 1.适配性测试: 1>.手机不同分辨率支持:客户端支持的分辨率等 2>.手机不同版本的支持:2.34.04.4等;在测试计划中:需要安排单独的时间用于android不同系统的兼容
实现本地缓存,存储容器肯定是 key/value 形式的数据结构,在 Java 中,也就是我们常用的 Map 集合。Map 中有 HashMap、Hashtable、ConcurrentHashMap 几种供我们选择,如果不考虑高并发情况下数据安全问题,我们可以选择HashMap,如果考虑高并发情况下数据安全问题,我们可以选择 Hashtable、ConcurrentHashMap 中的一种集合,但是我们优先选择 ConcurrentHashMap,因为 ConcurrentHashMap 的性能比 Hashtable 要好。
相比于普通的功能测试,性能测试对测试工程师的技能要求更高,一般来说,也只有中高级测试工程师才会有机会做性能测试。
web应用,也叫做网站,相对于客户端应用来说,web应用无需单独安装,在浏览器上即可使用其功能。
我们知道java代码先编译为.class文件,然后再将.class文件交由jvm执行。在程序运行的这一过程中,jvm会将其管理的内存空间划分为不同的区域,这些区域各有各的用途,我们将其分为五类:
本文总结接口性能测试中,常见的性能指标概念,查看及通用通过标准 注: 本文只考虑B/S架构
硬件配置:CUP Xeon E5620 x 2 8核心, 内存 16G , 硬盘 RAID 10,操作系统: CentOS 6.4 x86_64(64位)。
精彩早知道 作者概述 什么是性能调优?(what) 为什么需要性能调优?(why) 什么时候需要性能调优?(when) 什么地方需要性能调优?(where) 什么人来进行性能调优?(who) 怎么样进行性能调优?(How) 总结 硬件配置:CUP Xeon E5620 x 2 8核心, 内存 16G , 硬盘 RAID 10,操作系统: CentOS 6.4 x86_64(64位)。 概述 在这篇博文中,我不想用一些抽象的概念去说性能调优的问题,只想用最通俗的语言尽量来准确的表达我的想法。 由于本人小平有
最近一直在学习hadoop的一些原理和优化,然后也做了一些实践,也有没有去做实践的,反正个人观点都记录下来
很多人误以为shell脚本只能在命令行下使用。其实shell也可以调用一些GUI组件,例如菜单,警告框,进度条等等。你可以控制最终的输出,光标位置还有各种输出效果。下面我将介绍一些工具,帮助你创建强大的,互动的,用户友好的 Unix/Linux shell脚本。我在FreeBSD和Linux下测试过这些工具,不过其他UNIX系列的操作系统应该都支持的。
-Xmx3550m:设置JVM最大堆内存 为3550M。 -Xms3550m:设置JVM初始堆内存 为3550M。此值可以设置与-Xmx相同,以避免每次垃圾回收完成后JVM重新分配内存。 -Xss128k: 设置每个线程的栈 大小。JDK5.0以后每个线程栈大小为1M,之前每个线程栈大小为256K。应当根据应用的线程所需内存大小进行调整。在相同物理内存下,减小这个值能 生成更多的线程。但是操作系统对一个进程内的线程数还是有限制的,不能无限生成,经验值在3000~5000左右。 -Xmn2g:设置堆内存年轻代 大小为2G。整个堆内存大小 = 年轻代大小 + 年老代大小 + 持久代大小 。持久代一般固定大小为64m,所以增大年轻代后,将会减小年老代大小。此值对系统性能影响较大,Sun官方推荐配置为整个堆的3/8。 -XX:PermSize=256M:设置堆内存持久代 初始值为256M。(貌似是Eclipse等IDE的初始化参数) -XX:MaxNewSize=size:新生成的对象能占用内存的最大值。 -XX:MaxPermSize=512M:设置持久代最大值为512M。 -XX:NewRatio=4:设置堆内存年轻代(包括Eden和两个Survivor区)与堆内存年老代的比值(除去持久代) 。设置为4,则年轻代所占与年老代所占的比值为1:4。 -XX:SurvivorRatio=4: 设置堆内存年轻代中Eden区与Survivor区大小的比值 。设置为4,则两个Survivor区(JVM堆内存年轻代中默认有2个Survivor区)与一个Eden区的比值为2:4,一个Survivor区占 整个年轻代的1/6。 -XX:MaxTenuringThreshold=7:表示一个对象如果在救助空间(Survivor区)移动7次还没有被回收就放入年老代。 如果设置为0的话,则年轻代对象不经过Survivor区,直接进入年老代,对于年老代比较多的应用,这样做可以提高效率。 如果将此值设置为一个较大值,则年轻代对象会在Survivor区进行多次复制,这样可以增加对象在年轻代存活时间,增加对象在年轻代即被回收的概率。 回收器选择 JVM给了三种选择:串行收集器、并行收集器、并发收集器,但是串行收集器只适用于小数据量的情况,所以这里的选择主要针对并行收集器和并发收集器。
受访者:陈天奇 采访者:何通 编辑:王小宁 简介:陈天奇,华盛顿大学计算机系博士生,研究方向为大规模机器学习。他曾获得KDD CUP 2012 Track 1第一名,并开发了SVDFeature,XGBoost,cxxnet等著名机器学习工具,是Distributed (Deep) Machine Learning Common的发起人之一。 何:你的本科在上海交大的ACM班就读,是怎么开始做机器学习研究的呢? 陈:我们当时的培养计划里面有一项,就是希望我们尽早地接触学术研究。于是我们在大二
作为一名搞技术的程序猿或者是攻城狮,想必你应该是对下面这两个问题有所了解,说不定你在实际的工作或者面试就有遇到过:
今天为大家介绍的是来自Alexander Gusev团队的一篇论文。原发部位未知癌症(Cancer of unknown primary,CUP)是一种无法追溯到其原发部位的癌症,占所有癌症的3-5%。CUP缺乏已建立的靶向治疗方法,导致普遍预后不佳。作者开发了OncoNPC,这是一个基于机器学习的分类器,使用来自三个机构的22种癌症类型中的36,445个肿瘤的定向次世代测序(NGS)数据进行训练。肿瘤NGS基础的原发癌类型分类器(OncoNPC)在保留的肿瘤样本上取得了加权F1分数为0.942的高置信度预测(≥ 0.9)。
缓存,我相信大家对它一定不陌生,在项目中,缓存肯定是必不可少的。市面上有非常多的缓存工具,比如 Redis、Guava Cache 或者 EHcache。对于这些工具,我想大家肯定都非常熟悉,所以今天我们不聊它们,我们来聊一聊如何实现本地缓存。参考上面几种工具,要实现一个较好的本地缓存,平头哥认为要从以下三个方面开始。
当存在内存对齐的时候,这个代码未必有效。主要就是手撸的内存偏移就不准了。当然如果你知道你的编译器是怎么个对齐规则,你也可以继续用。比如我们调换cup和weight的顺序。
http://blog.chopmoon.com/favorites/231.html
系统架构 App端: C/S结构,一定有客户端,app 修改了服务端,则客户端用户所有核心版本都需要进行回归测试一遍。 web端: B/S架构,基于浏览器,web测试只用更新服务器端,客户端就会同步更新 兼容性 web端: 浏览器(Firefox、chrome、IE等),操作系统(Windows7、mac-ios、Linux等) App端:操作系统(android, ios),设备(等等),分辨率(等等) 操作行为 web端: 单击、双击、拖拽 App端: 单击、双击、拖拽,还有放大、缩小、滑动、其他复杂手势操作 其他 网络种类 版本升级方式 界面布局 传感器,压力、方向、重力、指纹识别等等
Tomcat 的缺省配置是不能稳定长期运行的,也就是不适合生产环境,它会死机,让你不断重新启动,甚至在午夜时分唤醒你。对于操作系统优化来说,是尽可能的增大可使用的内存容量、提高CPU 的频率,保证文件系统的读写速率等。经过压力测试验证,在并发连接很多的情况下,CPU 的处理能力越强,系统运行速度越快。
领取专属 10元无门槛券
手把手带您无忧上云