网站运营
位置:首页>> 网站运营>> 扼杀IIS服务器性能的十条规则

扼杀IIS服务器性能的十条规则

作者:佚名 来源:新云 发布时间:2008-04-24 15:05:00 

标签:

下面的每一条戒律都将有效地影响代码的性能和可伸缩性。换句话说,尽可能不要照着戒律去做!下面,我将解释如何破坏他们以便提高性能和可伸缩性。

1、应该分配和释放多个对象

你应该尽量避免过量分配内存,因为内存分配可能是代价高昂的。释放内存块可能更昂贵,因为大多数分配算符总是企图连接临近的已释放的内存块成为更大的块。直到Windows NT? 4.0 service pack 4.0,在多线程处理中,系统堆通常都运行得很糟。堆被一个全局锁保护,并且在多处理器系统上是不可扩展的。

2.不应该考虑使用处理器高速缓存

大多数人都知道由虚拟内存子系统导致的hard 页错误代价很高,最好避免。但是许多人认为其他内存访问方法没有什么区别。自从80486以后,这一观点就不对了。现代的CPUs比RAM要快得多,RAM至少需要两级内存缓存 ,高速L1 缓存能保存8KB数据和8KB指令,而较慢的L2 缓存能保存几百KB的数据和代码,这些数据和代码混合在一起。L1 缓存中内存区域的一个引用需要一个时钟周期,L2 缓存的引用需要4到7个时钟周期,而主内存的引用需要许多个处理器时钟周期。后一数字不久将会超过100个时钟周期。在许多方面,缓存像一个小型的,高速的,虚拟内存系统。

至于和缓存有关的基本内存单元不是字节而是缓存列。Pentium 缓存列有32个字节宽。Alpha 缓存列有64个字节宽。这意味着在L1 缓存中只有512个slot给代码和数据。如果多个数据一起使用(时间位置)而并不存储在一起(空间位置),性能会很差。数组的空间位置很好,而相互连接的列表和其他基于指针的数据结构的位置往往很差。

把数据打包到同一个缓存列中通常会有利于提高性能,但是它也会破坏多处理器系统的性能。内存子系统很难协调处理器间的缓存。如果一个被所有处理器使用的只读数据,和一个由一个处理器使用并频繁更新的数据共享一个缓存 列,那么缓存将会花费很长时间更新这个缓存列的拷贝。这个Ping-Pong高速游戏通常被称为"缓存 sloshing"。如果只读数据在一个不同的缓存 列中,就可以避免sloshing。

对代码进行空间优化比进行速度优化效率更高。代码越少,代码所占的页也越少,这样需要的运行设置和产生的页错误也会更少,同时占据的缓存 列也会更少。然而,某些核心函数应该进行速度优化。可以利用profiler去识别这些函数。

3.决不要缓存频繁使用的数据。

软件缓存可以被各种应用程序使用。当一个计算代价很高时,你会保存结果的一个拷贝。这是一个典型的时空折中方法:牺牲一些存储空间以节省时间。如果做得好,这种方法可能非常有效。

你必须正确地进行缓存。如果缓存了错误数据,就会浪费存储空间。如果缓存得太多,其他操作可以使用的内存将会很少。如果缓存得太少,效率又会很低,因为你必须重新计算被缓存 遗漏的数据。如果将时间敏感数据缓存得时间过长,这些数据将会过时。一般,服务器更关心的是速度而不是空间,所以他们要比桌面系统进行更多的缓存。一定要定期去除不用的缓存,否则将会有运行设置问题。

4.应该创建多个线程,越多越好。

调整服务器中起作用的线程数目是很重要的。如果线程是I/O-bound的,将会花费很多时间用来等待I/O的完成-一个被阻塞的线程就是一个不做任何有用工作的线程。加入额外的线程可以增加通量,但是加入过多的线程将会降低服务器的性能,因为上下文交换将会成为一个重大的overhead。上下文交换速度应该低的原因有三个:上下文交换是单纯的overhead,对应用程序的工作没有任何益处;上下文交换用尽了宝贵的时钟周期;最糟的是,上下文交换将处理器的缓存填满了没用的数据,替换这些数据是代价高昂的。

有很多事情是依靠你的线程化结构的。每个客户端一个线程是绝对不合适的。因为对于大量用户端,它的扩展性不好。上下文交换变得难以忍受,Windows NT用尽了资源。线程池模型会工作得更好,在这种方法中一个工人线程池将处理一条请求列,因为Windows 2000提供了相应的APIs,如QueueUserWorkItem。


5.应该对数据结构使用全局锁

使数据线程安全的最简单方法是把它套上一把大锁。为简单起见,所有的东西都用同一把锁。这种方法会有一个问题:序列化。为了得到锁,每一个要处理数据的线程都必须排队等候。如果线程被一把锁阻塞,它没有在做任何有用的事。当服务器的负载较轻时,这个问题并不常见,因为一次可能只有一个线程需要锁。在负载很重的情况下,对锁的激烈争夺可能就会成为一个大问题。

