调整本机可发起的TCP连接和可接受的TCP连接的方法

2024-04-24 02:48

本文主要是介绍调整本机可发起的TCP连接和可接受的TCP连接的方法,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

调整本机可发起的TCP连接和可接受的TCP连接的方法:

适用的操作系统:
Microsoft Windows NT Workstation versions 3.5, 3.51, 4.0
Microsoft Windows NT Server versions 3.5, 3.51, 4.0
Microsoft Windows 2000 Professional
Microsoft Windows 2000 Server
Microsoft Windows 2000 Advanced Server
方法:
修改(添加)注册表,并重新启动系统:

HKEY_LOCAL_MACHINE/SYSTEM/CurrentControlSet/Services 下面:

TcpNumConnections
Key: Tcpip/Parameters
取值类型:REG_DWORD - Number
取值范围:0 - 0xfffffe
缺省值:0xfffffe
描述:本参数限制可以同时打开的TCP连接的数量

MaxUserPort
key: Tcpip/Parameters
取值类型:REG_DWORD - Number
取值范围:5000-65534 (十进制)
缺省值:0x1388 (5000 十进制)
描述:控制一个应用程序可以打开的最多端口数量。通常,短命的端口在1024-5000之间分配。
当试图发起5000以上端口的连接,系统将出现WSAENOBUFS(10055)错误:因为队列满或者系统
缺乏足够的缓冲空间。
下面是我的IOCP TCP服务器单机测试结果:

15:201 | | | | | | TIOCPServerCore.Dump Begin==================================>
15:201 | | | | | | Socket线程数量=2
15:201 | | | | | | 缓冲区尺寸=4096
15:211 | | | | | | 空闲缓冲区数量=3
15:211 | | | | | | 使用缓冲区数量=16275
15:211 | | | | | | 最大空闲缓冲区数量=500
15:221 | | | | | | 空闲Socket数量=0
15:231 | | | | | | 使用Socket数量=16274
15:231 | | | | | | 最大空闲Socket数量=500
15:241 | | | | | | 业务处理线程数量=1
15:241 | | | | | | 最大空闲业务处理线程数量=2

CPU占用率很低,内存占用10M左右
本机发起和接受的TCP连接数是16274,好像是最大的可发起连接数了,如果有
别的机器可能可以更多,Microsoft资料说可以接收200000个连接
服务器反应迅速


  请说明您的tcp服务器使用的是什么io模型,我说的是socket   I/O   模型!  
  一下是各种io模型的大概性能比较。  
  I/O   模型                           尝试数/连接成功数  
  block:                             7000/1008  
  noBlock:                         7000/4011  
  WSAAsyncSelect:           7000/1956  
  WSAEventSelect:           7000/6999  
  Overlapped:                   7000/5558   
  completion   port:         7000/7000,   50000/49997  

 

在没有搞懂下面的函数之前,别指望你的服务器会有很高的性能(有的tcp服务器的性能和连接数根本和游戏服务器没法相比,原因就在这里)
ioctlsocket,WSAAsyncSelect,WSACreateEvent,WSAEventSelect,WSAWaitForMultipleEvents,CompletionROUTINE,CreateIoCompletionPort,GetQueuedCompletionStatus。。。。。  

这篇关于调整本机可发起的TCP连接和可接受的TCP连接的方法的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/930573

相关文章

PowerMock测试 mock hbase连接

junit测试中,当无法连接hbase集群,使用PowerMock测试 mock hbase连接,mock类如下: /** * QueryCanTask Tester. * * @author <Authors name> * @since 12/18/2017* @version 1.0 */@RunWith(PowerMockRunner.class)@PowerMockRunner

找不到msvcr110.dll的多种解决方法,轻松解决dll问题

在日常使用计算机的时候,突然提示:“由于找不到msvcr110.dll,无法继续执行代码”。这个错误通常发生在运行某些程序时,系统无法找到所需的动态链接库文件。这个问题可能会给用户带来困扰,但是不用担心,下面我将为大家介绍5种解决方法,帮助你解决这个问题。 一,了解msvcr110.dll文件是什么 msvcr110.dll 是一个由 Microsoft 开发的动态链接库 (DLL)

vscode远程免密ssh原理与实操方法

什么是SSH SSH是一种加密协议,全称为Secure Shell,用于安全地远程登录到服务器或其他远程设备上执行命令或传输文件。它提供了一种安全的加密通信机制,使得远程登录和文件传输等操作不会被恶意攻击者窃取或篡改,确保了数据的保密性和完整性。SSH采用公钥密码学技术,能够有效地防止被中间人攻击或网络窃听。 举例来说,如果我们要使用 Github 这种 git 代码托管平台的话,首先本地要生

视频、音频打时间戳的方法

https://blog.csdn.net/wfqxx/article/details/5497138 1. 视频时间戳      pts = inc++ *(1000/fps);  其中inc是一个静态的,初始值为0,每次打完时间戳inc加1.     在ffmpeg,中的代码为     pkt.pts= m_nVideoTimeStamp++ * (m_VCtx->time_b

android-xml和代码里面添加listerner的方法和优先级

首先:如果我们在xml里面定义了一个listener,又在代码里面动态的注册了一个listener.当我们调用时会使用xml里面的. 1.xml代码添加: <Buttonandroid:id="@+id/hd_test"android:layout_width="match_parent"android:layout_height="wrap_content"android:text=

opengl中的Floatbuffer和IntBuffer与java中数据的存储方式不同的解决方法,编辑一个自己的BufferUtil工具类

https://www.cnblogs.com/bokeofzp/p/5881488.html   android OpenGL ES的书中使用了下面代码: 1)创建三个顶点 private IntBuffer triggerBuffer = IntBuffer.wrap(new int[]{           0,one,0,         -one,-one,0,

ubuntu linux Bcompare工具永久使用方法

https://blog.csdn.net/lyjit/article/details/81354757 bcompare的简介 ​ 我们在工作中会经常用到bcompare工具:合入驱动,对比原始文件等. bcompare,即Beyond Compare 是一个综合的比对工具。 可比对的对象包括纯文字档、资料夹、zip 压缩案、FTP 站,等等。 您可以使用它管理您的原始档、保持比对资料夹同步

Mac完整删除卸载Android Studio的方法--或突然项目不能编译提示NULL POINTER空指针

https://blog.csdn.net/elonspace/article/details/51800949   1、卸载Android Studio,在终端(terminal)执行以下命令: rm -Rf /Applications/Android\ Studio.app rm -Rf ~/Library/Preferences/AndroidStudio* rm ~/Library/P

苹果手机静音时仍然可以播放音乐的设置方法

AVAudioSession *audioSession = [AVAudioSession sharedInstance];     [audioSession setCategory:AVAudioSessionCategoryPlayback              withOptions:AVAudioSessionCategoryOptionMixWithOthers erro

cmake的使用方法: 将源文件组织到不同的目录

一.  简介 前面几篇文章学习了cmake工具针对单个 .c文件的编译方法。 cmake针对含有多个 .c文件的工程的使用编译。cmake工程编译是如何实现编译生成库文件。 本文学习一下另一种情况:当源文件组织到不同的目录下时,cmake工具该如何编译工程。 二.  cmake的使用方法:  将源文件组织到不同的目录 1.  工程目录 前面的多个.c文件的工程中,我们已经加入了