我正在使用ElasticBeanstalk来托管我的Grails应用。 截至目前,我正在使用具有1.7 GiB主内存的m1.small实例。我的问题是我可以分配给我的实例的MaxHeap和Max PermGen是什么?截至目前,我的配置如下所示
Initial JVM heap size: 512m
JVM command line options: -XX:+CMSClassUnloadingEnabled -XX:+CMSPermGenSweepingEnabled -XX:+UseConcMarkSweepGC
Maximum JVM heap size: 512m
Maximum JVM permanent generation size: 256m
有关选择最佳数字的建议,以便我可以为我的Tomcat使用最大内存,并且还有足够的剩余用于操作系统本身吗?
将问题改为1.7 GiB中的MAX可以分配给OS以外的其他东西(在本例中为tomcat)
答案 0 :(得分:0)
您确实需要对应用程序堆栈进行概要分析。
通过添加交换增加虚拟内存,可以很容易地将堆的大小增加到物理内存量以上。 对于性能,您希望找到实例和应用程序之间的正确匹配。
首先在vagrant实例中运行应用程序堆栈,然后测量它。适应直到
您可以获得一致的性能,但m1.small
实例可能会被同一物理主机上的其他实例放慢速度。
也就是说,你可以运行top,并对虚拟内存进行排序。
示例:(比较VIRT,RES和SHR列)
PID USER PR NI VIRT RES SHR S %CPU %MEM TIME+ COMMAND
1220 root 20 0 308m 1316 868 S 0.0 0.3 0:00.43 VBoxService
1126 root 20 0 243m 1576 1040 S 0.0 0.3 0:00.02 rsyslogd
1324 root 20 0 114m 1380 764 S 0.0 0.3 0:00.84 crond
1966 vagrant 20 0 105m 1880 1536 S 0.0 0.4 0:00.12 bash
1962 root 20 0 95788 3740 2832 S 0.0 0.7 0:00.18 sshd
1965 vagrant 20 0 95788 1748 836 S 0.0 0.3 0:00.11 sshd
1323 postfix 20 0 78868 3280 2448 S 0.0 0.7 0:00.00 qmgr
1322 postfix 20 0 78800 3232 2408 S 0.0 0.6 0:00.00 pickup
1314 root 20 0 78720 3252 2400 S 0.0 0.6 0:00.01 master
1238 root 20 0 64116 1180 512 S 0.0 0.2 0:00.80 sshd
这是一个相当小的流浪者实例:
$ cat /proc/meminfo
MemTotal: 502412 kB
MemFree: 350976 kB
Buffers: 27148 kB
Cached: 45668 kB
SwapCached: 0 kB
Active: 45240 kB
Inactive: 39616 kB
Active(anon): 12164 kB
Inactive(anon): 44 kB
Active(file): 33076 kB
Inactive(file): 39572 kB
Unevictable: 0 kB
Mlocked: 0 kB
SwapTotal: 1048568 kB
SwapFree: 1048568 kB
Dirty: 4 kB
Writeback: 0 kB