mesos/marthon调优java heap & mesos

2017-07-28  本文已影响0人  运维小兵_加油

最近为了严格控制控制每个java程序在mesos上的资源占用,通过cgroup对cpu&mem做了严格限制,这样设置对整个mesos-slave机器起到了保护作用,但是最近遇到服务经常由于oom被kill -9, 个别服务会影响用户体验。为了解决这个问题,专门对java Heap和mesos分配的内存做了调优。经过调整后,线上节省了75G的内存

==================

JVM Memory Component

JVM-Memory-Area-Parts.jpg

2017-07-28T08:55:43.627+0800: 60192.176: [Full GC (Ergonomics) [PSYoungGen: 256K->0K(348672K)] [ParOldGen: 699270K->72322K(699392K)] 699526K->72322K(1048064K), [Metaspace: 73764K->73764K(1116160K)], 0.1451565 secs] [Times: user=0.43 sys=0.00, real=0.14 secs]
2017-07-28T11:37:47.821+0800: 69916.370: [Full GC (Ergonomics) [PSYoungGen: 384K->0K(347648K)] [ParOldGen: 699259K->73371K(699392K)] 699643K->73371K(1047040K), [Metaspace: 73894K->73894K(1116160K)], 0.1603913 secs] [Times: user=0.48 sys=0.00, real=0.16 secs]
2017-07-28T14:22:50.322+0800: 79818.872: [Full GC (Ergonomics) [PSYoungGen: 416K->0K(348672K)] [ParOldGen: 699275K->73551K(699392K)] 699691K->73551K(1048064K), [Metaspace: 73942K->73918K(1116160K)], 0.1654482 secs] [Times: user=0.49 sys=0.00, real=0.17 secs]

   ```
      
  **In aboue gc log, the service -Xmx is set 1024M, the OldGen in heap changes from  699275K->73551K(699392K), so the full gc collected almost 620M memory, to tune this value we should set the -Xmx larger than 70M (690M - 620M), in this case, we can try to set it as 520M
  `-Xms=512m -Xmx=512m`, then keep watching the gc log to determine if 512m is enough, if this setting is low, OOM error will occur**

Notes: As per above result, we set -Xms=2048m -Xmx=2048m, and limit the mesos memory as 4096m, if there are more concurrent requests, we can increase mesos limited memory

Refrence: http://howtodoinjava.com/core-java/garbage-collection/jvm-memory-model-structure-and-components/

上一篇 下一篇

猜你喜欢

热点阅读