Most of the performance and reliability of the web server is due to poor web applications. Under the user state, inetinfo.exe is running under the user's state, which will cause inetinfo.exe to hang, IIS service invalid. The past IIS is designed to have only one process --inetinfo.exe, IIS runs in user mode, running in user mode does not communicate directly with hardware, the Winsock, Winsock will incorporate data into the kernel mode component For example, a network card driver). Inemick 1: From the performance, the INetInfo process works as a user-state process. The conversion between user mode and kernel mode is a large operation. The server first passes the incoming HTTP request from the TCP / IP stack of the kernel mode to the user mode Winsock, and the request is passed to IIS by Winsock. This is called Context Switching Massness 2: Violation of the basic principles of operating system stability: 1 isolation of system code and user code; 2 isolate the application. All components of the web service are running in inetinfo.exe, including system code, including user code.
Optimization of poor quality code, for ISPs that provide virtual hosts, usually carry multiple web applications on a server, impossible ISP to troubleshoot, a web application, will be a nine family. There is also a customer code and operating system code to share the same process. Application code may threaten the system code. Haike may make inetinfo to perform some underlying system operations, while inetInfo runs with System system privileges, so buffer Spillage will get the intruder to get System permissions and do anything.
IIS 5.0 alleviates this type of problem. In IIS 5.0, we can set application protection to low (IIS processes), intermediate (buffer pool), advanced (isolated), once the app is collapsed, generally does not affect IIS itself because applications Run in the process other than INetInfo, but all web applications are terminated - by default, application protection is intermediate, all applications are running in a DLLHost.exe pool. In this case, the troubleshooting is not easy, because it is very difficult to determine which application has caused problems. Even if your program is separated into 'high' (web application is isolated in multiple DLLHOST.EXE processes, this is only responsible for dynamic programs. For example, the ASP program. In IIS5.0, Static content is responsible from inetinfo.exe, slower than running within a single process, because many applications are executed or relying on inetinfo, there will be more context switching, crashing applications, although not other processes The application, but still unable to restore, still need to restart the entire inetinfo, to restart the crash, and no problem (INetInfo still uses System privilege), but if we want in a pool (a DLLHOST.EXE Example) running two applications in another pool (another DLLHOST.EXE instance), what should I do? IIS 5.0 does not provide a way to name a DLLHOST.exe instance, so it is not possible to put two specific applications in a pool.
IIS6.0 new design: (1) The most significant change in IIS 6.0 system design is to join the http.sys driver. In WIN 2K and NT 4.0, the conversion between user mode and kernel mode is a big overhead, the server first passes the incoming HTTP request from the TCP / IP stack of the kernel mode to the user mode Winsock, by Winsock passes the request to IIS. Switching from the kernel mode to user mode quickly occurs, but inevitably brings instantaneous delays to the processing process. This delay is increasing when the load is large, and it is essential because this conversion is essential, so the administrator has no way to optimize the process. The most significant change in IIS 6.0 system design is to join the http.sys driver, and the http.sys driver task is to process HTTP requests, and it performs operations in kernel mode. Don't underestimate this change, the task of handling HTTP requests from IIS 5.0, IIS 4.0 user mode to IIS 6.0's kernel mode marks the birth of a new generation of IIS servers. Microsoft uses many optimized algorithms in the http.sys driver, and http.sys extracts static content directly from the response buffer without having to switch to user mode.