Performance
文章平均质量分 56
RayChase
博客搬家了: https://www.raychase.net/
展开
-
Java的WEB应用性能问题定位方法总结(一):常见的性能指标分析
其实早就想对于性能问题的定位做一个总结。正好,最近做了一些Java的WEB应用性能问题的定位的专题工作,这里简单记录一些典型的性能问题定位方法。 (比如TPS偏低、吞吐量不足等:这些指标问题由下面说的多个指标造成,故不在单独讨论的范围之内) 应用CPU占用偏高,可能的因素包括: 逻辑复杂、算法效率低下 过度逻辑 检查方法: JProfiler检查热点,等到系统稳原创 2011-06-22 08:15:00 · 3954 阅读 · 1 评论 -
JVM问题定位工具
JDBJDB是基于文本和命令行的调试工具,Jikes在JDB的基础上提供了GUI。熟悉JDB还是有价值的,很多情况下需要我们在命令行下完成简单的debug问题定位。123jdb -classpath bin com.xx.Examplejdb -connect com.sun.jdi.SocketAttach:hostname=myhost,p...2013-07-23 01:03:03 · 228 阅读 · 0 评论 -
JVM致命错误日志(hs_err_pid.log)解读
致命错误出现的时候,JVM生成了hs_err_pid<pid>.log这样的文件,其中往往包含了虚拟机崩溃原因的重要信息。因为经常遇到,在这篇文章里,我挑选了一个,并且逐段分析它包含的内容(文件可以在文章最后下载)。默认情况下文件是创建在工作目录下的(如果没权限创建的话JVM会尝试把文件写到/tmp这样的临时目录下面去),当然,文件格式和路径也可以通过参数指定,比如:...2013-06-27 10:44:41 · 1225 阅读 · 1 评论 -
网站性能优化的三重境界
这篇文章是关于网站性能优化体验的,性能优化是一个复杂的话题,牵涉的东西非常多,我只是按照我的理解列出了性能优化整个过程中需要考虑的种种因素。点到为止,包含的内容以浅显的介绍为主,如果你有见解能告知我那再好不过了。无论如何,希望阅读它的你有所收获。 我眼中的网站性能问题都反映了一个网站的“Availability”(中文叫做可用性,但是这个翻译也不足够达意),以往我的认识是,这个网站如果全部...2012-04-19 00:18:24 · 102 阅读 · 0 评论 -
提高数据库查询速度的几个思路
提高数据库查询速度的几个思路 1、缓存,在持久层或持久层之上做缓存。2、数据库表的大字段剥离,保证单条记录的数据量很小。3、恰当地使用索引。4、必要时建立多级索引。5、分析Oracle的执行计划,通过表数据统计等方式协助数据库走正确的查询方式,该走索引就走索引,该走全表扫描就走全表扫描。6、表分区和拆分,无论是业务逻辑上的拆分(如一个月一张报表、分库)还是无业务含义的分...2011-11-19 12:23:20 · 246 阅读 · 0 评论 -
设计一套缓存框架需要关注的要素
最近关注了一些缓存框架的特性和实现,包括OSCache、JCS、Ehcache、Memcached等等,公司的两个缓存框架,以及一个标准JSR 107(JCache),发现一些诸多类同的方面。如果你不够熟悉以上,不妨先看看这两篇文章:《OSCache框架源码解析》和《Ehcache详细解读》,再看下面的内容也许会有更多想法。之后再思考,如果要自己去实现一套缓存框架,需要考虑哪些东西?1、为哪些数据...2012-06-04 00:38:24 · 302 阅读 · 0 评论 -
Ehcache详细解读
Ehcache是现在最流行的纯Java开源缓存框架,配置简单、结构清晰、功能强大,最初知道它,是从Hibernate的缓存开始的。网上中文的EhCache材料以简单介绍和配置方法居多,如果你有这方面的问题,请自行google;对于API,官网上介绍已经非常清楚,请参见官网;但是很少见到特性说明和对实现原理的分析,因此在这篇文章里面,我会详细介绍和分析EhCache的特性,加上一些自己的理解和思...2012-05-31 17:44:18 · 1724 阅读 · 0 评论 -
性能驱动下的架构实例
大型WEB互联网应用都是在市场的锤炼中成长的,以前提到过性能需求的驱动对于架构的影响,一个1M PV和一个100M PV的网站肯定是不一样的。这里仅仅给出几个典型的例子,兴许你对此能有收获。 初期,只有简单的应用服务器和DB服务器分家,使用简单的Jetty容器,系统的瓶颈在DB侧。简单就是美,网站刚刚运营,不考虑太多,能访问就是王道,给用户提供丰富的内容:=============...2011-11-13 20:09:39 · 121 阅读 · 0 评论 -
OSCache框架源码解析
OSCache是一个受到争议的开源缓存框架,OpenSymphony网站已经关闭(OpenSymphony可是诞生过Quartz、WebWork、SiteMesh和OGNL等数个非常有名的框架的)了,它也已经不维护了。在JavaEE的缓存框架领域,似乎已经是EhCache等其它支持分布式的缓存框架的天下了,OSCache垂垂老矣?但是OSCache的源代码依然值得一读,一度作为最常用的缓存框架,代...原创 2012-05-18 00:09:12 · 228 阅读 · 0 评论 -
性能优化实践Roadmap
总结了一下工作中常见的性能优化思路和手段(点击看大图):文章系本人原创,转载请注明出处和作者2012-01-28 14:29:40 · 207 阅读 · 0 评论 -
Web项目性能问题常见定位方法梳理
第一类:请求无响应,浏览器始终处于等待状态。定位方法:kill -3或者jstack先分析线程堆栈,找到当前block的线程。常见于:外部接口调用无返回或者网络IO阻塞无响应;死锁;死循环;……。 第二类:宕机,进程挂掉。定位方法(这一类问题普遍比较难定位): (1)寻找hs_err_pidxxx.log这样的JVM日志 (2)使用JVM参数在JVM cra...2011-11-03 22:29:07 · 282 阅读 · 0 评论 -
性能需求驱动下架构的改变
产品的发展需要架构的稳定,但是从一个小用户量的软件逐步发展到动辄数千万注册用户的大型互联网应用,没有人会忽视性能需求(或者隐性的性能需求)在其中起了多大的作用。且看一些这方面的分类归纳,从易入繁: 1、集群组网:这是最基本的横向扩展的方式,把单节点的压力通过负载均衡分担到多个节点下,提高了系统负载能力的同时,亦提高了稳定性。 2、反向代理:一个大型的互联网网站不能不引入反向...2011-10-30 09:38:03 · 92 阅读 · 0 评论 -
Java的WEB应用性能问题定位方法总结(二):常见性能问题处理工具
参数检查jinfo线程堆栈:jstackkill -3/CTRL+BREAK堆分析:jmap -heapjmap -histo内存dump.bin,使用HeapAnalyser分析GC:gc.log,使用GCViewer或者JMeter分析jstatCPU:sartop网络:ne原创 2011-07-09 22:37:32 · 1231 阅读 · 0 评论 -
Memcached调优
项目中有一个对实时响应性比较高的服务,引入了Memcached以减少延迟和减少数据库压力。但是期间遇到了一些问题,这里记录一些调优细节。 客户端选择最开始我使用的是Memcached Java Client,但是最后放弃了,放弃原因包括:有时会出现的“No Thread For Socket”异常,我记录在这里;它不支持NOREPLY模式(在这种模式下,更新缓存的set...2013-08-02 19:56:24 · 204 阅读 · 0 评论