高性能硬件程序上的程序部署策略
高性能硬件程序上部署程序,主要方式有两种:
- 1.通过64位的JDK来使用大内存
- 2.使用若干个32位虚拟机建立逻辑集群来利用硬件程序资源
对于用户交互性强、对停頓时间敏感的系统可以给java虚拟机分配超大堆内存的前提是有把握把应用程序的Full GC频率控制的足够低,至少低到不会影响用户使用譬如十幾个小时或者一天出现一次Full GC,这样可以通过深夜执行定时任务的方式出发Full GC甚至自动重启应用服务器来将内存可用空间维持在一个稳定水岼。
控制Full GC频率的关键是看绝大多数的对象是不是符合‘朝生夕灭’的原则即大多数对象的生存时间不应该太长,尤其是不能成批量的長时间生存的大对象,这样才能保证老年代的稳定
除此外计划使用64位JDk来管理超大内存还要考虑以下问题:
- 1.内存回收导致的长时间停顿
- 2.现階段,64位JDK的性能测试结果普遍低于32位JDk
- 需保证应用程序足够稳定因为这种应用要是产生堆溢出就无法产生堆转储快照
- 4.相同应用程序在64位JDK消耗内存比32位大,由于指针膨胀数据类型
使用逻辑集群方式来部署应用程序可能会遇到以下问题:
- 1.尽可能的避免节点竞争全局资源,最典型的就是磁盘竞争各个节点同事访问某个磁盘文件很可能导致IO异常
- 2.很难高效利用资源池,例如连接池一般都是节点建立自己的连接池。
- 3.仍然不可避免的收到32位程序的内存限制
- 4.大量使用本地缓存的应用会曹成内存浪费此时可以考虑使用集中式缓存
发布了21 篇原创文章 · 获贊 12 · 访问量 7万+