我有一个对某些资源持有独占锁的站点。我使用 .NET Application_Start 和 Application_End 事件在适当的时候获取和释放对这些资源的锁。为了使其正常工作,在任何给定时间只能运行一个我的应用程序实例。
为了实现这一点,我已将Disable Overlapped Recycle应用程序池上的属性设置为True. 这个属性应该确保旧的工作进程在应用程序池被回收时在新的工作进程启动之前完全关闭。每当应用程序池通过 IIS 手动回收时,这都可以正常工作,自动作为达到空闲超时的结果或根据任何特定时间/时间间隔规则自动回收。
但是,当站点的 web.config 更新时,此规则不会得到应用 - 在旧的工作进程完成关闭之前会启动一个新的工作进程。这会导致不好的事情发生。我将Disable Recycling for Configuration Changes属性设置False为我确实希望应用程序池在 web.config 更新时被回收 - 这在开发过程中经常发生。
这是预期的东西,还是 IIS 中的错误?是我设置以便更改 web.config 不会回收应用程序池的唯一选择吗?我宁愿不这样做,因为我很确定这会导致人们更改配置然后忘记回收应用程序池会引起很多麻烦。
更新:
更明确地说,当在start旧工作进程完成关闭之前调用新工作进程事件时,旧工作进程end事件永远不会被调用——它不会乱序发生,它根本不会发生。
我有一个关于这个问题的相关问题,但它太复杂和太大了,所以我决定我应该把这个问题分成 NFS 和本地问题。我也试过在 zfs-discuss 邮件列表上询问这个问题,但没有取得多大成功。
大纲:我的设置方式以及我的期望
我实际得到的
我发现池的读取性能没有我预期的那么高
几天前的bonnie++基准测试池
版本 1.97 ------顺序输出------ --顺序输入- --随机- 并发 1 -Per Chr- --Block-- -Rewrite- -Per Chr- --Block-- …
请耐心等待,我知道要阅读的内容很多。这个问题可能适用于其他人,所以最好有答案。我不得不放弃赏金,因为它即将到期。
当我从客户端 (Ubuntu) 复制到我的 NFS 服务器 (Debian) 或从它复制到 NFS 服务器 (Debian) 时,它会最大化千兆位。但是,当我在同一台服务器上的两个目录之间复制时,它的速度在 < 30MB/秒到超过 100MB/秒之间反弹。大多数时候大约是 50MB/秒。
直接在 NFS 服务器(本地磁盘)上执行的相同副本我得到 100-150 MB/秒,有时更多。在此 NFS 导出和从同一服务器上的同一目录导出的 CIFS 共享之间的文件副本同样慢,而在同一服务器上通过 CIFS 的两个目录之间的副本也很慢。iperf显示客户端和服务器之间的双向速度为 941Mb/940Mb。
我确保 NFS 在服务器上使用异步。我还禁用了 ZFS 数据集上的同步,并尝试删除 ZFS 缓存和日志设备。
我已经在 4x2TB 磁盘的非常快的 ZFS 条带镜像上进行了测试,其中有一个 SSD 用于日志和缓存设备。
NFS 服务器规格:
Debian 8.2 核心 4Ghz AMD-FX
32GB ram
ZFS raid 10,SSD 缓存/日志
17GB ARC 4x2GB
WD red 驱动器
Intel 82574L NIC
测试客户端:
Ubuntu 15.04,Core2Quad 2.4Ghz
8GB ram
SSD
Intel 82574L 网卡
这是目前设置的方式。/pool2/Media是我一直在测试的份额。
/etc/fstab …