这是一个长时间运行的服务器应用程序,它创建了很多短期的垃圾,几乎没有任何东西在启动后可以终身使用。大多数时候,年轻一代的收集速度很快,即使是10 gb,它也很快,因为它几乎都是垃圾,但我们偶尔会看到残酷的异常值。作为一个潜在的提示,我们正在一台CPU资源更多但内存少12 gb的机器上以更低的负载运行一台配置类似的服务器。我们在那里没有看到这种模式。
java-xms20g-xmx20g-xloggc:“./logs/gc.log”-xx:+printgcdetails-xx:+printgcdatestamps-xx:newratio=1-xx:+disableexplicitgc-xx:+usespinning-xx:preblockspin=1000-xx:-useCounterdecay-xx:+usetLab-xx:+tieredcompilitation-xx:reservedcodecachesize=512m
下面是GC日志中的一个片段。既然sys时间也很长,那么说它将全部时间花在实际执行GC工作上(例如,而不是等待线程到达安全点)是否安全呢?
2013-12-13T14:04:50.388+0000:56748.603:[GC[Psyounggen:10363808K->1248K(10421824K)]10569323K->207003K(20907584K),0.0035110秒][times:user=0.03sys=0.00,real=0.00秒]
2013-12-13T14:17:32.245+0000:57510.460:[GC[Psyounggen:10363808K->1600K(10435072K)]10569563K->207563K(20920832K),0.0038460秒][times:user=0.04sys=0.00,real=0.01秒]
2013-12-13T14:29:08.572+0000:58206.787:[GC[Psyounggen:10381824K->1408K(10430912K)]10587787K->207875K(20916672K),0.0045710秒][times:user=0.04sys=0.00,real=0.01秒]
2013-12-13T14:36:25.176+0000:58643.391:[GC[Psyounggen:10381632K->1600K(10442432K)]10588099K->208371K(20928192K),0.0040800秒][times:user=0.03sys=0.00,real=0.00秒]
2013-12-13T14:44:04.409+0000:59102.624:[GC[Psyounggen:10397120K->1600K(10438848K)]10603891K->208715K(20924608K),14.7387710秒][times:user=0.00 SYS=143.05,real=14.74秒]
2013-12-13T14:52:50.287+0000:59628.502:[GC[Psyounggen:10397120K->11488K(10446720K)]10604235K->218819K(20932480K),0.0127280秒][times:user=0.11 sys=0.00,real=0.01秒]
2013-12-13T14:59:34.934+0000:60033.149:[GC[Psyounggen:10418208K->1536K(10445760K)]10625539K->218931K(20931520K),211.1968100秒][times:user=0.00 SYS=2067.08,real=211.16秒]
2013-12-13T15:12:04.478+0000:60782.693:[GC[Psyounggen:10408256K->15136K(10448064K)]10625651K->232723K(20933824K),0.0147670秒][times:user=0.00sys=0.12,real=0.01秒]
2013-12-13T15:23:02.123+0000:61440.338:[GC[Psyounggen:10426912K->12672K(10448768K)]10644499K->232635K(20934528K),0.0141040秒][times:user=0.00sys=0.12,real=0.02秒]
2013-12-13T15:31:09.119+0000:61927.334:[GC[Psyounggen:10424448K->5280K(10452160K)]10644411K->232907K(20937920K),0.8134440秒][times:user=1.22 SYS=6.30,real=0.82秒]
2013-12-13T15:39:25.083+0000:62423.298:[GC[Psyounggen:10421024K->6208K(10449344K)]10648651K->235547K(20935104K),0.0087890秒][times:user=0.06sys=0.00,real=0.01秒]
2013-12-13T15:47:52.781+0000:62930.996:[GC[Psyounggen:10421952K->7200K(10456960K)]10651291K->239123K(20942720K),0.0094460秒][times:user=0.08sys=0.00,real=0.01秒]
2013-12-13T15:58:18.594+0000:63556.809:[GC[Psyounggen:10433248K->6752K(10454848K)]10665171K->242331K(20940608K),0.0091570秒][times:user=0.08sys=0.00,real=0.01秒]
上面的服务器上的规格是具有48 gb RAM的双4核X5570。HTOP显示使用了15 gb,其余部分随应用程序一起缓存,随时使用略高于10 gb(tenured很小)。这让我觉得这不是分页问题
我所指的另一台服务器是一台双8核E5-2690,内存为32 gb。这两个服务器都在fedora上运行jre 1.7.0_25,尽管上面的服务器是一个非常旧的版本
如此高的sys
时间是不寻常的。可能是干扰了您系统上的其他应用程序/活动吗?
我认为您还应该收集其他系统状态-vmstat
、netstat
、iostat
、mpstat
,以排除系统活动的任何干扰或GC时间。将这些与YounGen期相关联,看看在那些长时间的YounGen暂停期间是否有任何尖峰。
我注意到,与java 6相比,使用java 7的每个年轻垃圾收集平均需要10毫秒以上。我使用的是1.6.0_31和1.7.0_21。配置没有改变,硬件也没有改变,JVM参数是: Java 7: 爪哇6 我还查看了每个单独的时间,对于java 6,每个YGC大约需要10ms,而java 7是20ms。第6版和第7版之间有什么变化可以解释这种行为吗? 编辑:我注意到java 7在64位模式下运行,而j
问题内容: 有人可以从下面的数据中告诉我我的会话将持续多长时间吗?-我不确定哪个告诉我 问题答案: 通常,您可以说_session.gc_maxlifetime_ 指定自上次更改会话数据( 而不是 上次调用!)以来的最长生存时间。但是PHP的会话处理有点复杂。 因为会话数据由垃圾收集器,其仅由称为除去用的概率_session.gc_probability合_ 由devided session.gc
问题内容: 如何获取格式为2个字符串的持续时间? 我正在尝试使用Calendar类并检查。我与此有关的问题是它不一致。知道我在做什么错吗?每次我运行该程序时,如果没有,输出40-70行到控制台。 问题答案: 那是一个已记录的错误。 尝试在设置日历之前清除日历:
许多记者将显示测试持续时间,以及标记缓慢的测试,如“spec”记者所示: 要调整被认为“慢”的东西,您可以使用以下slow()方法: describe('something slow', function() { this.slow(10000); it('should take long enough for me to go make a sandwich', function() { /
在我的应用程序中,用户需要能够输入持续时间,包括分钟和秒。 我正在考虑使用Windows中的控件来更改时间,虽然我只需要几分钟和几秒钟,而且箭头也很好,但不是必需的。 JavaFX 2中是否已经有此控件 如果没有,我如何创建这样的控件 上述Windows控件的屏幕截图: 谢谢你的提示!
问题内容: 我正在寻找一种方法来找出python中音频文件(.wav)的持续时间。到目前为止,我看了一下蟒蛇库,,我没能得到wav文件的时间。给了我持续时间,但不一致。 提前致谢。 问题答案: 持续时间等于帧数除以帧率(每秒帧数): 关于@edwards的评论,下面是一些产生2通道wave文件的代码: 如果您在音频播放器中播放结果文件,则会发现持续时间为40秒。如果运行上面的代码,它还会计算持续时