build立:
Windows Server 2008 R2,托pipe在HyperV虚拟机上分配3GB内存。
我在这个虚拟networking服务器上安装了使用ImDisk的RAMDisk(容量为512MB,足够满足我们的要求),并为其分配了3GB的RAM(托pipe应用程序在重负载下不需要超过768MB)。
最初WebRoot目录是在一个networking共享上运行充分,但已经注意到在负载很重的情况下,这导致LANstream量显着增加到networking共享服务器(我相信是访问networking共享为我的用户提供网页 – 这是否应该发生?)。
由于虚拟机位于故障转移群集中,因此虚拟机的C:\驱动器存储在iSCSI SAN中,因此在保留C:\驱动器上的WebRoot文件夹时没有性能优势(经过testing)。
所以我select把内容放到一个RAMDisk上,这当然在访问时间方面有了很大的提高。 源内容仍然会存储在networking共享上,但会每隔24小时同步到RAM磁盘。
任何人都有充分的理由相信这会:
A)不值得吗?
或者更重要的是,
B)是一个错误的想法!
批评赞赏,正面和负面!
IIS不会cachingnetworking共享中的内容,这就是为什么你的性能不佳。 但是,它应该在存储在本地磁盘上时caching这些文件。 您的服务器是虚拟的,主机的磁盘存储位于iSCSI磁盘上的事实不应该影响IIScaching文件的能力。
我无法想象在第一次请求之后,一个虚拟磁盘给你一个超越IIS本地磁盘caching的性能优势。
我会反对使用RAM磁盘,除非你有一个边缘的情况下,你需要caching的内容types不适合IIS的caching。 我喜欢KISS规则。 😉
在虚拟机中使用RAM磁盘与在物理机器中使用RAM磁盘几乎是一回事。
Windows(以及几乎任何其他操作系统)将使用任何额外的可用RAM来进行文件caching。 它将尽可能长时间保持最近使用的文件,平衡内存需求和文件访问时间。
当你使用RAM磁盘的时候,你基本上是在说,你知道,哪些文件需要非常快速的使用,而不是最近使用的文件。 如果他们实际上是最近使用的文件,那么通过使用RAM磁盘,您将更加灵活地使用内存,可能会提高其他领域的性能。
从虚拟机中的实际存储器(而不是RAM磁盘)中读取文件所需的时间可能比在没有虚拟化的同一台计算机上要长一些。 所以你需要问自己这个问题:
我是否使用了function强大的虚拟主机以及一个非常好的存储子系统,还是使用了我用于IIS的同一台机器,但现在我正在虚拟化IIS服务器?
如果是第一个,那么文件读取延迟可能不会太重要。 如果是第二个,VM中的文件读取延迟将会更大,因此RAM磁盘可能更有意义。
此外,你还需要问自己另一个问题:
我只能在这台服务器上托pipe一台虚拟机,还是我在多台工作负载上共享这台主机?
如果您要共享主机,那么您需要考虑您为RAM磁盘提供给IIS虚拟机的内存是否可以被其他虚拟机更好地使用。 如果在虚拟机中启用了dynamic内存,那么它将被洗牌到当前需要它的虚拟机。 如果允许在目前实际需要的地方使用RAM,而不是先决定是否应该使用它来降低IIS的文件访问等待时间,那么您可能会完成更多的工作。