服务器 频道

分析:如何改进SOCKS5服务器的性能

各种运行模式的比较

     传统上,并发服务器调用fork派生一个子进程来处理每个客户,在SOCKS5服务器上,默认的模式也是这种,即Normal模式,这种模式问题在于fork子进程时所消耗的CPU时间,这对负载较轻时还能适用,但当负载较重(比如并发连接数较多)时,对性能就会有很大的影响。

     Preforking模式就是Normal模式的一个增强,它是预先派生一组子进程来接受客户请求而不再为每个客户请求fork一个子进程。这种模式的优点在于: 不需要引入父进程fork的开销,新客户就能得到处理,而缺点在于:每次启动服务器时,父进程必须猜测到底需要预先派生多少子进程。

     另外一种增强模式就是Thread模式,它是利用创建一个线程来处理每个客户,使用多线程的理由之一是和进程相比,它是一种非常“节俭”的多任务操作方式。在Linux系统下,启动一个新的进程必须分配给它独立的地址空间,建立众多的数据表来维护它的代码段、堆栈段和数据段,这是一种“昂贵”的多任务工作方式。而运行于一个进程中的多个线程,它们彼此之间使用相同的地址空间,共享大部分数据,启动一个线程所花费的空间远远小于启动一个进程所花费的空间,而且,线程间彼此切换所需的时间也远远小于进程间切换所需要的时间。

     Inetd模式通常不用于提供大量服务的时候,由于它的开销是每个客户一个fork和一个exec。Singleshot模式只是一种用于调试的运行模式,它只能处理一个连接。

0
相关文章