- 浏览: 445708 次
- 性别:
- 来自: 广州
文章分类
- 全部博客 (369)
- javascript html (20)
- java (31)
- jquery (15)
- jcrop (0)
- JEECG (1)
- ajax (3)
- 反射 (3)
- VI (1)
- mysql (48)
- easyui (1)
- svn (2)
- MD5 加密 (1)
- spring (14)
- ORACLE (8)
- 经验总结 (1)
- TCP/IP协议 (1)
- ICMP协议 (1)
- eclipse (1)
- Reflect (1)
- linux (21)
- android (5)
- excel 操作 (1)
- java tree (1)
- html (1)
- plupload (1)
- mongodb (9)
- aes (1)
- python (1)
- java relax (1)
- highcharts (2)
- json (2)
- java 多线程 (30)
- maven (2)
- 设计模式 (1)
- jsp+js (2)
- 面向对象 (1)
- jvm (16)
- 缓存 (1)
- proxy (1)
- 聊侃 (1)
- 面经 (1)
- java 字节 (1)
- java 类加载器 (2)
- java 基础 (2)
- java 语法糖 (1)
- java 位运算 (1)
- 排序 (3)
- java 服务器性能优化 (19)
- 网络编程 (2)
- jvm 参数设置 (0)
- jersey (1)
- webservice (2)
- nginx+多tomcat 集成 (5)
- nginx (16)
- squid (3)
- memcached (5)
- 正则表达式 (1)
- 常用免费接口 (1)
- jpa (1)
- win7 (1)
- java处理大文件 (1)
- js正则表达式 (1)
- tomcat (1)
- java 敏感字 (1)
- 系统架构优化 (4)
- 学习 (1)
- 本地测试QQ微博第三方登陆 (1)
- java 错误 (1)
- 微信支付 (1)
- https (1)
- httpclient (1)
- awk (2)
- loadrunner (1)
- sql server 2008 (3)
- git (4)
- sql server2008 (1)
- solr (2)
- centos (1)
- 数据存储架构 (3)
- log4j (1)
- weboffice (1)
- 并发编程 (1)
- postgreSQL (0)
- ssl (1)
- openssl (1)
- activeMQ (2)
- IDEA (1)
- shell (1)
- ansible (4)
- docker (2)
- grafana (1)
- jmeter (1)
- TLS (1)
- 将博客搬至CSDN (1)
最新评论
-
dida1990:
啊喔,过去了这么久,不过还是评一个。谁说uuid的hashCo ...
高并发生成订单号(二) -
annan211:
yclovesun 写道使用了uuid,为什么还要machin ...
高并发生成订单号(二) -
yclovesun:
使用了uuid,为什么还要machineId?uuid已经可以 ...
高并发生成订单号(二) -
u013280917:
太深奥,看不懂
mysql优化特定类型的查询
一个15万pv、天左右的在线文档类型网站最近更换了硬件系统,新的硬件为4个cpu,16GB物理内存,操作系统为 64位的 CentOS 5.4 ,Resin作为服务器。 管理员选用了 64位的 jdk 1.5,通过-Xmx,-Xms 将堆固定在12GB,使用一段时间后,出现了卡B现象,长时间无响应。 监控发现卡B是由于GC停顿导致的。虚拟机运行在Server模式,默认使用吞吐量优先收集器,一次回收12GB的堆,一次 Full Gc的时间高达 14秒,再加上程序设计的关系,访问文档中需要一次性把文档从磁盘中读取到内存,导致内存中出现很多由文档序列化产生的大对象,这些大对象很多都进入了老年代,没有在Minor GC中清理掉。在这种情况下,即使有12GB的堆,内存也很快会被消耗殆尽,有次导致每隔十几分钟出现十几秒的卡B,令网站开发人员和管理人员感到郁闷。 这里先不谈眼神讨论程序代码问题,在程序部署上的主要问题显然是过大的堆内存进行回收时带来的城市间的停顿。硬件升级前使用32为系统1.5GB的堆,用户只感到访问网站比较缓慢,但不会发生十分明显的停顿,因此才考虑升级硬件提升程序效能。如果重新缩小给Java堆分配的内存,那么硬件上的投资就浪费了。 在高性能硬件上部署程序,目前主要有两种方式: 1 通过 64位 JDK 来使用大内存。 2 使用若干个32位虚拟机简历逻辑集群来利用硬件资源。 此案例中的管理员才用了第一种部署方式。对于用户交互性强、对停顿时间敏感的系统,可以给Java虚拟机非陪超大堆的前提是有把握把应用程序的Full GC频率控制的足够地,至少要低到不会影响到用户使用,譬如十几个小时乃至一天才出现一次GC,这样可以通过在深夜执行定时任务的方式触发Full GC 甚至自动重启应用服务器来将内存可用空间保持在一个稳定的水平。 控制Full GC频率的关键是看应用中绝大多数对象是否符合“朝生夕灭”的原则,即大多数对象的生存时间不应当太长,尤其是不能产生成批量的、长生存时间的大对象,这样才能保障老年代空间的稳定。 在大多数网站形式的应用里,主要对象的生存周期都应该是请求级或页面级的,会话级和全局级的长生命对象相对很少。只要代码写的合理,应当都能实现在超大堆中正常使用而没有Full GC,这样的话,使用超大堆内存时,网站相应的速度才比较有保证。除此之外,如果读者计划使用64位的JDK来管理大内存,还需要考虑下面可能面临的问题: 1 内存回收导致的长时间停顿。 2 现阶段,64位JDK的性能测试普遍地域32位JDK。 3 需要保证程序足够稳定,因为这种应用要是产生堆溢出几乎就无法产生堆转储快照(因为要产生十几GB乃至更大的dump文件),即使产生了快照也几乎无法进行分析。 4 相同的程序在64位JDK中消耗的内存一般比32位的JDK大,这是由指针膨胀以及数据类型对其补白等因素导致的。 考虑到以上几点因素,你可能会选择使用若干个虚拟机集群来利用硬件资源,具体做法是子啊一台物理机器上启动多个应用服务器进程,给每个服务器进程分配不同的端口,然后在前端大减一个负载均衡器,以反向代理的方式来分配访问请求。 这种部署方式可能会遇到下面的问题: 1 尽量避免节点竞争全局的资源,最典型的就是磁盘竞争,各个节点如果同事访问某个磁盘文件的话,很容易导致IO异常。 2 很难高效率的利用某些资源池,譬如连接池,一般都是在各个节点上简历自己的独立的连接池,这样有可能导致一些节点池满了而另外一些节点仍有较多空余,尽管可以使用集中式的JNDI,但这有一定的复杂性并且可能带来额外的性能代价。 3 各个节点仍然不可避免的收到32位的内存限制,在32位window平台中每个进程只能使用2GB的内存,考虑到堆以外的内存开销,堆一般最多只能开到1.5GB。在某些linux unix 系统(Solaris)可以提升到3GB乃至接近4Gb的内存,但32位中仍然接受最高4GB内存的限制。 4 大量使用本地缓存的应用,在逻辑集群中会造成大量的内存浪费,因为每个逻辑节点上都有一份缓存,这时可以考虑把本地缓存改为集中式缓存。 重新回到本案例。最后的部署方案调整为简历5个32位JDK的逻辑集群,每个进程按照2GB内存计算(其中堆固定为1.5GB),占用了10GB的内存。另外建立一个Apache服务作为前端均衡代理访问门户。考虑到用户对响应速度比较关心,并且文档服务的主要压力集中在磁盘和内存访问上,CPU 资源敏感度脚底,因此采用CMS 收集器进行垃圾回收。在部署方式调整后,服务在没有出现长时间停顿,速度也有比较大提升。 感谢周志明启发。
发表评论
-
实现虚拟机VMware上linux与windows互相复制与粘贴
2014-11-17 13:15 1291实现虚拟机VMware上linux与windows互相复制 ... -
java 虚拟机线程与操作系统内核线程之间的关系
2014-09-23 15:13 4641java jdk 中 线程操作与虚拟机中线程操作之间的关系映射 ... -
java 语法糖 分析(一,泛型与类型擦除)
2014-09-18 11:14 505语法糖是一种计算机术语,是为了更加方便理解计算机语言或者说 ... -
Java 读写锁demo
2014-09-11 15:27 706java 读写锁 原理 和 实例 package thread ... -
java 语言的静态多分派和动态单分派 的特性
2014-09-10 18:23 1074Java 语言的静态多分派和动态单分派特性。 先来熟悉概念: ... -
字节码验证 的高度对jvm的优化
2014-09-09 16:08 1131程序员对虚拟机的优化 ... -
接口与类的真正区别
2014-09-09 14:50 410接口与类不存在区别,除了字面修饰符不同外,其真正区别是: 当 ... -
jvm 初始化static 变量的类顺序
2014-09-09 14:42 691class Nolization{ static{ ... -
java static 类型变量定义技巧
2014-09-05 18:33 843java 变量的定义非常重要,在一定程度上可以减轻服务 ... -
eclipse 启动参数配置
2014-09-05 16:44 361参数见附件 -
too many open files 异常
2014-09-05 14:08 512每个Socket 连接都有 Receive 和 s ... -
堆转储快照(dump)的分析
2014-09-05 13:50 1066dump ,堆转储快照的详细分析,后面分析啊,现在没时 ... -
jsp 页面 查看线程堆栈状况
2014-09-04 15:53 644jsp 页面 查看线程堆栈信息状况 具体见 附件 -
jvm 本地方法栈(native Method stacks) 基本概念
2014-09-03 15:38 1087Java 虚拟机 运行时数据区域 一般可区分为 :方法区,堆 ... -
jvm 栈 基本概念
2014-09-03 15:10 515java 程序员 通常把java程序运行时的内存 分为 堆内存 ...
相关推荐
实战:Eclipse运行速度调优。案例分析。高性能硬件上的程序部署策略
建议部署2套存储系统,数据库系统和虚拟化系统各配 置1套高性能光纤存储阵列,每套存储配置双活冗余控制器,提供24GB高速缓存,24块9 00G高性能企业级SAS硬盘,提供21TB的裸容量。存储阵列提供8G高速FC接口,通过2台...
建议部署2套存储系统,数据库系统和虚拟化系统各配 置1套高性能光纤存储阵列,每套存储配置双活冗余控制器,提供24GB高速缓存,24块9 00G高性能企业级SAS硬盘,提供21TB的裸容量。存储阵列提供8G高速FC接口,通过2台...
存储方案 考虑到xx市公安局实际应用,建议部署2套存储系统,数据库系统和虚拟化系统各 配置1套高性能光纤存储阵列,每套存储配置双活冗余控制器,提供24GB高速缓存,24块 900G高性能企业级SAS硬盘,提供21TB的裸...
存储方案 考虑到xx市公安局实际应用,建议部署2套存储系统,数据库系统和虚拟化系统各 配置1套高性能光纤存储阵列,每套存储配置双活冗余控制器,提供24GB高速缓存,24块 900G高性能企业级SAS硬盘,提供21TB的裸...
一般的小规模的网站采用这种方式,用户量、数据量、并发访问量都比较小,否则单台服务器无法承受,并且在遇到性能瓶颈的时候升级硬件所需要的费用非常高 昂,在访问量增加的时候,应用程序和数据库都来抢占有限的...
20.4 策略上的反规范化 20.5 合理组织存储过程 20.6 使用临时表 20.7 及时更新代码 20.8 注意细节问题 20.9 硬件考虑事项 20.10 小结 第21章 性能优化工具 21.1 优化时机(第二部分) 21.2...
20.4 策略上的反规范化 20.5 合理组织存储过程 20.6 使用临时表 20.7 及时更新代码 20.8 注意细节问题 20.9 硬件考虑事项 20.10 小结 第21章 性能优化工具 21.1 优化时机(第二部分) 21.2...
而 iWebShop 则与传统不同,它基于 iWebSI 的高性能越代架构技术平台体系开发,借助 iwebSI 平台的出色设计,iWebShop 站点具有高度的可扩展性和伸缩性,在低成本投入下可瞬间部署至高负载设备集群系统之上,当业务...
在一个专门构建的平台上结合高性能硬件和软件来实现低延迟和数千兆位的数据吞吐量性能 2.1 产品与部署方式 本文就Palo Alto Networks 新一代安全防护网关部署方案进行探讨,该产品采用全新设计的软/硬件架构,可在不...
为策略设置较高的优先级 76 确定对连接应用哪些策略 76 检测应用于某一连接的策略 77 解析部分内容符合条件的搜索结果 77 解析部分内容符合搜索条件的搜索结果 77 对具有冲突规则的策略进行故障排除 78 确定最终生成...
20.4 策略上的反规范化 20.5 合理组织存储过程 20.6 使用临时表 20.7 及时更新代码 20.8 注意细节问题 20.9 硬件考虑事项 20.10 小结 第21章 性能优化工具 21.1 优化时机(第二部分) 21.2...
20.4 策略上的反规范化 20.5 合理组织存储过程 20.6 使用临时表 20.7 及时更新代码 20.8 注意细节问题 20.9 硬件考虑事项 20.10 小结 第21章 性能优化工具 21.1 优化时机(第二部分) 21.2...
9-7使用组策略部署打印机08:09 9-8使用脚本部署打印机13:43 9-9实战:连接网络接口打印机02:58 第10章配置动态磁盘1小时8分钟10节 10-1基本磁盘上的分区06:29 10-2动态磁盘上的卷和卷的类型13:10 10-3添加三个硬盘 ...
20.4 策略上的反规范化 20.5 合理组织存储过程 20.6 使用临时表 20.7 及时更新代码 20.8 注意细节问题 20.9 硬件考虑事项 20.10 小结 第21章 性能优化工具 21.1 优化时机(第二部分) 21.2...
20.4 策略上的反规范化 20.5 合理组织存储过程 20.6 使用临时表 20.7 及时更新代码 20.8 注意细节问题 20.9 硬件考虑事项 20.10 小结 第21章 性能优化工具 21.1 优化时机(第二部分) 21.2...
1.4.2高性能 1.5 RAC软件 1.5.1存储管理软件 1.5.2集群管理软件 1.5.3数据库管理软件 1.6本章小结 第2章 搭建类似生产环境的RAC 2.1搭建环境 2.1.1 RAC的物理结构 2.1.硬件环境 2.1.3软件环境 2.2搭建...
分布式共享数据对象CACHE服务 -- 让开发人员编制高性能的系统,极大提高整体部署的伸缩性。 支持异构环境: J2EE能够开发部署在异构环境中的可移植程序。基于J2EE的应用程序不依赖任何特定 操作系统、中间件、硬件。...
分布式共享数据对象CACHE服务 -- 让开发人员编制高性能的系统,极大提高整体部署的伸缩性。 支持异构环境: J2EE能够开发部署在异构环境中的可移植程序。基于J2EE的应用程序不依赖任何特定 操作系统、中间件、硬件。...
9 2.2 方案拓扑图 10 2.3 方案构成部分详细说明 11 2.3.1 软件需求 11 2.3.2 硬件需求 11 2.4 方案结构描述 11 2.4.1 基础架构服务层 11 2.4.2 应用程序服务层 13 2.4.3 虚拟应用程序层 18 2.4.4 VMware异地容灾技术...