设想在多车道高速公路上发生了一个意外事故,这条高速公路上的所有车辆都被转向一条狭窄的道路。如果车辆很少,这一转换对交通流的速率的影响可以忽略。如果车辆很多,当车辆慢慢并入那条单通道时,交通阻塞会延伸几英里。

有几种技术能够减少锁竞争。

· 不要过分保护,也就是说,不是非常必要不要锁住数据。只有需要时才去持有锁,而且时间不要过长。不要在大段代码周围或频繁执行的代码中没必要地使用锁,这一点很重要。

· 对数据进行分割,使它能够用一套独立的锁保护。例如,一个符号表可以按标识符的第一个字母分割,这样在修改名字以Q开头的符号的值时,就不会去读名字以H开头的符号的值。

· 使用APIs的Interlocked 系列(InterlockedIncrement,InterlockedCompareExchangePointer等)自动修改数据而不需要锁。

· 当数据不是经常被修改时可以使用多读者/单作者(multi-reader/single-writer)锁。你将获得更好的并发性,尽管锁操作的代价将更高并且你可能会冒饿死作者的危险。

· 在关键部分使用循环计数器。参见Windows NT 4.0 service pack 3中的SetCriticalSectionSpinCount API。

· 如果你不能得到锁,使用TryEnterCriticalSection并做一些其他的有用的工作。

高竞争导致serialization,serialization导致降低CPU的利用率,这促使用户加入更多的线程,结果事情变得更糟。

0
投稿

猜你喜欢

  • 网赚如今也是一个行业,不管你承认不承认,这个行业造就了一批百千万富翁。如果你连网赚有疑问,还会搜索“网赚是真的吗”,我想你真的是要out啦。
  • 最近有一个用户提出想以文章的标题前缀筛选出文章,想定制一个标签,殊不知这功能在我们系统的标签已经能轻易实现,那最常用的标签“通用信息列表”为
  • 网站推广方式多种多样,网上也有不少介绍推广方法的文章,有些写的很好,我今天也想说一说其中的一种—论坛推广。凡是接触网络有一段时间的人对论坛都
  • Apache的mod_rewrite是提供了强大URL操作的杀手级的模块,可以实现几乎所有你梦想的URL操作类型,其代价是你必须接受其复杂性
  • 番茄花园事件发生后,一份其作者洪磊和“好友”的对话录音引起了关注。该录音中,洪磊详细解析了番茄花园的盈利模式以及和其他网站、软件合作的情况,
  • 你是否遭遇过这样的情况?当你在浏览器中输入正确的URL地址,但是打开的并不是你想要去的网站。它可能是114的查询页面,可能是一个广告页面,更
  • 许多朋友都认为:网站一旦被百度K了之后,就基本上再无恢复收录的可能。其实不然,总体上来说,百度是友好的,假如你的网站被K,肯定有被K的原因,
  • 建立并实施网站建设规范对于规范网站建设服务,提高企业网站的网络营销价值非常重要。规范的网站建设不仅可以为用户获取信息带来更多的方便,也体现了
  • Godaddy主机用户使用Hosting Control Center里的File Manager,可以以名称、大小、修改的数据或者文档类型
  • asp之家注:也许很多站长都有这样的疑问,我的站流量挺大,可是Google Adsense广告的点击确很不让人满意,而有的站虽然流量不多可能
  • 360总裁齐向东:咱员工福利待遇业内肯定领先 (腾讯科技摄)11月5日消息,360安全卫士总裁齐向东近日表示,360已经组建了国内最强大的安
  • FTP命令是Internet用户使用最频繁的命令之一,不论是在DOS还是UNIX操作系统下使用FTP,都会遇到大量的FTP内部命令。熟悉并灵
  • 以前在点石论坛里有一个帖子问,中国SEO水平与世界水平相差多少?我记得我回了个帖子说,大概相差半年到一年。这种差距并不是在优化技术上的差距。
  • 5、配置作用域接着要为新建的应用程序IIS6URL授权配置作用域。右键点击“IIS6URL授权”选项
  • 北京时间10月24日消息,据国外媒体报道,Facebook首页正在进行新一轮改版,以期用户寻找信息时能更便捷。改变之一是,在首页呈现其认为过
  • 1 从信托的网站上,加入到本地的链接联盟中2 如果您有足够的有价值的信息并认识一个教授的话,与地方高校建立链接是有意义的3 加入更好的商业协
  • 一、炒作点诛仙搞了一个发布会,弄了一群美女,穿的都 * 了,大家可以搜索一下“诛仙 走光”,就可以看到
  • DZ7.0+UC1.5+DEDE5.3测试通过 论坛之星/活跃会员 {dede:loop table="cdb_memb
  • 在日常操作中,我们经常要输入各种各样的密码,例如开机时要输入密码,QQ时也要先输入密码,假如你忘记了这些密码,就有可能用不了机器、打不开文件
  • 2008年2月27日,Google PankRank进行了2008年的首次更新,我的几个站点没有什么变化。另外,昨天在群里看到一个人叫卖PR
手机版 网站运营 asp之家 www.aspxhome.com