调优

PlayFramework 2.1 技巧-性能调优实战

不打扰是莪最后的温柔 提交于 2020-02-28 13:52:06
转载请注明出处,保持署名 作者:joymufeng 1. 为什么要调优? 1.1 实验:一个简单的示例 Play Framework2.1的基本设计思想是能够快速处理大量耗时较少的请求,比较耗时的请求采用异步方式完成。为了很好地说明这一点,让我们来看一个例子,编写控制器代码如下: public static AtomicInteger count = new AtomicInteger(0); public static Result test(Long id) { if(id!=0){ try { System.out.println("sleeping...:"+count.addAndGet(1)); Thread.currentThread().sleep(1000000); } catch (InterruptedException e) { // TODO Auto-generated catch block e.printStackTrace(); } }else{ System.out.println("no sleep"); } return ok("good."); } 在conf/routes文件中添加如下路由: GET /:id controllers.Application.test(id:Long) 执行play run启动项目

MySQL如何避免使用swap(1)

僤鯓⒐⒋嵵緔 提交于 2019-12-06 15:02:29
Linux有很多很好的内存、IO调度机制,但是并不会适用于所有场景。对于DBA来说Linux比较让人头疼的一个地方是,它不会因为MySQL很重要就避免将分配给MySQL的地址空间映射到swap上。对于频繁进行读写操作的系统而言,数据看似在内存而实际上在磁盘是非常糟糕的,响应时间的增长很可能直接拖垮整个系统。这篇blog主要讲讲我们作为DBA,怎样尽量避免MySQL惨遭swap的毒手。 首先我们要了解点基础的东西,比如说为什么会产生swap。假设我们的物理内存是16G,swap是4G。如果MySQL本身已经占用了12G物理内存,而同时其他程序或者系统模块又需要6G内存,这时候操作系统就可能把MySQL所拥有的一部分地址空间映射到swap上去。 cp一个大文件,或用mysqldump导出一个很大的数据库的时候,文件系统往往会向Linux申请大量的内存作为cache,一不小心就会导致L使用swap。这个情景比较常见,以下是最简单的三个调整方法: 1、/proc/sys/vm/swappiness的内容改成0(临时),/etc/sysctl.conf上添加vm.swappiness=0(永久) 这个参数决定了Linux是倾向于使用swap,还是倾向于释放文件系统cache。在内存紧张的情况下,数值越低越倾向于释放文件系统cache。 当然,这个参数只能减少使用swap的概率

JVM学习笔记之终:MyEclipse调优

余生长醉 提交于 2019-12-01 10:51:08
在将工作电脑的操作系统更换为win7之后,我的MyEclipse的启动速度和运行速率一直很不理想。特别是在同时修改调试多个页面模板的时候,来回切换两个文件总是会卡个十来秒。试过关掉各种插件和验证也无济于事。于是在大致的研究完JVM后,决定从JVM的角度来试着解决这个问题。 启动优化: 首先来看下我的myeclipse.ini里面的默认启动参数: -Xmx512m :设置堆内存最大值为512M -XX:MaxPermSize=256m :设置持久代最大值为256m -XX:ReservedCodeCacheSize=64m :设置代码占用的内存大小为64m 从启动参数上看不出什么,于是往里面加入打印内存变化相关参数: -XX:+PrintGCTimeStamps : 打印每次GC的时间戳 -XX:+PrintGCDetails : 打印每次GC的详细信息 -Xloggc:myEclipseGC.log :将GC的记录输出到文件 -verbose:gc : 输出每次GC的相关情况 然后启动MyEclipse,然后查看myEclipseGC.log里面的信息: 启动耗时大概在30秒左右, 选择性的截取一小部分日志,可以看到,在myeclipse启动的前10秒内,JVM总共执行了300多次的GC和9次的FULL GC。 从GC频率和信息可以看出内存的回收率很高,且大小在不断调整

JVM优化-缩短eclipse的启动时间

六眼飞鱼酱① 提交于 2019-11-30 20:12:45
追加 : 首先要声明一下,这个案例在<深入理解JVM虚拟机>这本书中也提到过. 这本书是我曾经学习JVM的第一本书.里面关于Heap的优化思想,来源于此.建议大家想学JVM原理的,可以找来此书看看. 写这篇文章,是因为最近在给一个社交网站服务器做调优,突然觉得我机器上的eclipse跑的比较多,所以顺便优化下eclipse.至于基于WebSphere服务器的性能调优,这回涉及到更多的工具和方法,会在以后的文章中看到. 最近自从eclipse安装了很多插件以后,启动变得非常的慢,每次启动,要消耗近半分钟.这是不正常的. 今天决定好好优化一下. 我所使用的eclipse是 Eclipse Java EE IDE for Web Developers 3.8版本. 跑在MAC OSX上, SSD+8G RAM, 这么高性能的机器竟然不能秒开eclipse, 这太说不过去了. 哦,还有我使用的JVM是Oracle的HotSpot,来自于JDK1.6 64bit. 首先,在优化前,让我们看看eclipse启动时,JVM的各项性能指标. 因为我并不能准确的判定eclipse的启动完成时间, 所以我只能说大约事件. 首先启动JDK自带的JVM性能监视工具,在java\bin的目录下,有一个jvisualvm,它是绑定在JDK中的visualvm.双击启动visualvm. 然后启动eclipse

mysql事务隔离级别和锁

扶醉桌前 提交于 2019-11-30 04:33:15
事务的核心是锁和并发,采用同步控制的方式保证并发的情况下性能尽可能高,且容易理解。 一、 事务有四个基本特性: 1、原子性(atomicity):数据库操作的最小基本单位,事务内的操作要么都成功,要么都失败,中途不能被打断。 2、一致性(consistency):事务执行后数据从一种状态变成另外一种状态,不会存在事务的一部分数据写入了数据库,一部分没有写入。 3、隔离性(isolation):事务之间独立执行,不相互干扰。 4、持久性(durability):事务一旦提交,对数据库的修改是永久性的,不会改变。 二 、事务隔离 当多个线程同时执行读、算、写操作时,如果不加访问控制,系统势必会产生冲突,举例说明: 并发的时候,事务不断执行,这段时间简称 T 。T上有很多时间点, T0 , T1 , T2 , T3 , T4 , T5 .......... T0 为时间起点,数据库上有一个表user,字段name,point。 事务A:select name,point from user where id =1; 事务B:update user set point=point+1 where id =1; 脏读 :首先事务B开始执行,在T1的时候事务A又开始执行,这个时候B事务并没有提交,事务A查询的值是事务B未提交的值,如果此时B事务回滚,会造成事务A查询到错误数据。这就是脏读。

Java Jdbc减少交互提升批量处理性能,到底该如何优化才好?

前提是你 提交于 2019-11-27 17:08:29
不拾掇Java有好几年了(N>3吧),之所以写这篇文章其实是纯粹是为了给开发人员一些好的使用jdbc真正去减少交互和提升批量处理batch update性能的例子; 如果你是DBA,那么工作之余你可以把这篇文章推荐给开发看一下, 也许这些例子他已经知道了, 倘若他不知道,那么也算一种福利了。 能考虑到在应用程序client和 数据库服务器DB server间减少交互时间,批量更新处理的绝对是有助于重构和优化代码的好同志; 但这种优化一定要注意方法,如果是自行去重新发明一种轮子的话, 效果往往是不如人意的。 例如Tom Kytes曾在他的著作里提到这样2个例子,他去协助开发的2家企业的在研发应用的过程中,分别通过应用程序自己去在Oracle中实现了user profile和advanced queue的功能, 有一定经验的朋友肯定会知道这2样功能其实Oracle Enterprise Edition企业版软件都是原生态支持的,而自己在DB中去实现它们,最终结果自然是项目的失败。 类似的有朋友在开发过程中,为了优化Oracle JDBC中的批量更新update操作,想到了这样的方式,例如要插入INSERT 15000行数据,则在JAVA层面 将15000条INSERT语句拼接在一个PL/SQL block里,这15000条SQL涉及到的变量仍使用PreparedStatement