iis 应用程序池优化

5月 27, 2022 223点热度 0人点赞 0条评论

首先程序的优化,不只是沿着一个点进行,往往都是程序配合服务器及数据服务器配置提升性能。

第一步:数据库链接优化

在数据库链接字符串中添加“Max Pool Size=32767;”,32767是数据库的最大链接数,也可以设置0个代表最大。

可以解决的错误:

1.超时时间已到。超时时间已到,但是尚未从池中获取连接。出现这种情况可能是因为所有池连接均在使用,并且达到了最大池大小。

Timeout expired.  The timeout period elapsed prior to obtaining a connection from the pool.  This may have occurred because all pooled connections were in use and max pool size was reached.

如何查询数据库用户的最大链接个数

A:查询所有用户的链接个数

select loginame,count(1) as Nums
from sys.sysprocesses
group by loginame
order by 2 desc

B:查询单个用户

--jxb数据库用户名
SP_WHO 'jxb'
--jxb数据库用户名
select spid,ecid,status,loginame,hostname,cmd,request_id 
from sys.sysprocesses where loginame='jxb'

如果链接用户超出设置最大连接数,那么就会进入排序等待,设置“connect timeout = 20;”设置等待超时时间,默认15

第二步:站点连接数设置

打开IIS,找到需要设置的站点,右键管理网站——高级设置——行为——限制,调整最大并发连接数,这里默认不要修改。

超出最大连接数的用户则会直接返回:HTTP Error 503. The service is unavailable.”

第三步:检查应用程序池设置

应用程序池右键高级设置——常规——队列长度,默认1000,范围在10-65535 之间。

高级设置——进程模式——最大工作进程数,默认1,最大设置4000000个,工作进程是消耗服务器资源的,可以依照实际情况适当增加。

 

 

 

回收 > 固定时间间隔(分钟)
一个时间段,超过该时间段,应用程序池将回收。值为 0 ,则应用程序池不会按固定间隔回收

默认值:1740分钟,29小时
优化设置:改为0 。因为无法避免在高峰期发生回收。同时设置“回收 > 特定时间”

回收 > 特定时间
应用程序池进行回收的一组特定的本地时间(24小时制)
优化设置:固定在低峰期时回收。eg:设定为 04:00 、15:30 等
另外,也可以使用windows计划任务实现iis站点每周六晚定时回收

进程模型 > 闲置超时(分钟)
一个时间段,设定工作进程允许保持闲置状态的最大时间间隔,超过该时间就会自动关闭。
优化设置:改为0,避免内存信息频繁被回收清空。同时设置“回收 > 特定时间”

进程模型 > 空闲超时操作
默认是“Terminate”(另一个选项是“Suspend”)。
Terminate 表示一旦超时就终止服务,并回收工作进程的缓冲区的内存;
Suspend 则悬停等待,暂不回收缓冲区内存。

常规 > 队列长度
HTTP.sys 将针对应用程序池排队的最大请求数。默认值1000,最大值65535。
如果设置太大则会消耗大量的系统资源 ,而设置太小会导致客户端访问时频繁出现"503服务不可用"响应。
优化设置:可先改为 5000(设置为预期最多并发用户数的1.5倍,官方参考
使用windows性能监控(性能监控:cmd->perfmon.msc),添加“HTTP Service Request Queues/CurrentQueueSize”指标,观察某个应用程序池当前队列中请求的个数。

启用Web园(Web Garden),进程模型 > 最大工作进程数
在Web园中你可以配置此应用程序池所使用的最大工作进程数,默认为1,最大可以设置为4000000; 配置使用多个工作进程可以提高该应用程序池处理请求的性能,但是在设置为使用多个工作进程之前,请考虑以下两点:
1、每一个工作进程都会消耗系统资源和CPU占用率;太多的工作进程会导致系统资源和CPU利用率的急剧消耗;
2、每一个工作进程都具有自己的状态数据,如果Web应用程序依赖于工作进程保存状态数据,那么可能不支持使用多个工作进程。

这样设置,增加了处理进程数,相当于集群,避免大量请求处于排队状态
参考:
IIS并发优化
文章介绍:使用windows性能监控:cmd->perfmon.msc。监控IIS应用运行情况,再根据需要进行iis参数设置
Web Service/Current Connections 监控某个应用程序池来指示当前该应用程序池的连接的数量。
ASP.NET Apps v4.0.30319/Requests Executing 监控所有的 ASP.Net 4.0 正在处理中的请求数量。
ASP.NET v4.0.30319/Requests Current 与上述类似用于监控 Asp.Net 4.0 正在处理中的请求数量。
HTTP Service Request Queues/CurrentQueueSize 用来监控某个应用程序池当前队列中请求的个数。

调整支持并发请求的数量
默认支持并发请求数量为:5000
超出此并发数,会报异常
HTTP Error 503.2 - Service Unavailable
The serverRuntime@appConcurrentRequestLimit setting is being exceeded.

李 锋

这个人很懒,什么都没留下

文章评论