Apache不同的版本,软件体系结构差别还是比较大,一种是进程式处理connection request,另外一种是线程式处理connection request.
进程式处理如下图所示:
如果连接比较多,parent进程会fork很多的child子进程来处理connection,每一个子进程一次只能处理一个连接,并发度低,系统吞吐量不高。还有一个比较大的缺点是占用内存多。
线程式处理软件结构如下图所示:
在这种结构里,子进程仍然为父进程fork,但子进程里会有多个线程(thread),每一个线程可以处理一个连接请求,该进程内的线程共享进程的内存地址空间,CPU对线程进行调度,提高了CPU的利用率,由于减少了child进程的数据,也减少了apache的内存消耗;由于采用线程处理连接请求的机制,Apache同时能够处理的连接请求大大增加。通常对Apache设置如下的参数:
StartServers 5
ServerLimit 30
MaxClients 2000
MinSpareThreads 75
MaxSpareThreads 200
ThreadsPerChild 80
对于这些参数什么含义,大家可以网上google一下。
对于Apache,也可以根据自身需要,改写相应的moudle,比如说流量控制,安全控制,你可以试一下