如何创建一个高效、可扩展的网站开发制作云盘手机建站系统?

摘要:网站开发制作云盘,手机建站系统,网站的类型和特色,宁波建网站方式1. ParallelGCThreads参数含义JVM垃圾回收(GC)算法的两个优化标的:吞吐量和停顿时长。JVM会使用特定的GC收集线程&
网站开发制作云盘,手机建站系统,网站的类型和特色,宁波建网站方式1. ParallelGCThreads参数含义JVM垃圾回收(GC)算法的两个优化标的#xff1a;吞吐量和停顿时长。JVM会使用特定的GC收集线程#xff0c;当GC开始的时候#xff0c;GC线程会和业务线程抢占CPU时间#xff0c;吞吐量定义为CPU用于业务线程的时间与CPU总消耗时间的比值。为了承…1. ParallelGCThreads参数含义JVM垃圾回收(GC)算法的两个优化标的吞吐量和停顿时长。JVM会使用特定的GC收集线程当GC开始的时候GC线程会和业务线程抢占CPU时间吞吐量定义为CPU用于业务线程的时间与CPU总消耗时间的比值。为了承接更大的流量吞吐量越大越好。为了安全的垃圾回收在GC或者GC某个阶段所有业务线程都会被暂停也就是STWStop The World)STW持续时间就是停顿时长停顿时长影响响应速度因此越小越好。生产实践中需要根据业务特点设置一个合理的GC线程数取得吞吐量和停顿时长的平衡。目前广泛使用的GC算法包括PS MarkSweep/PS Scavenge, ConcurrentMarkSweep/ParNew, G1等都可以通过ParallelGCThreads参数来指定JVM在并行GC时参与垃圾收集的线程数。该值设置过小GC暂停时间变长影响RT设置过大则影响吞吐量从而导致CPU过高。2. ParallelGCThreads参数查看 java -XX:PrintFlagsFinal -version | grep ParallelGCThreads3. ParallelGCThreads参数设置GC并发线程数可以通过JVM启动参数: -XX:ParallelGCThreadsN来指定。在未明确指定的情况下JVM会根据逻辑核数ncpus采用以下公式来计算默认值◦当ncpus小于8时ParallelGCThreads ncpus◦当ncpus大于8时ParallelGCThreads 8 (ncpus - 8 ) ( 5/8 )一般来说在无特殊要求下ParallelGCThreads参数使用默认值就可以了。但是在JRE版本1.8.0_131之前JVM无法感知Docker的CPU限制会使用宿主机的逻辑核数计算默认值。 比如部署在128核物理机上的容器JVM中默认ParallelGCThreads为83远超过了容器的核数。过多的GC线程数抢占了业务线程的CPU时间加上线程切换的开销较大的降低了吞吐量。因此JRE 1.8.0_131之前的版本未明确指定ParallelGCThreads会有较大的风险。4. ParallelGCThreads参数实验创建 8C12G 容器宿主机是128C。模拟线上真实流量采用相同QPS观察及对比JVM YoungGCJVM CPU容器CPU等监控数据。场景如下◦场景1: JVM ParallelGCThreads 默认值QPS 420持续5分钟CPU恒定在70%◦场景2: JVM ParallelGCThreads8QPS 420持续5分钟CPU恒定在65%◦场景3: JVM ParallelGCThreads 默认值QPS瞬时发压到420前1min CPU持续100%◦场景4: JVM ParallelGCThreads8QPS瞬时发压到420前2s CPU持续100%后面回落从监控数据来看各场景下CPU差距较明显特别是场景3和场景4的对比。场景3由于GC线程过多CPU持续100%时长达1分钟。可以得出以下两个结论1.修改 ParallelGCThreads 8后同等QPS情况下CPU会降低5%左右2.修改 ParallelGCThreads 8后瞬间发压且CPU打满情况下CPU恢复较快5. ParallelGCThreads修改建议ParallelGCThreads配置存在风险的应用修改方式为以下两种方案任选一种◦升级JRE版本到1.8.0_131以上推荐1.8.0_192◦在JVM启动参数明确指定 -XX:ParallelGCThreadsNN为下表的推荐值容器核数248163264推荐值248132343建议上下界1~22~44~88~1616~3232~64附带1、CPU总核数 物理CPU个数 * 每颗物理CPU的核数2、总逻辑CPU数 物理CPU个数 * 每颗物理CPU的核数 * 超线程数3、相关命令查看CPU信息型号cat /proc/cpuinfo | grep name | cut -f2 -d: | uniq -c 28 Intel(R) Xeon(R) CPU E5-2650 v2 2.60GHz 查看物理CPU个数cat /proc/cpuinfo| grep physical id| sort| uniq| wc -l 1查看每个物理CPU中core的个数(即核数) cat /proc/cpuinfo| grep cpu cores| uniq cpu cores : 14 查看逻辑CPU的个数cat /proc/cpuinfo| grep processor| wc -l 12