服务器响应能力和交换

服务器响应能力和交换

我知道交换的基本工作原理、为什么它是自动的以及为什么它通常是一件好事。

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

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

这些应用程序托管在专用服务器(或服务器上的虚拟机)上,使用频率不高。它们可能几个小时都没有使用。当下一个用户发出请求时,对 SqlServer 的第一个数据库请求通常至少需要几秒钟。这还不包括需要唤醒的其他堆栈组件。

我认为这至少部分是由于 IO 造成的,因为该信息曾经在内存中,所以应该避免这种情况。(查询在过去的某个时间点已经运行过。)

该机器还运行病毒扫描程序(公司政策),我猜在扫描之后,所有其他进程都会被完全替换掉。除了病毒扫描程序之外,有时还有其他维护进程,随着时间的推移,它们会暂时消耗内存。

我甚至不介意应用程序堆栈进入休眠状态暂时地,只要当机器再次空闲时将其放回内存中即可 - 但我不认为它的工作方式如此。

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

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

这里还能做什么?特别是,可以做什么经济实用

答案1

所有这些都取决于您如何设置虚拟机和客户操作系统。如果您保留所有客户内存,则可以确保它们永远不会被换出(无论如何,在适当的配置下,这种情况不应该发生)。

在客户机中,应该有足够的内存来避免交换任何内容。理想情况下,应该没有交换或交换量极低。

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

从经济角度来看,所有这些都会耗费您昂贵的主机资源。您需要找出合理的最低保留资源,以避免保留所有内容。如果您这样做,虚拟化机器将收效甚微。

相关内容