我在专用服务器上运行 ASP.Net webapp,最近对服务器硬件进行了重大更新。令我惊讶的是,性能根本没有提升。
旧服务器:单个 xeon x3220 2GB RAM Windows 2003 IIs6 数据库运行在单独的服务器上,较旧的 xeon。
新服务器:32 GB 的 RAM RAID 1 0 SSD Windows 2008 标准 IIs7 双 Xeon x5660 DB 在同一台机器上运行
新服务器的各方面都明显更好,但仍然没有任何改进。我们正在对 Web 应用程序本身进行更新,但我想知道从服务器/IIS7 配置的角度可以做些什么来加快这一速度。在我看来,这个 Web 应用程序在这次更新后没有任何改进,这似乎是不可能的。
答案1
首先我们需要澄清一下你说的“没有改进”是什么意思。性能优化的关键是要记住测量。
如果您的页面之前仅需几毫秒即可加载,那么现在可能只需少花 1 或 2 毫秒。虽然肉眼无法察觉,但并不意味着没有发生这种情况。
当然,页面加载速度和服务器可以处理的并发请求数量之间也存在性能差异。您可能会发现,即使服务器似乎响应相同,但它可以同时处理更多用户。
如果您的应用程序是基本的 CRUD 应用程序,那么添加更多处理器和内存可能不会有什么不同,因为这不是您的瓶颈所在。我原本以为将数据库移到同一台机器会给您带来一些提升,但这又取决于您如何衡量它。
我的建议是使用性能计数器来测量服务器负载,分析 IIS 日志来检查页面响应时间并找出问题所在。
答案2
是否因为应用程序性能不够好而进行服务器升级?
是的,您描述的所有内容都应该能带来更快的体验。但事实并非如此……(刺耳的和弦)这不是平台存在可扩展性问题。
您需要分析您的应用程序。IIS 可以提供很多每秒的请求数,没有任何认真的优化,而且您不太可能已经更改任何默认设置(对吧?),所以……剩下的就是应用程序。或者应用程序框架(.Net,对吧?已经设置了编译调试=false 吗?)
由于您现在使用的是 IIS 7,我的建议是,您首先查看失败请求跟踪(安装跟踪组件),然后连接针对任何响应代码(100-599)的规则,获取 FREB 日志并查看时间花在哪里(紧凑视图非常适合此操作)。如果您发现某个模块花费的时间不成比例,请调查它。
查看网络日志 - 您是否看到比您认为应该看到的更多的请求?(令人惊讶的是,在查看性能优化时,答案经常是“是”)。对于所花费的时间结果是否表明是的,服务器认为性能很慢?
页面上有 javascript 吗?这可能是客户端性能感知问题吗?
如果这还不能提供足够的深度,那么可以考虑对应用程序进行检测,或者将分析器连接到应用程序,以确定时间花在了哪里。
问题是,如果更新硬件没有效果——而且看起来严肃的升级 -你不受硬件限制。你可能从来都不是。要求“一般的加速调整”并不是你所需要的——你需要测量、改变、测试、迭代。一旦你确定了原因,解决方案就很简单了。但你还没有做到。