Multithreading 套接字服务器中每个客户端连接的新线程?

Multithreading 套接字服务器中每个客户端连接的新线程?,multithreading,mono,sockets,Multithreading,Mono,Sockets,我试图优化每次到TCP套接字服务器的多个连接 每当我收到连接请求时,在侦听服务器中启动一个新线程是否被认为是良好的做法,甚至是合理的做法 我应该在什么时候开始担心基于此基础架构的服务器?在没有任何意义之前,我最多可以工作多少个后台线程 平台是C#,框架是Mono,目标操作系统是CentOS,RAM是2.4G,服务器在云端,我预计每秒大约有200个连接请求。不,每个连接不应该有一个线程。相反,您应该使用异步方法(beginacept/EndAccept、BeginSend/EndSend等)。这些

我试图优化每次到TCP套接字服务器的多个连接

每当我收到连接请求时,在侦听服务器中启动一个新线程是否被认为是良好的做法,甚至是合理的做法

我应该在什么时候开始担心基于此基础架构的服务器?在没有任何意义之前,我最多可以工作多少个后台线程


平台是C#,框架是Mono,目标操作系统是CentOS,RAM是2.4G,服务器在云端,我预计每秒大约有200个连接请求。

不,每个连接不应该有一个线程。相反,您应该使用异步方法(beginacept/EndAccept、BeginSend/EndSend等)。这些将更有效地利用系统资源


特别是,您创建的每个线程都会在上下文切换、堆栈空间、缓存未命中等方面增加开销。例如,Linux比Windows更擅长管理这些东西,但这不应该成为让您自由支配创建任意多线程的借口;)

@codeka每个连接的进程如何。当客户端连接到服务器时。服务器创建不同的进程并将客户端重定向到它?好吧,从技术上讲,每个连接一个进程是相同的。这就是为什么Apache(例如)现在每天都使用一个“工作进程”池来处理同步请求,而不是每个连接一个进程。。。可能是OP实现的一个好方法