你真的会使用Jmeter吗(一)Address already in use:connect

    技术2022-07-14  77

    对于刚入门的人来说,由于对于Jmeter不了解或是经验不足,常常会对测试出来的数据有一个错误的判断。即使客户不知道技术方面的东西,我们也应该对自己的数据有了如指掌的理解。一是对客户有交代,毕竟你收了人家的钱。二是对自己有一个交代,因为你做一件事情不应该是得过且过,一定要求甚解,明白一些现象背后的原因,这样才能取得进步,走的长远。你真的会用Jmeter吗系列不会详细的罗列Jmeter各种组件的用法因为网上都有,随便一搜就行。我将在这个系列中描述一些常见的坑,希望能够帮助你在性能测试中能真的测试到你们系统真实的性能状况。

    正文

    在一个新的环境下配置jmeter后,制约我们测试到真实数据的第一个问题就是Address already in use:connect了。当任意测试一个接口,线程数高一点并运行了一段时间后系统开始出错。这里以百度为例: 这里新手常常犯的错误是,看到聚合报告中错误率较高时就以为已经到了服务器的瓶颈,实则只是我们测试环境的问题。因为windows默认提供给TCP/IP链接的端口为1024-5000,并且要在四分钟来循环回收,这就导致在短时间发送大量请求时端口被占满无法发送请求的情况,也就是本章所说的异常。 解决办法:

    windows+r 输入regedit进入注册表进入目录HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\Tcpip\Parameters鼠标右键Paramters 添加一个新DWORD并命名为MaxUserPort;双击创建好的项,输入数值为65534,选择十进制保存后重启即可。

    结论

    遇到Address already in use:connect异常,改一下windows系统注册表中的配置就好了。值得注意的是,在错误率较高的情况下,不一定就是接口处理能力到了瓶颈,往往会和一些包含垃圾回收机制的组件相关,像redis之类什么的。总之出了错,第一步就是要排除是不是自己测试环境的问题,杜绝南辕北辙的事情发生。

    Processed: 0.010, SQL: 10