focus on linux, c/c++, lua

在折腾一个压力测试的agent

      为了考察账号服务器(AS)和网关服务器(GS)的性能,写了一个agent。大概思路是这样的,agent启动后,就生成若干个连接,
比如2000个,其中1000个连接到AS,另1000个连接到GS。agent每隔一段时间,比如3s向AS请求注册一个账号,就是把手工注册
的模拟一遍,账号随机生成,agent收到注册成功后,会把账号写到一个文本文档account.txt中。在本地大概收集了2000个账号左
右,然后重新启动agent,利用登录参数模拟玩家登录,每3秒把rand()%50个账号发给AS,请求验证,由于密码我都是设置成固
定的,直接写在代码里了。验证完之后,就去GS请求服务,这些服务都很简单,基本就是获取玩家信息,以及附加的数据等等,
这些数据加起来估计就是在1k之内。
     说下遇到的问题,当连接数在500之内的时候,agent运行正常,服务器运行也不错。top -2看了下,还比较满意。当连接数设
置在1000的时候,也就是agent要分配2000个连接数的时候,就出问题了,跑着跑着就出现segment error了。挂在了
(gdb) bt
#0  0xb7c29328 in ?? () from /lib/tls/i686/cmov/libc.so.6
我开始怀疑是一次性分配的连接过多,ulimit看了下,是unlimited,奇怪了,而且中间过程,还有部分连接会自动断开,这里我没
做心跳,但是我排除了因为无心跳而无响应的可能,因为时间太短,大概有10多分钟而已就断开了。比较幸运的是,服务器运
行都很正常,资源分配也很正常。但是这个agent有点不给力啊,补充下,测试环境为局域网测试,可能测试结果具有片面性,
下一步再按照这个思路找问题,完善这个agent。

posted on 2011-01-12 11:18 zuhd 阅读(1646) 评论(0)  编辑 收藏 引用 所属分类: server


只有注册用户登录后才能发表评论。
网站导航: 博客园   IT新闻   BlogJava   博问   Chat2DB   管理