最新下载
热门教程
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
[转]服务器性能和可伸缩性杀手
时间:2022-07-02 23:49:59 编辑:袖梨 来源:一聚教程网
服务器性能和可伸缩性杀手
George V. Reilly
微软公司
2月22, 1999
目录
序言
应用程序服务器
IIS的灵活性和性能
扼杀服务器性能的十条戒律
结论
--------------------------------------------------------------------------------
序言
现在,服务器性能问题是许多书写桌面应用程序的人所要面对的问题。组件对象模型(Component Object Model,COM)和Component ware的成功产生了一个意想不到的结果,这就是如果使用像ASP(IIS的一个扩展)这样的应用程序服务器,就不用编写主机代码了,其实以前的主机代码都不是在真正的服务器环境下编写的。桌面环境和服务器环境之间有许多重要的不同,这些不同会在性能上产生不可预测的影响。
桌面应用程序服务器
影响桌面应用程序性能的因素是众所周知的。长指令路径意味着更慢的代码,这是性能方面的一个主要缺陷。使用大量资源会使应用程序变得更加臃肿,这样系统中的其他应用程序可用的资源就会更少。减慢启动时间会激怒用户。太多的运行设置会使机器的页错误率增高,使它们变慢而且反映迟钝。服务器应用程序也常受到这些因素影响,另外还有一些其他因素介绍如下:
通常,服务器应用程序同时处理的客户没有几百也有几十。对桌面应用程序来说,如果能在1/10秒内对用户做出反应就算是很快的了。假设一个操作需要整整100ms的话,那么这个应用程序在一秒中只能进行10个操作。大多数服务器应用程序需要比每秒钟十次请求大得多的通量。高延迟时间网络(延迟时间=消息的传输时间)加长了反应时间,这就需要服务器的反应更快以满足要求。
服务器应用程序经常处理大量的数据设置。效率低下的,尤其是那些浪费运行时间的方法,是不能用于处理上百万条数据的。
服务器机器比桌面机器更强大。服务器机器有更多的内存,更大的磁盘,更快的CPUs,并且通常有多个处理器。但是这些仍然不够。桌面机器处理的是零星的突发性业务,大部分时间是空闲的,而服务器的负载是连续不断的。服务器机器很昂贵,必须运行得很好才行。
服务器应用程序需要具有以月计算的正常运行时间。过了一段时间后,服务器的性能必须不会由于资源泄露或 cruft(一种需要周期性清除的数据结构和统计结果)的积聚而降低。
大多数服务器应用程序都需要采用多线程结构。考虑一个一次只处理一个请求。而将大部分时间都化在I/O上的单线程服务器,这样的性能是很难让人接受的。线程池可以利用其他空闲的处理器时钟周期同时处理几个请求。为了充分利用多处理器系统,服务器应用程序必须是多线程的。不幸的是,多线程应用程序很难编写,很难调试,而且很难运行得好,尤其是在多处理器系统中。但是一旦正确地得到它,其性能会远远超过同样的单线程应用程序,从这一点来说,使用多线程应用程序还是值得的。
George V. Reilly
微软公司
2月22, 1999
目录
序言
应用程序服务器
IIS的灵活性和性能
扼杀服务器性能的十条戒律
结论
--------------------------------------------------------------------------------
序言
现在,服务器性能问题是许多书写桌面应用程序的人所要面对的问题。组件对象模型(Component Object Model,COM)和Component ware的成功产生了一个意想不到的结果,这就是如果使用像ASP(IIS的一个扩展)这样的应用程序服务器,就不用编写主机代码了,其实以前的主机代码都不是在真正的服务器环境下编写的。桌面环境和服务器环境之间有许多重要的不同,这些不同会在性能上产生不可预测的影响。
桌面应用程序服务器
影响桌面应用程序性能的因素是众所周知的。长指令路径意味着更慢的代码,这是性能方面的一个主要缺陷。使用大量资源会使应用程序变得更加臃肿,这样系统中的其他应用程序可用的资源就会更少。减慢启动时间会激怒用户。太多的运行设置会使机器的页错误率增高,使它们变慢而且反映迟钝。服务器应用程序也常受到这些因素影响,另外还有一些其他因素介绍如下:
通常,服务器应用程序同时处理的客户没有几百也有几十。对桌面应用程序来说,如果能在1/10秒内对用户做出反应就算是很快的了。假设一个操作需要整整100ms的话,那么这个应用程序在一秒中只能进行10个操作。大多数服务器应用程序需要比每秒钟十次请求大得多的通量。高延迟时间网络(延迟时间=消息的传输时间)加长了反应时间,这就需要服务器的反应更快以满足要求。
服务器应用程序经常处理大量的数据设置。效率低下的,尤其是那些浪费运行时间的方法,是不能用于处理上百万条数据的。
服务器机器比桌面机器更强大。服务器机器有更多的内存,更大的磁盘,更快的CPUs,并且通常有多个处理器。但是这些仍然不够。桌面机器处理的是零星的突发性业务,大部分时间是空闲的,而服务器的负载是连续不断的。服务器机器很昂贵,必须运行得很好才行。
服务器应用程序需要具有以月计算的正常运行时间。过了一段时间后,服务器的性能必须不会由于资源泄露或 cruft(一种需要周期性清除的数据结构和统计结果)的积聚而降低。
大多数服务器应用程序都需要采用多线程结构。考虑一个一次只处理一个请求。而将大部分时间都化在I/O上的单线程服务器,这样的性能是很难让人接受的。线程池可以利用其他空闲的处理器时钟周期同时处理几个请求。为了充分利用多处理器系统,服务器应用程序必须是多线程的。不幸的是,多线程应用程序很难编写,很难调试,而且很难运行得好,尤其是在多处理器系统中。但是一旦正确地得到它,其性能会远远超过同样的单线程应用程序,从这一点来说,使用多线程应用程序还是值得的。