XMPP协议的一个服务器实现(也是目前较多使用的服务器)Openfire,这里有 3.7为例,默认的jvm启动内存配置较小,至少在我windows测试时,新生代只有1M,整个堆12M,老年代10M,永久区16M左右。在我加上GC信息后发现gc较频繁。通过修改jvm启动参数后,gc明显减少,这对提升openfire的性能还是比较明显。
修改openfire jvm启动参数方式(原文:http://blog.csdn.net/simonhe1973/archive/2009/09/21/4576696.aspx)
原文有误。
Windows:
在openfire的bin目录下建立openfired.vmoptions(作为应用程序运行)或者openfire-service.vmoptions(作为服务运行)
内容添加
-Xms512m
-Xmx512m
Linux:
修改/etc/sysconfig/opfire文件
去掉注释
OPENFIRE_OPTS=”-Xmx512m”
同理如加GC信息也加在上述文件中。
以上为灰色为原博客文章。实际linux下应修改$openfire_home/bin/openfire
INSTALL4J_ADD_VM_PARAMS="-Xms16g -Xmx16g -Xmn8g "
=========================
今天对openfire做压力测试,初步尝试10000个连接消息接收情况,结果刚到800多个,就连不上了,错误:Connection failed. No response from server.:
at org.jivesoftware.smack.PacketReader.startup
到openfire所在服务器:jstat -gcutil jpid 发现gc非常频繁,开销非常大!
0.00 85.00 92.77 62.97 99.97 3613 34.783 893 1514.143 1548.926
72.73 0.00 86.76 63.03 99.97 3616 34.791 893 1514.143 1548.934
0.00 72.73 80.76 63.10 99.97 3619 34.798 893 1514.143 1548.941
88.89 0.00 72.50 63.15 99.97 3622 34.814 893 1514.143 1548.957
0.00 80.00 64.42 63.21 99.97 3625 34.821 893 1514.143 1548.964
100.00 0.00 40.32 63.29 99.97 3628 34.828 893 1514.143 1548.971
0.00 93.75 34.14 63.33 99.97 3631 34.835 893 1514.143 1548.978
80.00 0.00 30.24 63.40 99.97 3634 34.842 893 1514.143 1548.985
0.00 85.00 24.13 63.45 99.97 3637 34.849 893 1514.143 1548.992
75.00 0.00 16.18 63.50 99.97 3640 34.857 893 1514.143 1549.000
0.00 80.00 12.04 63.55 99.97 3643 34.864 893 1514.143 1549.007
80.00 0.00 6.02 63.64 99.97 3646 34.871 893 1514.143 1549.014
0.00 50.00 0.00 63.69 99.97 3649 34.878 893 1514.143 1549.021
0.00 80.00 94.77 63.74 99.97 3651 34.883 893 1514.143 1549.026
80.00 0.00 88.74 63.79 99.97 3654 34.890 893 1514.143 1549.033
0.00 80.00 80.60 63.86 99.97 3657 34.907 893 1514.143 1549.050
10.00 0.00 70.52 63.90 99.97 3660 34.917 893 1514.143 1549.060
0.00 100.00 64.34 63.95 99.97 3663 34.923 893 1514.143 1549.067
72.73 0.00 58.49 64.00 99.97 3666 34.931 893 1514.143 1549.074
很明显能看出永久区快满了,上面的参数配置得派上用场了。服务器32G内存就跑了个服务器,那么。。。。。。