Skip site navigation (1)Skip section navigation (2)
Date:      Thu, 16 Nov 2000 16:31:52 -0800
From:      Alfred Perlstein <bright@wintelcom.net>
To:        FengYue <fengyue@bluerose.windmoon.nu>
Cc:        Bakul Shah <bakul@bitblocks.com>, freebsd-hackers@FreeBSD.ORG
Subject:   Re: Multithreaded tcp-server or non-blocking ?
Message-ID:  <20001116163152.E18037@fw.wintelcom.net>
In-Reply-To: <Pine.BSF.4.21.0011161601150.19569-100000@shell.unixbox.com>; from fengyue@bluerose.windmoon.nu on Thu, Nov 16, 2000 at 04:15:28PM -0800
References:  <200011162354.SAA07155@repulse.cnchost.com> <Pine.BSF.4.21.0011161601150.19569-100000@shell.unixbox.com>

next in thread | previous in thread | raw e-mail | index | archive | help
* FengYue <fengyue@bluerose.windmoon.nu> [001116 16:15] wrote:
> 
> On Thu, 16 Nov 2000, Bakul Shah wrote:
> 
> ->Yes, this is definitely simpler and preferable when servicing
> ->a small number of concurrent requests.  But you have to spawn
> ->off as many processes as the worst case number of concurrent
> ->requests you want to service since while all the processes
> ->are busy servicing, additional connections are not being
> ->accepted (after the listen backlog is exhausted).  By using
> 
> Well, with some additional coding, the parent process could easily
> monitor how many child processes are being used at a given time (like
> using mmap() to create a shared memory region and have the
> child process increases the busy_count...etc)
> and then to decide if it needs to spawn off some more processes into
> the pool based on the percentpage of
> number_of_busy_processes/total_processes_in_the_pool.  Just
> like the way apache does it I guess.  And, ofcoz, I agree that
> there are some performance impact if too many processes blocking on the
> accept() call.

Actually FreeBSD uses wakeup_one() for accept(), the only problem
is when your server must wait on more than one port/IP, then you
need to use select(), however when many processes are selecting
on the same descriptor it kills performance, that's why things
like apache use semaphores or file locks instead of select.

> But then again, we're just talking about an easy solution for a webserver
> that only wants to handle no more than 15 clients at any given time:)

Yes, it may be overkill. :)

-- 
-Alfred Perlstein - [bright@wintelcom.net|alfred@freebsd.org]
"I have the heart of a child; I keep it in a jar on my desk."


To Unsubscribe: send mail to majordomo@FreeBSD.org
with "unsubscribe freebsd-hackers" in the body of the message




Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?20001116163152.E18037>