服务器响应和交换

我知道如何交换基本上工作,为什么它是自动的,为什么它通常是一件好事。

然而,我希望有更多的控制权,这是一种常见的情况。

我用IIS和Sql Server编写LOB Web应用程序(这个问题比这个更普遍)。

这些应用程序托pipe在专用服务器(或其上的虚拟机)上,并且很less使用。 它可能发生,他们不使用几个小时。 当下一个用户发出请求时,第一个到SqlServer的数据库请求通常至less需要几秒钟的时间。 这甚至不包括需要唤醒的堆栈的其他组件。

我认为这至less部分是由于IO本来就应该避免的,因为它曾经将这些信息存储在内存中。 (这个查询以前曾经有过。)

该机器也运行病毒扫描程序(公司政策),我的猜测是,所有其他进程完全交换出来后。 而且除了病毒扫描仪之外,有时候还有其他的维护过程会随着时间的推移暂时消耗内存。

我甚至不会介意应用程序堆栈暂时处于睡眠状态,只要将其重新放回到内存中,但是我不认为这是如何工作的。

这听起来像是一个非常普遍的问题,基本上所有的人都有更频繁的使用应用程序。 它也适用于所有操作系统,Web服务器和数据库。

当然,我知道我可以定期发送虚拟请求来保持服务器的繁忙 – 事实上,我已经这样做了,以保持堆栈的非数据库部分。

还有什么可以做的呢? 特别是在经济上和实际上可以做些什么呢?

这一切取决于您如何设置虚拟机和来宾操作系统。 如果你保留所有的客人记忆,你可以确保它永远不会被换掉(不pipe怎么样,这不应该发生)。

在客人内部,应该有足够的记忆来避免交换任何东西。 理想情况下,应该没有或者非常低的交换。

另外,您可能需要确保您的虚拟机在需要时也能够获得处理能力,因此您可能还需要保留一些几百MHz。

经济上来说,所有这些都会让你的主机资源变得昂贵 您需要找出预留资源的合理最小值,以避免保留所有内容。 如果你这样做,你通过虚拟机器获得一点点收益。