怎样修改windows服务器中最大的tcp连接数?

怎样修改windows服务器中最大的tcp连接数?,第1张

在做性能测试测试时候,如果被测试的系统页面很简单,并且性能很好,这样会导致压力机得tcp链接数不够而导致如下错误:

HKEY_LOCAL_MACHINE\System\CurrentControlSet\Services\tcpip\Parameters\TcpTimedWaitDelay to 30

and HKEY_LOCAL_MACHINE\System\CurrentControlSet\Services\tcpip\Parameters\MaxUserPort to 65534

and rebooting the machine

See the readme.doc file for more information

通过百度搜索介绍最多的还是让修改TimedWaitDelay 和MaxUserPort这2个值,其中是将TimedWaitDelay修改的相对小点,可以根据实际情况来定,

同时将MaxUserPort这个值修改大些,但是修改完并重启机器后,该问题仍然存在,通过多方查资料,然后对一些注册表进行修改:

[HKEY_LOCAL_MACHINE \System \CurrentControlSet \Services \Tcpip \Parameters]

TcpNumConnections = 0x00fffffe (Default = 16,777,214)

以上注册表信息配置单机的最大允许的TCP连接数,默认为 16M。这个数值看似很大,这个并不是限制最大连接数的唯一条件,还有其他条件会限制到TCP 连接的最大连接数。

最大动态端口数

TCP客户端和服务器连接时,客户端必须分配一个动态端口,默认情况下这个动态端口的分配范围为 1024-5000 ,也就是说默认情况下,客户端最多可以同时发起3977 个Socket 连接。我们可以修改如下注册表来调整这个动态端口的范围

[HKEY_LOCAL_MACHINE \System \CurrentControlSet \Services \Tcpip \Parameters]

MaxUserPort = 5000 (Default = 5000, Max = 65534)

最大TCB 数量

系统为每个TCP 连接分配一个TCP 控制块(TCP control block or TCB),这个控制块用于缓存TCP连接的一些参数,每个TCB需要分配 0.5 KB的pagepool 和 0.5KB 的Non-pagepool,也就说,每个TCP连接会占用 1KB 的系统内存。

系统的最大TCB数量由如下注册表设置决定

[HKEY_LOCAL_MACHINE \System \CurrentControlSet \Services \Tcpip \Parameters]

MaxFreeTcbs = 2000 (Default = RAM dependent, but usual Pro = 1000, Srv=2000)

非Server版本,MaxFreeTcbs 的默认值为1000 (64M 以上物理内存)

Server 版本,这个的默认值为 2000。

也就是说,默认情况下,Server 版本最多同时可以建立并保持2000个TCP 连接。

最大TCB Hash table 数量

TCB 是通过Hash table 来管理的,下面注册表设置决定了这个Hash table 的大小

HKEY_LOCAL_MACHINE \System \CurrentControlSet \services \Tcpip \Parameters]

MaxHashTableSize = 512 (Default = 512, Range = 64-65536)

这个值指明分配 pagepool 内存的数量,也就是说,如果MaxFreeTcbs = 1000 , 则 pagepool 的内存数量为 500KB

那么 MaxHashTableSize 应大于 500 才行。这个数量越大,则Hash table 的冗余度就越高,每次分配和查找 TCP 连接用时就越少。这个值必须是2的幂,且最大为65536.

MaxUserPort = 65534 (Decimal)

MaxHashTableSize = 65536 (Decimal)

MaxFreeTcbs = 16000 (Decimal)

这里我们可以看到 MaxHashTableSize 被配置为比MaxFreeTcbs 大4倍,这样可以大大增加TCP建立的速度。

MySQL服务器的连接数并不是要达到最大的100%为好,还是要具体问题具体分析,下面就对MySQL服务器最大连接数的合理设置进行了详尽的分析,供您参考。\x0d\x0a我们经常会遇见“MySQL:ERROR1040:Toomanyconnections”的情况,一种是访问量确实很高,MySQL服务器抗不住,这个时候就要考虑增加从服务器分散读压力,另外一种情况是MySQL配置文件中max_connections值过小:\x0d\x0amysql>showvariableslike'max_connections'\x0d\x0a+-----------------+-------+\x0d\x0a|Variable_name|Value|\x0d\x0a+-----------------+-------+\x0d\x0a|max_connections|256|\x0d\x0a+-----------------+-------+\x0d\x0a这台MySQL服务器最大连接数是256,然后查询一下服务器响应的最大连接数:\x0d\x0amysql>showglobalstatuslike'Max_used_connections'\x0d\x0aMySQL服务器过去的最大连接数是245,没有达到服务器连接数上限256,应该没有出现1040错误,比较理想的设置是:\x0d\x0aMax_used_connections/max_connections*100%≈85%\x0d\x0a最大连接数占上限连接数的85%左右,如果发现比例在10%以下,MySQL服务器连接上线就设置得过高了。

串口服务器模块的参数包括本地IP地址、工作模式、串口波特率等,具体可以参考串口服务器模块参数简介。

3.串口服务器模块参数配置方法

卓岚串口服务器内嵌模块可以通过3种方式配置参数。分别是网页法、windows工具法、串口类AT命令法。这里是指用户使用卓岚的现有的工具来配置参数。关于开发用户自己的模块搜索、参数配置工具请看下一章节。

3.1 网页法

