好吧,让我们开始说几件事。 我以这种方式configuration了一些东西,并采取了许多(未知的)步骤来达到这一目的,首先提高可靠性,然后再提高性能。
现在我们遇到了问题。
事实:
我们需要做的是控制整个混乱,更好地利用我们拥有的资源,如果可能的话尽快改善这个应用程序的平衡。
理想情况下,我认为我们需要转移到一个适当的负载均衡器和ASP.NET状态服务器的多服务器的情况。 我们确实可以访问我们现在可以使用的状态服务器,所以如果在整个工作进程中使用这个状态是有好处的,我们可以这样做。 另外还想提一下,添加服务器(甚至是虚拟的)并不是一个快速的过程(对于一个新的虚拟机来说,最less需要6周的时间),公司正在评估移动到一个新的数据中心,这样他们就会抵制设置任何东西新的,特别是如果它是一个物理系统。
我们在服务器上拥有pipe理员访问权限,除了重启服务器以外,还可以做我们需要做的开发人员/架构师。 我们必须获得特别许可/通知服务器监控组重新启动。
我承认这开始超出了我的知识,我们需要一些指导。 请提出尽可能多的问题,以便更好地了解我们正在进行的工作。 任何最佳实践或一般build议也是有帮助的。
如果需要,我可以提供有关Web服务之间的通信的更多详细信息。
编辑1:我应该解释一个通用的“同步”。 用户A连接到框架服务器进行authentication/logging。 然后根据需要连接到每个应用程序Web服务。 数据是从一系列来源(第三方WS,Oracle和SQL数据库,文件共享等)收集的,然后使用数据集传递给客户端。 在每个同步中有各种步骤(每个调用应用程序服务来完成工作和调用框架服务以进行logging),每个步骤对于应用程序都是唯一的。
听起来,可扩展性问题是在应用程序服务器而不是数据库服务器。 因此,最好的select是负载平衡应用程序服务器。
负载均衡非常简单,可以在networking层面完成。 这允许您将X数量的物理或虚拟机器放在VIP后面,并单方面将负载分配到机器上。 一个给定的用户将在每个请求中击中不同的机器。
当进行负载均衡时,最好避免会话状态信息。 但是,如果无法避免,则会需要所有计算机都可以连接到的会话状态服务器。 这在.NET中相当简单,因为可以使用Web.config轻松插入会话状态提供程序。 这使得应用程序服务器本身可以是无状态的,因此,VIP可以将传入的stream量导向任何想要的服务器。
如果负载平衡问题变得有问题或者需要部署维护,那么负载平衡还可以让机器停止服务。 这在部署过程中也派上用场,因为您可以将一半机器退出服务并进行部署,然后进行交换。 这可以防止有2个版本的应用程序代码同时运行。