介绍
使用的工具为go-stress-testing-win.exe,作者的github地址:https://github.com/link1st/go-stress-testing,在文章中简单的介绍了常用的一些压测工具,我使用的是作者提供的压测工具。
压测的必要性和意义:https://github.com/link1st/go-stress-testing#2压测
发出测试请求的机器,I5-6500,8G内存。
接收请求的机器,Xeon X5675,16G内存
设置
测试前需设置tcp动态端口范围,运行
netsh int ipv4 show dynamicport tcp
查看动态端口范围。修改一下起始端口:
netsh int ipv4 set dynamicport tcp start=2000 num=63000
再次查看,如图
测试
当活动连接(Active connections)达到32000左右时,会发生wsarecv: An existing connection was forcibly closed by the remote host。此时的keepalive_timeout为30。在这种情况下,应该是服务器的可用活动连接耗尽导致的,当超过30s后,一些连接被释放,测试又可以继续进行。
上图所示,印证了猜想
最大请求并发数150,请求数为1000,当keepalive_timeout为30时,出现请求失败,如图
此时接受的机器cpu占用为8%,内存占用25%。只是简单的并发测试,并没有涉及到数据库的读写操作。