服务器 频道

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

SOCKS5_NECRI服务器性能分析

     SOCKS5_NECRI各种运行模式的最大并发数都与程序的设置及操作系统的限制有关。

     在preforking模式时,能够preforking的子进程数是由启动SOCKS5时用户的输入参数决定,比如socks5 –p –n 100表示的就是preforking模式,并preforking100个子进程,但这个参数会和操作系统的_SC_CHILD_MAX(一个用户打开的最大子进程数)进行比较,如果大于该值,则preforking的子进程数将是_SC_CHILD_MAX,这个值可由sysconf(_SC_CHILD_MAX)得到,在Red Hat Linux 7.3(内核2.4.18-3)中,这个值为999。故preforking运行模式的最大并发连接数也就是999个。

    在normal和thread运行模式中,最大并发连接数都受到程序根据操作系统而设的限制。设置限制的主要原因时SOCKS5_NECRI服务器设计所采用的任务体系结构是每个连接对应一个进程或者线程,如果系统的进出数或者线程数过大,会严重影响系统的性能,甚至让操作系统崩溃。所以,当SOCKS5服务器运行在normal模式时有一个NUMCILIENTS为64的限制,而服务器运行在thread模式时有一个MAXTHREADS为126的限制。

    通过三种运行模式吞吐量的比较,thread和normal模式相差不是很大,但比preforking模式要高27%,主要原因时他们接受的并发连接数不多,这样占用系统资源相对比较少,进程调度和切换之间的开销不是很大。thread模式比normal模式的吞吐量稍高,主要原因是线程比进程更“轻”,比如线程的创建时间比进程更快,线程的调度比进程调度更快等。

0
相关文章