为Liferay Server分配Perm,Heap Size
?上個月我們公司的Liferay專家請我幫她合理分配perm和heap size從而能讓liferay服務器可以達到最高的性能:我從我的經驗出發,給了我認為最理想的內存劃分。
直接貼上原始郵件內容了:
?
?
Factors into consideration:
?
(1)????Is the server only run Liferay? Or besides it ,it also need to run other services.
?
Perm Space:
(2)????The perm size will not be set too large ,because no GC will clear perm space.
(3)????The perm size will not be set too small ,because if classloader load a lot of classes(For example ,a lot of entry in classpath) ,it will “Perm Gem space overflow” error.
?
Heap Space( GC<Gabbage Collection> will work on Heap space):
(4)????Heap Size should not be set to too small, if too small ,a lot of GC will happen ,which reduce the server performance.
(5)????The - xms should not ?be set too large ,otherwise , the GC thread will update the heap’s ?Young to Old frequently.
(6)????It’s better that –xms ?is equal to –xmx (High Concurrent Application), otherwise ,-xms should be 1/2 to 1/3 of the -xmx, and –xmn is 1/3 of the -xmx
?
Stack:
(7)????If we don’t have a lot of recursion invocation ,this number shouldn’t be set to too large.
?
GC:
(8)????If Heap Size is too large ,it will cost a lot of time to do GC ,but since it is low –priority process, so it won’t affect too much.
?
?
The Result:
?
?
If the server’s memory is M ( It should be physical memory (vi /proc/meminfo)? minus the necessary daemon process’s occupation)
?
If our application is (1) dedicated application (2) less concurrency access (3) don’t need a lot of temp memory (4) web framework ,don’t have sophisticated recursion
?
My ?suggestion:
?
Heap:
-xmx? ?2/3M (Large can reduce the frequency of GC, but increase the GC time )
-xms?? 1/3M( Since we are not the high-concurrence application ,unlike e-commerce website, only a few person use our portal website ,so? set xms to ? of –xmx is enough)
-xmn? 256M(? we should set it as small as possible if we don’t need too many temp memory)
?
?
Perm:
-xxPermSize? 128M (the minimum of the perm size , 256M is enough for our? liferay server ,because it is not need so many classes to load by classloader)
We can use jmap to collect the perm size that our running process actually occupied (Suppose our liferay running instance is 7317):
[cwang58@cwang58-linux eclipse]$ jmap 7317
Attaching to process ID 7317, please wait...
Debugger attached successfully.
Server compiler detected.
JVM version is 20.4-b02
0x00215000????? 109K??? /lib/ld-2.3.4.so
0x00234000????? 1511K?? /lib/tls/libc-2.3.4.so
0x00366000????? 209K??? /lib/tls/libm-2.3.4.so
0x0038b000????? 16K???? /lib/libdl-2.3.4.so
0x00511000????? 105K??? /lib/tls/libpthread-2.3.4.so
0x00aa5000????? 79K???? /lib/libresolv-2.3.4.so
0x00dc1000????? 49K???? /lib/tls/librt-2.3.4.so
0x0478d000????? 99K???? /lib/libnsl-2.3.4.so
0x08048000????? 46K???? /app/jdk1.6.0_29/bin/java
0x6066f000????? 22K???? /lib/libnss_dns-2.3.4.so
0x60f06000????? 26K???? /app/jdk1.6.0_29/jre/lib/i386/headless/libmawt.so
0x60f0c000????? 612K??? /app/jdk1.6.0_29/jre/lib/i386/libawt.so
0x62fe8000????? 94K???? /app/jdk1.6.0_29/jre/lib/i386/libnet.so
0x63441000????? 34K???? /app/jdk1.6.0_29/jre/lib/i386/libmanagement.so
0x63773000????? 18K???? /app/jdk1.6.0_29/jre/lib/i386/libdt_socket.so
0xb70d0000????? 75K???? /app/jdk1.6.0_29/jre/lib/i386/libzip.so
0xb70e1000????? 46K???? /lib/libnss_files-2.3.4.so
0xb72fd000????? 12K???? /app/jdk1.6.0_29/jre/lib/i386/libnpt.so
0xb7301000????? 272K??? /app/jdk1.6.0_29/jre/lib/i386/libjdwp.so
0xb733e000????? 184K??? /app/jdk1.6.0_29/jre/lib/i386/libjava.so
0xb7363000????? 55K???? /app/jdk1.6.0_29/jre/lib/i386/libverify.so
0xb73c0000????? 10022K? /app/jdk1.6.0_29/jre/lib/i386/server/libjvm.so
0xb7fe5000????? 37K???? /app/jdk1.6.0_29/jre/lib/i386/jli/libjli.so
?
Not so much.
?
?
-xxMaxPermSize 256M ( the maximum perm size ,in occasion ,it should be double of the minimum perm size )
?
Stack:
-Xss 256k(because we are web application ,don’t need sophisticate calculation)
?
?
One Solution:
If our memory is 4G ( suppose 1G is occupied by OS and daemon processes)
?
One of the best practice is :
?
-xmx 2048M
-xms 1024M
-xmn 256M
-xxPermSize 128M
-xxMaxPermSize 256M
-Xss 256k
?
轉載于:https://blog.51cto.com/supercharles888/980694
總結
以上是生活随笔為你收集整理的为Liferay Server分配Perm,Heap Size的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: Log4j 日志
- 下一篇: 天籁数学——数列篇(1)