Aspstate SQL Server数据库镜像高IO

时间:2014-09-25 11:05:34

标签: sql asp.net sql-server iis amazon-ec2

我们目前在使用aspstate数据库镜像方面存在问题,因为我们每天都有大约10,000名活跃用户在线访问,并且aspstate数据库在编写时非常繁重,并将其传递给镜像,镜像的驱动器是IO非常高,并且由于在镜像上写入数据的延迟,导致两台服务器都无法访问。我们正在使用SQL Server 2012标准,因此不能使用异步模式。

我们在Amazon EC2实例上使用EBS支持的卷和1000IOPS运行SQL Server,在您的视图中这应该足够了吗?由于我们似乎有非常平稳的时间,我们有超过15,000个在线用户,然后其他时间只有10,000个用户在线,我们在镜像上有磁盘队列长度问题(备份服务器不是主服务器。)

当磁盘队列长度增加时,原则可以是以10-20mbps不变的速度写入aspstate.mdf文件。

我们将平均时间内的IOPS提高到2000,因为目前我们不得不禁用镜像,但您是否期望这样,并且之前有人处理过此类音量?

此致

利安 Resource monitor Performance monitor Cloudwatch

1 个答案:

答案 0 :(得分:0)

ASPState等高事务工作负载的瓶颈不是数据文件,而是事务日志。在同步镜像的情况下,为镜像的网络和同步提交引入了额外的延迟。如果您有大量APSState请求,则无法容忍此延迟。请记住,除非在启用会话状态的情况下另外指定,否则每个ASP.NET页面请求将需要对会话状态行进行2次更新。因此,如果您有10,000个活动用户每15秒点击一次,那么每个数据库上的事务日志写入每秒需要大约1,300个I / O.

如果您必须具有HA用于会话状态,我建议故障转移群集以消除网络延迟。您还可以考虑通过为不需要会话状态的页面指定只读或无指令来调整会话状态。如果需要支持大量用户,请考虑使用内存中会话状态解决方案而不是开箱即用的ASPSession状态数据库。还要记住会话状态数据是临时的,因此您可以放弃持久性。