Narya是基于NIO的网游服务器底层通讯引擎,并在其上做了对象的序列化,可以直接做方法的远程调用。今天有时间测试了下其性能。
测试环境如下
服务器
CPU:Intel Xeon X3220 2.40GHz 四核
内存:8G
操作系统:Red Hat Enterprise Linux Server release 5.4, 内核版本为2.6.18-164.el5PAE
客户机
CPU:Intel Xeon E5410 2.33GHZ 八核
内存:4G
操作系统:WIndow Server 2008 R2 Enterprise
关键测试代码
public class TestApp {
public static void main (String[] args)
{
for (int i = 0; i < 3000; i++) {
TestClient tclient = new TestClient();
UsernamePasswordCreds creds =
new UsernamePasswordCreds(new Name("test" + i), "test");
BasicRunQueue rqueue = new BasicRunQueue();
Client client = new Client(creds, rqueue);
tclient.setClient(client);
client.addClientObserver(tclient);
client.setServer("202.75.220.231", new int[]{45312});
client.logon();
// start up our event processing loop
rqueue.start();
try {
Thread.sleep(RandomUtil.getInRange(0, 100));
} catch (Exception e) {
}
}
}
}
这里一共开启3000个线程,模拟3000用户,每个线程之间间隔0~0.1秒
for (int i = 0; i < 500; i++) {
service.test(client, "one", 2, three, new TestService.TestFuncListener() {
public void testSucceeded (String one, int two) {
//log.info("Got test response [one=" + one + ", two=" + two + "].");
jobCount++;
if (jobCount == 500) {
client.logoff(false);
}
}
public void requestFailed (String reason) {
//log.info("Urk! Request failed [reason=" + reason + "].");
}
});
try {
Thread.sleep(RandomUtil.getInRange(50, 100));
} catch (Exception e) {
}
}
每个线程发送500次请求,每次请求间隔0.05 ~ 0.1秒,共3000x500 = 150万次请求,外加3000次登录与登出。
测试结果:
整个测试共持续了5分钟左右,使用了linux的sar命令,以每5秒为采样频率记录了测试时的系统状态
CPU消耗情况:
[root@localhost ~]# sar -u -f monitor
02:55:20 PM CPU %user %nice %system %iowait %steal %idle
02:55:25 PM all 0.00 0.00 0.05 0.00 0.00 99.95
02:56:33 PM all 0.37 0.00 0.15 0.01 0.00 99.47
02:56:38 PM all 3.75 0.00 0.40 0.00 0.00 95.85
02:56:43 PM all 16.10 0.00 1.10 0.00 0.00 82.80
02:56:48 PM all 15.21 0.00 1.90 0.00 0.00 82.89
02:56:53 PM all 10.65 0.00 1.75 0.00 0.00 87.60
02:56:58 PM all 16.30 0.00 3.95 0.00 0.00 79.75
02:57:03 PM all 14.16 0.00 2.60 0.00 0.00 83.24
02:57:08 PM all 19.46 0.00 4.25 0.00 0.00 76.29
02:57:13 PM all 18.04 0.00 3.61 0.00 0.00 78.36
02:57:18 PM all 19.26 0.00 3.66 0.00 0.00 77.08
02:57:23 PM all 19.96 0.00 3.76 0.00 0.00 76.28
02:57:28 PM all 24.23 0.00 4.37 0.00 0.00 71.40
02:57:33 PM all 24.52 0.00 4.61 0.05 0.00 70.81
02:57:38 PM all 25.57 0.00 4.42 0.00 0.00 70.02
02:57:43 PM all 17.77 0.00 2.65 0.00 0.00 79.58
02:57:48 PM all 19.90 0.00 3.06 0.00 0.00 77.04
02:57:53 PM all 21.74 0.00 3.56 0.00 0.00 74.70
02:57:58 PM all 22.72 0.00 3.86 0.00 0.00 73.42
02:58:03 PM all 22.97 0.00 4.01 0.00 0.00 73.02
02:58:03 PM CPU %user %nice %system %iowait %steal %idle
02:58:08 PM all 23.18 0.00 3.86 0.00 0.00 72.96
02:58:13 PM all 24.00 0.00 4.47 0.00 0.00 71.54
02:58:18 PM all 24.62 0.00 4.47 0.00 0.00 70.90
02:58:23 PM all 25.06 0.00 4.78 0.00 0.00 70.16
02:58:28 PM all 24.37 0.00 4.28 0.00 0.00 71.35
02:58:33 PM all 23.36 0.00 4.37 0.00 0.00 72.28
02:58:38 PM all 15.98 0.00 2.66 0.00 0.00 81.36
02:58:43 PM all 17.98 0.00 2.30 0.00 0.00 79.72
02:58:48 PM all 19.12 0.00 2.95 0.00 0.00 77.93
02:58:53 PM all 21.06 0.00 3.70 0.05 0.00 75.19
02:58:58 PM all 21.70 0.00 3.71 0.00 0.00 74.59
02:59:03 PM all 23.31 0.00 4.11 0.00 0.00 72.58
02:59:08 PM all 23.23 0.00 4.06 0.00 0.00 72.70
02:59:13 PM all 21.27 0.00 4.15 0.00 0.00 74.57
02:59:18 PM all 24.01 0.00 4.32 0.00 0.00 71.67
02:59:23 PM all 24.01 0.00 4.67 0.00 0.00 71.32
02:59:28 PM all 23.37 0.00 4.52 0.00 0.00 72.11
02:59:33 PM all 22.19 0.00 3.77 0.00 0.00 74.05
02:59:38 PM all 18.35 0.00 3.41 0.00 0.00 78.25
02:59:43 PM all 15.52 0.00 2.80 0.00 0.00 81.68
02:59:43 PM CPU %user %nice %system %iowait %steal %idle
02:59:48 PM all 12.96 0.00 2.25 0.00 0.00 84.78
02:59:53 PM all 11.32 0.00 2.20 0.00 0.00 86.48
02:59:58 PM all 8.54 0.00 1.30 0.05 0.00 90.11
03:00:03 PM all 5.30 0.00 1.70 0.00 0.00 93.00
03:00:08 PM all 3.65 0.00 0.70 0.00 0.00 95.65
03:00:13 PM all 1.20 0.00 0.15 0.00 0.00 98.65
Average: all 13.92 0.00 2.48 0.01 0.00 83.60
网络流量情况:
[root@localhost ~]# sar -n DEV -f monitor |grep -v eth1 |grep -v lo |grep -v sit0
02:55:20 PM IFACE rxpck/s txpck/s rxbyt/s txbyt/s rxcmp/s txcmp/s rxmcst/s
02:55:25 PM eth0 2.40 1.60 295.60 150.00 0.00 0.00 0.00
02:56:33 PM eth0 3.85 2.11 373.97 279.43 0.00 0.00 0.00
02:56:38 PM eth0 121.80 118.60 17383.00 15822.40 0.00 0.00 0.00
02:56:43 PM eth0 1050.00 973.20 132690.40 104611.20 0.00 0.00 0.00
02:56:48 PM eth0 2123.40 1948.40 258994.00 194737.80 0.00 0.00 0.00
02:56:53 PM eth0 3107.80 2843.00 375485.80 278015.60 0.00 0.00 0.00
02:56:58 PM eth0 4245.20 3889.40 513692.40 378331.20 0.00 0.00 0.00
02:57:03 PM eth0 5214.80 4773.40 630628.80 461246.40 0.00 0.00 0.00
02:57:08 PM eth0 6229.46 5695.59 760204.61 553530.26 0.00 0.00 0.00
02:57:13 PM eth0 5909.02 5832.26 783886.97 582450.30 0.00 0.00 0.00
02:57:18 PM eth0 6274.55 6763.33 855541.48 682523.05 0.00 0.00 0.00
02:57:23 PM eth0 6515.03 7160.52 947785.77 744700.00 0.00 0.00 0.00
02:57:28 PM eth0 7303.81 8091.98 1045808.82 827522.24 0.00 0.00 0.00
02:57:33 PM eth0 7600.40 8350.20 1077683.40 849423.80 0.00 0.00 0.00
02:57:38 PM eth0 7845.78 8383.53 1087125.90 842739.16 0.00 0.00 0.00
02:57:43 PM eth0 5473.15 5686.97 937617.03 630977.15 0.00 0.00 0.00
02:57:48 PM eth0 5408.00 5884.20 926051.80 699848.60 0.00 0.00 0.00
02:57:53 PM eth0 5956.11 6419.04 954598.20 729923.25 0.00 0.00 0.00
02:57:58 PM eth0 6383.60 6960.40 973623.80 758112.40 0.00 0.00 0.00
02:58:03 PM eth0 6859.12 7529.46 1001398.20 786665.33 0.00 0.00 0.00
02:58:08 PM eth0 7224.70 8093.37 1022953.82 827044.58 0.00 0.00 0.00
02:58:13 PM eth0 7665.20 8624.40 1056824.60 863497.40 0.00 0.00 0.00
02:58:18 PM eth0 8153.51 9156.11 1092524.05 898544.69 0.00 0.00 0.00
02:58:23 PM eth0 8508.02 9275.55 1111162.73 899145.89 0.00 0.00 0.00
02:58:28 PM eth0 8359.24 8661.04 1086370.88 841164.46 0.00 0.00 0.00
02:58:33 PM eth0 8114.83 9234.47 1087768.74 884663.13 0.00 0.00 0.00
02:58:38 PM eth0 5116.60 5312.20 863352.00 580472.60 0.00 0.00 0.00
02:58:43 PM eth0 4352.20 4656.00 849515.20 613660.20 0.00 0.00 0.00
02:58:48 PM eth0 4961.72 5358.32 888406.01 659205.61 0.00 0.00 0.00
02:58:53 PM eth0 5585.00 6047.80 922080.80 697588.60 0.00 0.00 0.00
02:58:58 PM eth0 6057.00 6620.60 946097.40 731614.60 0.00 0.00 0.00
02:59:03 PM eth0 6797.39 7510.42 1001382.16 792359.52 0.00 0.00 0.00
02:59:08 PM eth0 7287.00 7926.20 1024262.60 810788.20 0.00 0.00 0.00
02:59:13 PM eth0 7582.16 8175.75 1038606.81 814097.60 0.00 0.00 0.00
02:59:18 PM eth0 7967.54 8920.44 1061654.91 870389.78 0.00 0.00 0.00
02:59:23 PM eth0 8311.04 8845.98 1074007.83 855888.15 0.00 0.00 0.00
02:59:28 PM eth0 7916.03 7880.16 1001989.38 753715.83 0.00 0.00 0.00
02:59:33 PM eth0 7151.20 7276.10 935381.33 702520.68 0.00 0.00 0.00
02:59:38 PM eth0 6192.97 5885.54 816221.29 584488.55 0.00 0.00 0.00
02:59:43 PM eth0 5380.52 5072.29 706938.76 503789.96 0.00 0.00 0.00
02:59:48 PM eth0 4549.70 4234.87 593623.25 421019.44 0.00 0.00 0.00
02:59:53 PM eth0 3716.60 3427.20 477704.20 338031.40 0.00 0.00 0.00
02:59:58 PM eth0 2900.20 2648.80 364806.20 258180.20 0.00 0.00 0.00
03:00:03 PM eth0 2112.02 1870.74 258350.90 180654.31 0.00 0.00 0.00
03:00:08 PM eth0 1188.82 1029.94 142595.61 98956.29 0.00 0.00 0.00
03:00:13 PM eth0 299.00 244.49 33657.52 22990.38 0.00 0.00 0.00
Average: eth0 4217.52 4425.66 592974.45 454484.16 0.00 0.00 0.00
总结:
测试服务器进程CPU消耗平均为14%,峰值在25%左右。
系统进程CPU消耗平均为2.5%,峰值在5%左右。
网络IO读取平均为592k/s,发送平均为454k/s左右。
网络IO读取高峰在1.1m/s,发送高峰在900k/s左右。
使用top命令观察内存(Resident Memory)消耗维持在110M~160M之间
5分钟内接受请求在150万次+,平均每秒为5000+次。
在整个测试过程中没有发现IO异常的情况,从测试结果来看,应该还没有到极限,承载量还有继续提升的空间。
分享到:
相关推荐
Narya与PHP/MySQL论坛的比较,主要体现在性能、可定制性以及安全性上。虽然PHP也是一种广泛使用的语言,但在某些场景下,Python可能提供更快的执行速度和更高效的内存管理。此外,Zope的安全模型相比PHP框架可能更为...
我们还构建了4个笔记本来解释如何使用我们的模型和一个协作实验室: (colab末尾的Tracker可能存在一些问题。我将在有空的时候进行调查) 并发布了这些笔记本的博客文章版本。 我们试图使所有内容易于重用,希望...
成屋图书馆Narya提供了一个构建实时分布式系统的框架,该框架着重于多人在线游戏(大规模或其他)。 它的各种软件包包括: :用于创建实时分布式系统的分布式对象和远程过程调用框架。 :多人游戏环境的基础,它具有...
但是,您在左上角看到的尺寸已映射到将要调整图像大小的尺寸,该尺寸是您在此说明的第一点(如下所示)中选择的。 由于要进行尺寸计算,因此您选择的点(关键点或边界框)可能会在图片上的预览中稍微错位(按像素,...
delta-在Narya流之上添加了对delta编码对象的支持 编辑器-注释控制的反射对象编辑 导出-版本弹性序列化为XML和二进制数据格式 expr-表达式评估和符号绑定 数学-基本的2D和3D数学课程 openal-将Nenya的OpenAL支持与...