根据给定文件的信息,我们可以提炼出以下几个关键知识点: ### 一、JVM内存组成与配置优化 #### 1. JVM内存区域划分 - **堆内存(Heap)**:用于存放类实例、数组等对象数据。 - **新生代(Young Generation)**:主要负责新创建的对象存储。 - **Eden区**:新对象首先在这里分配。 - **Survivor区(S0/S1)**:用于存储每次垃圾回收后幸存下来的对象。 - **老年代(Old Generation)**:长期存活的对象会被转移到这里。 - **非堆内存(Non-Heap)**:用于存储类元数据、常量池等信息。 - **永久代(Permanent Generation)**:在Java 8之前,用于存储类的元数据。 #### 2. Tomcat JVM参数配置优化 - **设置线程栈大小**:`-Xss128k` 减小线程栈大小,有助于减少内存占用。 - **设置永久代初始大小与最大值**:`-XX:PermSize=128m -XX:MaxPermSize=128m` Java 8及以下版本适用。 - **年轻代大小**:`-Xmn1g` 设置年轻代大小为1GB。 - **设置JVM堆最小值与最大值**:`-Xms5g -Xmx5g` 分别设置JVM堆最小和最大为5GB。 - **禁用显式GC调用**:`-XX:+DisableExplicitGC` 避免显式调用System.gc()导致的性能问题。 - **启用并发标记清扫器**:`-XX:+UseConcMarkSweepGC -XX:+UseCMSCompactAtFullCollection -XX:+CMSClassUnloadingEnabled` 提高GC效率。 - **设置CMS启动阈值**:`-XX:CMSInitiatingOccupancyFraction=80` 当老年代使用达到80%时触发CMS收集。 - **设置编码方式**:`-Dclient.encoding.override=UTF-8 -Dfile.encoding=UTF-8` 确保正确处理字符编码。 - **设置Lucene存储方式**:`-Dorg.apache.lucene.FSDirectory.class=org.apache.lucene.store.NIOFSDirectory` 使用NIOFS目录提高性能。 - **设置选择器提供者**:`-Djava.nio.channels.spi.SelectorProvider=sun.nio.ch.EPollSelectorProvider` 改进I/O操作。 - **日志配置**:`-XX:+PrintGC -XX:+PrintGCTimeStamps -Xloggc:gc_log` 输出GC日志,便于分析性能瓶颈。 ### 二、不同服务的JVM配置比例 - **大索引Tomcat**:`-Xmn5g -Xms15g -Xmx15g` 更大的堆空间,适合大量数据处理。 - **专辑索引Tomcat**:`-Xmn2g -Xms10g -Xmx10g` 适中的堆空间,适用于专辑索引服务。 - **搜索入口机Tomcat**:`-Xmn1g -Xms5g -Xmx5g` 较小的堆空间,主要用于提供搜索接口。 ### 三、JDK自带VM分析工具 - **jps**:显示本地正在运行的Java进程的PID和简要信息。 - **jstat**:监控JVM的堆内存使用情况,包括新生代、老年代等区域的大小及使用情况。 - **jmap**:获取Java进程中所有对象的详细信息,帮助定位内存泄漏等问题。 - **jconsole**:图形界面工具,可以实时监控JVM的状态,支持远程监控功能。 ### 四、专辑搜索服务问题及解决方案 #### 1. 问题描述 - **stats.jsp页面加载缓慢**:打开stats.jsp页面时反应非常慢。 - **同步索引时频繁GC**:在同步索引过程中,JVM频繁进行垃圾回收,特别是在old区接近满载的情况下。 #### 2. 问题分析与解决 - **索引段缓存问题**:定位到索引段缓存与字段类型有关联,通过修改`schema.xml`文件中的字段类型。 - **字段类型修改**:将数字类型`Sortable`改为`TrieIntField`,解决了页面加载缓慢的问题,并且减少了同步索引时的频繁GC。 ### 五、系统架构调整 - **索引与搜索入口分离**:将大索引Solr服务与搜索入口服务分离,提高系统的稳定性和可扩展性。 - 大索引Solr专门用于索引构建,不承担搜索请求。 - 搜索入口Solr提供空数据服务,仅用于接收用户查询请求。 - 扩展`searchHandler`以支持HTTP客户端连接池管理和错误恢复机制。 以上是对给定文件中的知识点进行详细解读和总结,希望能帮助您更好地理解和掌握相关内容。
- 粉丝: 250
- 资源: 14
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助