性能优化

Weblogic性能优化(图解)

爷,独闯天下 提交于 2020-01-29 13:43:04
分类: Weblogic (2034) (1) 若是觉得对您有一丢丢的帮助,烦请顶一下哦,激励我码出更多的帖子,^_^谢谢! 1、数据源性能优化 1、1连接池参数配置 登录weblogic控制台,占击“connection pool”按钮进入数据库连接池配置页面。数据源性源优化参数说明: 1)初始容量(要在创建连接缓冲池时创建的物理连接数):10 2)最大容量(此连接缓冲池可容纳的最大物理连接数):100 3)容量增长(将新连接添加到连接缓冲池时创建的连接数):3 具体配置如下图所示: 1、2高级参数配置: 点数据源配置下方的“高级”按钮进入高级配置页面。 1)重试创建的频率(建立数据库连接尝试的间隔秒数):10 2)登录延迟(创建每个物理数据库连接前的延迟秒数。此延迟支持不能快速连续处理多个连接请求的数据库服务器。):10 3)非活动连接超时(保留连接处于不活动状态的秒数,该秒数过后 WebLogic Server 将收回该连接并将其释放回连接缓冲池):100 具体配置如下图所示: 4)取消“Remove Infected Connections Enabled”选项 点掉勾选项后,应用程序关闭逻辑连接后,物理连接将返回到连接缓冲池并可由该应用程序或其他应用程序重复使用。可以提高效率。 2、应用性能优化: 点击部署成功的应用进入详情配置页面,配置参数说明: 1)Servlet

MySQL-性能优化概述

喜夏-厌秋 提交于 2020-01-29 09:35:52
文章目录 影响MySQL性能的几大因素 大表带来的风险 大事务带来的风险 影响MySQL性能的几大因素 通常来说 ,有以下几点 慢SQL (重点) 、 主机的硬件资源(CPU、内存、磁盘I/O等)、网卡流量等等 超高的QPS和 TPS QPS(Queries Per Second 每秒处理的查询量) : 假设处理一个SQL 需要 10ms , 1s 最多也就处理100个,那么QPS < = 100 ,如果 100ms处理一个呢? 那 QPS <=10 ,可以推断出SQL的执行效率队QPS的影响很重要。 根据经验, TPS(Transactions Per Second,事务数/秒,这个完整的事务包括了用户请求服务器,服务器内部处理,服务器返回信息给用户三个过程) QPS和TPS高,说明应用的负载较高. MySQL数据库中的QPS和TPS的计算方法 Questions = SHOW GLOBAL STATUS LIKE 'Questions' ; Uptime = SHOW GLOBAL STATUS LIKE 'Uptime' ; QPS = Questions / Uptime ----------------------- Com_commit = SHOW GLOBAL STATUS LIKE 'Com_commit' ; Com_rollback = SHOW GLOBAL

ORACLE SQL性能优化系列 (十一)

非 Y 不嫁゛ 提交于 2020-01-29 04:26:42
36. 用 UNION 替换 OR ( 适用于索引列 ) 通常情况下 , 用 UNION 替换 WHERE 子句中的 OR 将会起到较好的效果 . 对索引列使用 OR 将造成全表扫描 . 注意 , 以上规则只针对多个索引列有效 . 如果有 column 没有被索引 , 查询效率可能会因为你没有选择 OR 而降低 . 在下面的例子中 , LOC_ID 和 REGION上 都建有索引 . 高效 : SELECT LOC_ID , LOC_DESC , REGION FROM LOCATION WHERE LOC_ID = 10 UNION SELECT LOC_ID , LOC_DESC , REGION FROM LOCATION WHERE REGION = “MELBOURNE” 低效 : SELECT LOC_ID , LOC_DESC , REGION FROM LOCATION WHERE LOC_ID = 10 OR REGION = “MELBOURNE” 如果你坚持要用 OR, 那就需要返回记录最少的索引列写在最前面 . 注意 : WHERE KEY1 = 10 ( 返回最少记录 ) OR KEY2 = 20 ( 返回最多记录 ) ORACLE 内部将以上转换为 WHERE KEY1 = 10 AND ((NOT KEY1 = 10) AND KEY2 = 20)

前端性能优化方法总结及响应状态码详解

