获取新的服务器

我的老板告诉我,如果真的有必要,我们可以得到一个新的Web服务器。 我不知道这是否真的有必要,所以我决定问那些可能知道的人。

该网站有IIS 6.0以及Apache安装。 IIS只托pipe一个应用程序,这是一个长查询应用程序(消耗大量的线程)。

目前的机器是Windows 2003有两个CPU(可能是一个物理,但两个逻辑)。

我们每天有大约3000位独立访问者。

当你input地址并回车时,初始加载有时甚至需要一分多钟。

我试图通过增加maxWorkerThreads,maxIoThreads和其他进程模型属性来微调IIS,但没有多大好处。

有没有用于获得更好的机器? 多好? 有什么build议么?

任何可能有帮助的build议,不包括购买新机器?

编辑:这是当前的系统信息

计算机:Intel(R)Xeon(R)CPU 5130 @ 2.00 GHz,2.00 GB RAM

操作系统:Microsoft Windows Server 2003,Standard Edition,Service Pack 2

请让我知道如果您需要关于系统的其他信息。

如果你能移动到一个新的6核心或更多的服务器,比如说12GB的现代内存,新的磁盘,更新的64位服务器操作系统以及所有代码要求的最新版本,你应该看到大约2到20倍整体速度提升,事实上也许更多。

这有点厚颜无耻,但是在StackOverflow的这个post中看到了Noob的软件问题,我实际上build议不要真正需要升级服务器。 特别是如小老虎所说,他不超过50%CPU时间。

你面对的问题(我认为)是你的第一个请求进入你的软件的60,000毫秒超时asynchronouscallback代码。

我认为你需要做的是改变软件,以便第一次请求你直接返回结果,没有文件系统监视。 检索当前的数据,并尽快得到代码。

在asynchronous回发上,按原样实施您的软件。

您可以使用Page.IsPostBack属性查找第一次请求的页面,还是作为回发的结果。

这应该允许您的访问者在我看到您的代码的大约1到5秒内获得页面,然后只保留60秒超时的asynchronouscallback。

用stackoverflow劫持serverfault线程的道歉答案=(

  1. 找出你的瓶颈,检查CPU利用率,RAM,networking,磁盘I / O
  2. 这个应用程序是否有一个数据库,它是本地服务器/networking还是远程networking?

张贴这些信息以获得更好的他人反馈。

由于stream量,在我看来你的负载不够高。

我会首先看看是否有任何事情可以改善背后的代码或找出真正放慢速度的东西。 一分钟的响应通常表示很长的执行时间。 马上买一台新的服务器可能会在脚下自己拍摄。 新服务器可能会或可能不会提高您的性能。

我也会检查你的连接到服务器,如果你正在远程testing,而不是通过局域网/本地主机,并得到这样的响应时间。

现在人们更倾向于推荐硬件升级(更便宜,更简单)。 然而重要的是要看看我们是否已经做好了所有的事情,所以硬件升级将会获得更多的好处。

如果你不能真正修复应用程序(或者看起来不错),或者所有的优化都已经完成,并且networking看起来没问题,那么你唯一的select就是升级你需要查看资源使用情况的硬件。 服务器是否使用更多的内存或CPU。 其他应用程序可能会争夺资源,您是否可以启动资源/性能监视器并查看模式?

希望有助于给你更多的东西来检查

不要买更大的盒子

Web服务(与数据库服务不同)通过添加大量小型服务器来代替一个大型服务器而获益更多 – 而且由于您已经在HTTP上运行了大量长时间轮询,所以尤其如此。 越来越多的问题变成了开放连接的数量,正在运行的进程的数量,networking缓冲区的大小,系统切换上下文的速度。

因此,出去花钱,比如说在2台服务器上花费4千美元,将会为您提供一个更快的解决scheme,而不是在单台服务器上花费更多。

还有一个额外的好处 – 假设你的服务器的可用性是99% – 假设没有共享依赖关系,那么2个节点的可用性是100-100 *(0.01 * 0.01)= 99.99% – 它的可靠性近一百倍。

尽pipe可以通过调整来大幅加速当前系统,但是我们需要更多地了解工作负载的性质和当前的configuration – 即使如此,也需要大量的工作和testing才能获得最佳的解决scheme – 关于这个话题有几本很好的书 – 去看看其中的一些。

话虽如此,有时候升级(或者最好是增加)硬件是唯一的解决scheme,而且往往在用尽调优之前,它通常是最具成本效益的解决scheme。