在测试最新版本examples中的c10m案例客户端连接后没有向服务器附送数据
在测试最新版本examples中的c10m案例客户端连接后没有向服务器附送数据
没明白你的问题所在,能详细描述一下么?
另外,如果仅仅是测试的话,有很多简单的测试用例,例如:example_tcp_client/example_tcp_server,example_pingpong_client/example_pingpong_server 等等。
在跑C10M这个DEMO时,发现example_c10m_client客户端连接example_c10m_server后没有触发sendmessage這個函数。
这两个程序是专门测试百万连接用的,当时并没有写的那么规整,默认参数是跑不起来的。
在机器‘192.168.24.2’上运行服务端,监听9099端口:
$ ./example_c10m01
WARNING: Logging before InitGoogleLogging() is written to STDERR
...
E0803 10:00:54.445413 144504 main.cc:22] Running ...
Total connected 4
Current round connected 0
Current round disconnected 0
Total received messages 8
Current round received messages 4
Throughput 0.000396729MB/s
E0803 10:00:55.446535 144504 main.cc:22] Running ...
Total connected 4
Current round connected 0
Current round disconnected 0
Total received messages 12
Current round received messages 4
Throughput 0.000396729MB/s
在同一网段内的另一台机器上,运行客户端,具体例子如下:
./evpp_c10m_tcpclient -serverIpPort="192.168.24.2:9099" -localIpCount=10 -messageLen=100
Connected to 192.168.24.2:9099 OK from <nil>
Connected to 192.168.24.2:9099 OK from <nil>
Connected to 192.168.24.2:9099 OK from <nil>
Connected to 192.168.24.2:9099 OK from <nil>
Connected to 192.168.24.2:9099 OK from <nil>
Connected to 192.168.24.2:9099 OK from <nil>
Connected to 192.168.24.2:9099 OK from <nil>
Connected to 192.168.24.2:9099 OK from <nil>
Connected to 192.168.24.2:9099 OK from <nil>
Connected to 192.168.24.2:9099 OK from <nil>
...
非常感谢,不过客户端在windows下會crach,我的系统是WIN10
我这边暂时还没有win10的开发环境,能将具体的crash细节再多贴一点吗?例如日志和堆栈信息。如果能帮忙排查问题那就更好了。多谢多谢。
你的win10环境下还有crash么?请把运行命令完整参数,以及复现步骤说一下,谢谢。
centos7 x64 crash
$ gdb ./example_c10m_client
(gdb) set args -serverIpPort="192.168.24.2:9099" -localIpCount=10 -messageLen=100
....
Program received signal SIGSEGV, Segmentation fault.
calcIpPort (ipPort="", ipIndex=ipIndex@entry=1) at /home/wangqiang/mydev/evpp/examples/c10m/client/main.cc:22
22 evpp::StringSplit(spp[0], ".", 0, dotip);
Missing separate debuginfos, use: debuginfo-install gflags-2.1.1-6.el7.x86_64 glibc-2.17-157.el7_3.5.x86_64 glog-0.3.3-8.el7.x86_64 libevent-2.0.21-4.el7.x86_64 libgcc-4.8.5-11.el7.x86_64 libstdc++-4.8.5-11.el7.x86_64
(gdb) bt
#0 calcIpPort (ipPort="", ipIndex=ipIndex@entry=1) //<----空字符串? at /home/wangqiang/mydev/evpp/examples/c10m/client/main.cc:22
#1 0x0000000000415fce in Client::Client (this=0x7fffffffe1c0, loop=<optimized out>) at /home/wangqiang/mydev/evpp/examples/c10m/client/main.cc:58
#2 0x0000000000413002 in main (argc=1, argv=0x7fffffffe470) at /home/wangqiang/mydev/evpp/examples/c10m/client/main.cc:143
(gdb) p FLAGS_localIpPort
$1 = ""
我用的测试参数是: example_c10m_client -serverIpPort 127.0.0.1:9099 -connPerIp 2 -threadCount 1 -messageLen 1024000 -sleepIntervalMs 2000
另外还有个问题是,无法注册超时为0的定时器时间(double(0)),所以我 connPerIp指定的大于1的值
单台机器能够发起的连接也就是 65535 - 系统保留 (即使有多块网卡), 能够接收的连接 理论是无限; 要测试 c10m 至少需要 两台客户端机器?我这么理解对吗?
c10m-client :loop_->RunAfter(evpp::Duration(double(i+1)), fn); RunAfter 传0进去 会有问题 EventWatcher::Watch 在 0 的时候, EventAdd timeoutval == nullptr 当 sleepIntervalMs = 1000 的时候 发送不出数据, 有一个疑问是 RunAfter 的精度感觉有问题,60HZ 的执行频率 实际 1s只调用32 次 在没有任何压力的时候也是一样