Hi,
Thank you for the kind words about our little server.
We don't have numbers regarding the throughput, because they can vary a lot depending on several factors that are not under UWS control.
Our throughput should be comparable with IIS, with IIS app pool being single-process (not web-garden).
Actual throughput depends on following factors:
- Obviously, on the average time it takes your app to process a request.
- On whether you use a server or a consumer version of Windows. Consumer versions have very limited number of inbound TCP connections: anywhere from 2 (Home version) to 10 (Pro/Enterprise). Windows Server doesn't have that limitation and therefore can serve vastly larger number of concurrent users all things being equal.
- On how long a connection is kept open via "keep-alive" after it was used. Shorter keep-alive settings allows more concurrent users sending requests in rapid succession, at the expense of slower subsequent request processing time required to re-open a connection. This is especially important on consumer versions of Windows with limited number of inbound TCP connections: no keep-alive combined with very fast request processing by the app may allow lots of quasi-concurrent requests coming from different users to be handled, enabling high throughput.
Finally, another thing to note is that UWS, just like IIS, uses http.sys driver to handle incoming http requests. Connections get refused in most cases by the the OS on the host system - before UWS ever gets a chance to process it.
We suspect this information is not as clear cut an answer as you have hoped, but this information should let you adjust the "knobs and dials" of your application and hosting environment settings to find the desired balance between the number of concurrent requests and average request processing time, or to find performance bottlenecks if they exist.
Best regards,
UltiDev Team.
Please donate at
http://www.ultidev.com/products/Donate.aspx to help us improve our products.