|
|
1
20
这与ASP.NET本身无关(我在这方面的知识很少),但通常与web服务器有关。大多数web服务器都使用线程(或进程)来处理请求,因此基本上,您拥有的任何代码片段都将对两个连接并行执行。当然,如果您访问一个数据库或某个放置了锁的其他后端系统,只允许一个会话执行查询,那么您可能已经隐式地序列化了所有请求。 Web服务器通常具有最小和最大数量的工作人员,这些工作人员根据当前硬件(CPU、内存等)进行调整。如果这些连接耗尽,新请求将排队等待工作进程可用,或者直到达到挂起请求的最大队列长度,此时它将忽略新连接,从而有效地拒绝服务(如果这是故意的,则称为拒绝服务或DoS攻击)。 所以,用你的话来说,这是一个组合,大量的同时请求填满了队列。 |
|
|
2
4
它应该使用线程池。请注意,它们仍然在同一个应用程序中,因此应用程序级别的项(如静态变量)仍然在它们之间共享。 |
|
|
3
1
从…起 this article
因此,是的,在DOS攻击的情况下,由于大量的连接,速度会很慢 |
|
|
4
1
此外,ASP.NET为每个会话处理一个请求,但恶意用户可以打开任意多个会话。
据我所知,除了设置最大排队请求数(等待处理)之外,没有一种内置的方法来限制ASP.NET请求。理想情况下,这个数字应该非常小。您可以使用性能计数器监视排队的ASP.NET请求数。假设你发现,在交通高峰期,这个数字是100。然后,您可以更新应用程序,使其在该数字超过100时拒绝登录尝试,这样数据库就不会被命中(从来没有这样做过,只是一个想法)。 |