串口服务器核心模块内部运行了一个小型的Web服务器可以用于参数的配置,使用过路由器配置的用户对此方法一定不陌生。首先在浏览器的地址栏中输入串口服务器模块的当前IP地址,默认出厂IP为192.168.1.200。此时打开的页面即是串口服务器模块上的登录页面,输入登录密码(默认为123456)点击Login,进入参数配置页面。如图所示。修改相应参数后点击“Sbumit”按钮即可提交参数。

网页法配置参数的优点是:简单易用,无需安装任何配置工具,使用浏览器即可进行配置。缺点是:串口服务器模块的IP地址必须是和本机计算机处于同一个网段,否则无法访问网页。另外某些高级参数需要通过windows工具法进行配置。

3.2 Windows工具法

Windows工具法是推荐的参数配置方法。即在用户Windows计算机上运行卓岚ZLVircom软件或ZLDevManager,只要点击搜索即可搜索局域网内的所有串口服务器模块。其中ZLDevManager是一个简易工具,直接拷贝无需安装。对搜索列表中的模块选中后,点击“设备编辑”按钮或者双击列表中此行,即可弹出参数配置对话框,修改相应参数后点击“修改参数”按钮即可。如图所示。

windows工具法配置参数的优点是:1. 不要求串口服务器模块和计算机在同一个网段。2. 一次搜索多个模块,通过名字管理,无需记忆IP地址。3.可以配置高级参数。

windows工具法配置参数实际上是通过“卓岚管理端口协议”进行设备的搜索和参数配置。有两种方法可以将该设备搜索和参数修改功能直接集成到用户软件里:卓岚设备管理函数库DLL、卓岚管理端口协议。前者是一个可供用户调用的DLL库,后者是将管理端口协议的详细内容告诉用户,并由用户自己实现。该项内容属于增值服务。

3.3 串口类AT命令法

以上两种方法都是通过串口服务器模块的网口来配置参数。在某些时候,用户不仅需要通过网口来配置而且希望本地配置,即无需通过另外一台计算机来配置,而是直接通过设备本身来配置自己的参数。例如对于需要现场配置IP地址、现场配置目的IP地址的情况。卓岚的串口类AT命令法很好地满足了该要求。当用户MCU和串口服务器模块通过TTL(UART)串口连接后,用户MCU可以随时发送串口命令来配置参数。该命令类似AT指令,具体的指令格式请参考卓岚相关文档。

卓岚串口类AT命令能够实现的功能,包括但是不限于:

1.读取ZLSN2002/ZLSN2000的当前TCP连接状态,这样就知道模块是否和远端计算机建立了TCP连接。

2.随意控制ZLSN2002模块向任意的目的IP发起TCP连接,在多个目标之间随意切换,在多种工作模式中随意切换。

3.读取串口服务器模块的本地IP。如果是通过DHCP获得IP也能够读取。

4.重新启动串口服务器模块。

使用卓岚串口类AT命令可以完全控制串口服务器模块的TCP运行状态,也就是可以通过AT命令实现socket的connet、listen、send、recv等的函数调用。可以把ZLSN2002看成是“硬件TCP/IP协议栈”,因为ZLSN2002内部完全集成了socket函数的全部功能,而且可以通过串口AT命令的方式进行调用,相对于软件的socket接口来说,“硬件TCP/IP协议栈”不需要用户MCU运行协议栈、也可以保证协议栈的稳定性。卓岚提供有通过串口类AT命令实现让ZLSN串口服务器模块连接、监听、发送、接收的源代码,可方便用户参考。

4.参数配置方法的二次开发

如果用户需要将参数配置、设备搜索集成到到用户自己的软件中可以采用卓岚提供的设备管理函数库、管理端口协议方法。有的时候用户可能需要将IP的配置、波特率的配置集成到用户的管理软件中,而不是用卓岚的zlvircom进行配置,这增加了软件的统一性。以下就介绍这种方法。

4.1 设备管理函数

ZLAN可以提供一个供用户二次开发的动态连接库(DLL),这个动态连接库提供了简单的类似SearchDev()、 GetDevParam()、 SetDevParam()等函数来实现设备的搜索、参数获取、参数设置。使用起来非常方便,并提供有调用此DLL的C代码例子程序。这个函数库目前已经可以下载使用,参考《二次开发函数库的使用》。

4.2 管理端口协议

有的时候用户可能不想让自己的程序带有DLL库,此时更加灵活的控制方法是向ZLAN获取“管理端口协议”,这个协议是卓岚用户搜索模块、获取模块参数、设置模块参数的协议。用户完全可以在读懂协议的基础上自己实现这个协议。

设备管理函数库、ZLDevManage、ZLVircom的设备管理功能也是基于这个协议实现的。用户可以在读懂这个协议的基础上将ZLDevManage、ZLVircom的设备管理功能集成到用户自己的软件中。“管理端口协议”通过网口来配置模块,至少可以实现:

1.设备的搜索:搜索局域网、外网的所有的卓岚串口服务器模块。

2.读取设备参数:读取不同的设备的参数、设备ID、设备运行状态等。

3.重启指定的串口服务器模块。

4.修改指定的串口服务器模块的任何一个参数。


欢迎分享,转载请注明来源:夏雨云

原文地址:https://www.xiayuyun.com/zonghe/35886.html

(0)
打赏 微信扫一扫微信扫一扫 支付宝扫一扫支付宝扫一扫
上一篇 2023-02-21
下一篇2023-02-21

发表评论

登录后才能评论

评论列表(0条)

    保存