First, writing a serious web server is not trivial in any language. It's a complex network server that requires intense attention to security (witness the number of IIS exploits). Not something to be taken lightly.

Second, I think you're underestimating the power and flexibility of Apache2. Let's look at some of your shopping list:

Built-in distributed application- and session-state.
This is application and language specific. Web servers have no business getting into this.
The ability to use different processes for different websites.
Apache2's model allows any configuration of processes and threads that you like with MPM modules.
The ability to specify resource limits on a per-website basis.
Check out some of the bandwidth and throttling modules available for Apache2. They can do this.
Cluster-awareness. Load-balancing and application clustering should not be "bolted-on" as an afterthought. These features are important enough to be included as part of the overall system architecture.
Again, I would say this has nothing to do with the web server itself and should not be tied to it, but there are load-balancing modules for Apache2 if you insist. The mod_proxy stuff is one option.
A "mini" version capable of running a single website - especially useful for local development and testing.
Apache2 works fine for this. You can simply start your own instance with your own config file on a specific IP and port. In fact, unlike IIS, you can install dozens of dev Apache2 servers with different compile options on a single machine and start, stop, and configure them all separately. It's total freedom.
Like FCGI, the ability to pass "requests" to another process and return "responses." This would presumably be simpler than requiring a compiled binary (*.so) as a module.
What's wrong with using FCGI and mod_proxy for this, as we have for years?

You also mentioned starting/stopping a single virtual host. This is pretty simple with FastCGI, by restarting the FastCGI processes for that site. If you use mod_perl and want to do this, you would run a separate backend instance for each site. Running a proxy in front of mod_perl has long been the recommended configuration.


In reply to Re: Time to write a "serious" http server in Perl? by perrin
in thread Time to write a "serious" http server in Perl? by jdrago_999

Title:
Use:  <p> text here (a paragraph) </p>
and:  <code> code here </code>
to format your post, it's "PerlMonks-approved HTML":



  • Posts are HTML formatted. Put <p> </p> tags around your paragraphs. Put <code> </code> tags around your code and data!
  • Titles consisting of a single word are discouraged, and in most cases are disallowed outright.
  • Read Where should I post X? if you're not absolutely sure you're posting in the right place.
  • Please read these before you post! —
  • Posts may use any of the Perl Monks Approved HTML tags:
    a, abbr, b, big, blockquote, br, caption, center, col, colgroup, dd, del, details, div, dl, dt, em, font, h1, h2, h3, h4, h5, h6, hr, i, ins, li, ol, p, pre, readmore, small, span, spoiler, strike, strong, sub, summary, sup, table, tbody, td, tfoot, th, thead, tr, tt, u, ul, wbr
  • You may need to use entities for some characters, as follows. (Exception: Within code tags, you can put the characters literally.)
            For:     Use:
    & &amp;
    < &lt;
    > &gt;
    [ &#91;
    ] &#93;
  • Link using PerlMonks shortcuts! What shortcuts can I use for linking?
  • See Writeup Formatting Tips and other pages linked from there for more info.