倾然丶 夕夏残阳落幕 提交于 2020-01-28 14:12:52
前端优化的途径有很多,按粒度大致可以分为两类, 第一类是页面级别的优化,例如 HTTP请求数、脚本的无阻塞加载、内联脚本的位置优化等 ; 第二类则是代码级别的优化,例如 Javascript中的DOM 操作优化、CSS选择符优化、图片优化以及 HTML结构优化等等。另外,本着提高投入产出比的目的,后文提到的各种优化策略大致按照投入产出比从大到小的顺序排列。 一、页面级优化   1. 减少 HTTP请求数   这条策略基本上所有前端人都知道,而且也是最重要最有效的。都说要减少 HTTP请求,那请求多了到底会怎么样呢 ?首先,每个请求都是有成本的,既包含时间成本也包含资源成本。一个完整的请求都需要经过 DNS寻址、与服务器建立连接、发送数据、等待服务器响应、接收数据这样一个 “漫长” 而复杂的过程。时间成本就是用户需要看到或者 “感受” 到这个资源是必须要等待这个过程结束的,资源上由于每个请求都需要携带数据,因此每个请求都需要占用带宽。另外,由于浏览器进行并发请求的请求数是有上限的 (具体参见此处 ),因此请求数多了以后,浏览器需要分批进行请求,因此会增加用户的等待时间,会给用户造成站点速度慢这样一个印象,即使可能用户能看到的第一屏的资源都已经请求完了,但是浏览器的进度条会一直存在。   2.合理设置 HTTP缓存   缓存的力量是强大的,恰当的缓存设置可以大大的减少 HTTP请求

Lua性能优化技巧[三 关于表]

本秂侑毒 提交于 2020-01-28 00:27:18
原作者 Roberto Ierusalimschy 翻译 hillin 翻译版权所有©2011 hillinworks,转载需征得译者允许。 目录 一 前言 二 基本事实 三 关于表 四 关于字符串 五 削减、重用与回收 六 最后的提示 一般情况下,你不需要知道Lua实现表的细节,就可以使用它。实际上,Lua花了很多功夫来隐藏内部的实现细节。但是,实现细节揭示了表操作的性能开销情况。因此,要优化使用表的程序(这里特指Lua程序),了解一些表的实现细节是很有好处的。 Lua的表的实现使用了一些很聪明的算法。每个Lua表的内部包含两个部分:数组部分和哈希部分。数组部分以从1到一个特定的n之间的整数作为键来保存元素(我们稍后即将讨论这个n是如何计算出来的)。所有其他元素(包括在上述范围之外的整数键)都被存放在哈希部分里。 正如其名,哈希部分使用哈希算法来保存和查找键。它使用被称为开放地址表的实现方式,意思是说所有的元素都保存在哈希数组中。用一个哈希函数来获取一个键对应的索引;如果存在冲突的话(意即,如果两个键产生了同一个哈希值),这些键将会被放入一个链表,其中每个元素对应一个数组项。当Lua需要向表中添加一个新的键,但哈希数组已满时,Lua将会重新哈希。重新哈希的第一步是决定新的数组部分和哈希部分的大小。因此,Lua遍历所有的元素,计数并对其进行归类,然后为数组部分选择一个大小

ORACLE SQL性能优化系列 (四)

浪子不回头ぞ 提交于 2020-01-27 20:26:46
13. 计算记录条数 和一般的观点相反 , count(*) 比 count(1) 稍快 , 当然如果可以通过索引检索 , 对索引列的计数仍旧是最快的 . 例如 COUNT(EMPNO) ( 译者按 : 在 CSDN 论坛中 , 曾经对此有过相当热烈的讨论 , 作者的观点并不十分准确 , 通过实际的测试 , 上述三种方法并没有显著的性能差别 ) 14. 用 Where 子句替换 HAVING 子句 避免使用 HAVING 子句 , HAVING 只会在检索出所有记录之后才对结果集进行过滤 . 这个处理需要排序 , 总计等操作 . 如果能通过 WHERE 子句限制记录的数目 , 那就能减少这方面的开销 . 例如 : 低效 : SELECT REGION , AVG(LOG_SIZE) FROM LOCATION GROUP BY REGION HAVING REGION REGION != ‘SYDNEY’ AND REGION != ‘ PERTH’ 高效 SELECT REGION , AVG(LOG_SIZE) FROM LOCATION WHERE REGION REGION != ‘ SYDNEY ’ AND REGION != ‘ PERTH ’ GROUP BY REGION ( 译者按 : HAVING 中的条件一般用于对一些集合函数的比较 , 如 COUNT()

性能优化-group by的优化

不羁的心 提交于 2020-01-27 08:24:55
4、group by的优化 最好使用同一表中的列, 需求:每个演员所参演影片的数量-(影片表和演员表) explain select actor.first_name,actor.last_name,count(*) from sakila.film_actor inner join sakila.actor using(actor_id) group by film_actor.actor_id; 优化后的SQL: explain select actor.first_name,actor.last_name,c.cnt from sakila.actor inner join ( select actor_id,count(*) as cnt from sakila.film_actor group by actor_id )as c using(actor_id); 说明:从上面的执行计划来看,这种优化后的方式没有使用临时文件和文件排序的方式了,取而代之的是使用了索引。查询效率老高了。 这个时候我们表中的数据比较大,会大量的占用IO操作,优化了sql执行的效率,节省了服务器的资源,因此我们就需要优化。 注意: 1、mysql 中using关键词的作用:也就是说要使用using,那么表a和表b必须要有相同的列。 2、在用Join进行多表联合查询时

性能优化之缓存篇

夙愿已清 提交于 2020-01-27 08:06:28
1. 前言:为什么要用缓存? 用户数增长,架构演变,数据量增大,开始考虑怎么去做性能优化。 而性能优化的第一定律就是:优先考虑使用缓存。 2. 缓存的基本原理 2.1 缓存的作用 1、加快数据访问速度; 2、减轻后端应用和数据存储的负载压力。 2.2 缓存的特征 1、命中率:命中率 = 命中数 / 请求数。 这是衡量缓存有效性的重要指标。命中率越高,表明缓存的使用率越高。 2、最大元素(最大空间)。 一旦缓存中元素数量超过这个值(或者缓存数据空间超过其最大支 持空间),将会触发淘汰策略 3、淘汰策略。 这个我前文其实已经说过。 FIFO(First In First Out) 先进先出,淘汰最早数据。 判断存储时间,离目前最远的数据优先淘汰。 LRU (Least Recently Used)剔除最近最少使用。 判断最近使用时间,离目前最远的数据优先淘汰。 LFU (Least Frequently Used)剔除最近使用频率最低的数据。 在一段时间内,数据被使用次数最少的,优先淘汰。 具体可以看这篇文章 常见的缓存剔除策略 & LRU与LFU的区别 。 3. 缓存的分类 缓存的主要手段有:浏览器缓存、CDN、反向代理、本地缓存、分布式缓存、数据库缓存。 在 解读《大型网站技术架构》一文 中,其实已经说到过。 我们一般说做性能优化时是指后三个:本地缓存、分布式缓存、数据库缓存。

性能优化04_性能优化工具Allocation Tracker和LeakCanary、Lint

依然范特西╮ 提交于 2020-01-27 04:27:57
Android性能优化汇总 一 Allocation Tracker 1 作用 追踪内存分配信息。可以很直观地看到某个操作的内存是如何进行一步一步地分配的 2 使用 在Memory窗口中点击图中标红的部分,启动追踪,再次点击就是停止追踪,随后自动生成一个alloc结尾的文件,这个文件就记录了这 次追踪到的所有数据,然后会在右上角打开一个数据面板: 查看内容 Arrange by package:用包来分类分类内存分配 Arrange by class:用类来分类分类内存分配 找到自己定义的类,跳转对应的源码 旧版的AndroidStudio支持统计视图,以柱状图或者轮胎图显示 可以选择分配次数和占用内存大小,默认是大小Size 二 LeakCanary github搜索 LeakCanary 1 实现原理: 本质上还是用命令控制生成hprof文件分析检查内存泄露。 2 快速集成 build.gradle dependencies { // debugImplementation because LeakCanary should only run in debug builds. debugImplementation 'com.squareup.leakcanary:leakcanary-android:2.1' } 3 相比旧版,不需要在Application中集成

性能优化之二:结构体类型的性能优化

时间秒杀一切 提交于 2020-01-26 22:18:47
C#里结构体是值类型,其局部变量的空间分配在栈上。很多同学喜欢用它,是因为它的存储密度高、分配和回收成本非常低。 但是前几天在查热点的时候,却碰到结构体的性能非常慢,甚至远低于把同样数据结构做成的引用类型。下文对这个问题做了些简化,方便大家理解。 代码分析 优化前的源代码示例: //结构体声明 public struct Point2D { public int X { get; set; } public int Y { get; set; } } var target = new Point2D() { X = 99, Y = 100 }; //热点语句,points 是一个有几百万元素的链表: foreach(var item in point2Ds) { if (item.Equals(target)) return target; } 优化方法很简单,就是在Point2D的结构体声明中,加一个手写的Equals方法: //优化后: public struct Point2D { public int X { get; set; } public int Y { get; set; } public bool Equals(Point2D obj) { return obj.X == this.X && obj.Y == this.Y; } } 性能测试