windows服务器性能堪忧

windows服务器性能堪忧
windows服务器的性能在很长时间都被人诟病但是自2003以后我就放弃了不知道2008的性能是不是有了质的改变就ms坚定支持者老赵同志的意见看来说是有了非常显著的改善这点上如果我能够申请到校园推广计划的免费2008的key就装一个来试试到现在我已经彻底放弃了任何盗版软件了作为一个软件行业的业内人士我唾弃任何软件盗版以及使用盗版软件的行为。现在我的观点依旧基于windows2003的服务器但是根据dudu同学的post看来IIS7的性能依旧堪忧由于dudu没有给出具体的日志数据所以根据其描述一个存在于淘宝某网店引用的图片就造成了大面积503错误的情况看来IIS7和nginx比起来性能还远远未够班啊。微软也在使用其他公司提供的放DDOS的服务而这些服务都构建在linux之上可见linux是构建高性能网络多么明智的选择其二、构建高性能web应用的原则由此引申出来的一个问题设备有限资金有限如何构建高性能的Web应用根据个人经验我认为如果做到以下几点应该能够保证基本的高可访问度当然欢迎对此有更丰富经验的大牛们提供更加权威和专业的意见和建议动静分离动静分离能够很好的解决博客园这次遇到的问题而最终dudu所选择的解决方式也是实现动静分离。所谓动静分离就是将动态请求和静态的html图片脚本css的访问分离开因为静态文件很少改变可以通过设置长缓存时间和采用高性能web服务器的方式来优化同时在真实的web访问中静态文件的访问请求是动态请求的N倍所以将静态文件和动态请求放到一起处理会降低动态请求的处理效率合理缓存网站的数据要有合理的缓存策略其中包括动态访问的缓存以及静态文件的缓存策略比如可以通过给所有的静态文件请求后面加上版本号来控制静态文件的缓存这样当没有变化的时候不会重复请求传输静态文件tornado内置了这个功能非常的好用。优化进程和线程的数量规避不必要的性能开销服务器的CPU是有限的并不是线程越多进程越多就跑得越快所以不要盲目的迷信多线程的作用nginx是很好的例子。一般来说工作进程和cpu核数相等的效率较高负载均衡当单台机器无法支撑的时候不要死撑合理利用负载均衡来分担负载服务器在100%负载下运用并不会比50%负荷下运行多一倍的处理量。减少数据库连接数合理复用数据库连接哪怕是在文档里明确说明基于多线程处理无需在意连接池的mysql在其应对大量的连接开启关闭请求的时候仍然会力不从心实践证明如此所以不要频繁开启关闭数据库连接是合理的当然有连接池的支持当然无须担心这个问题了。其三、如何合理利用现有技术条件改善web应用性能回到问题的关键部分如果我在这里鼓吹.NET不行了大家换其他技术吧肯定会遭到大家板砖拍死而且对于博客园这样的站点也不是短时间内就能换平台的所以为了避免无谓的争端所以我想谈谈在立足现有条件的情况下如何改善Web应用的性能。首先建议所有的网站都在前端加上反向代理自己架设也好租用其他公司的服务也好微软就租用了其他公司的服务squid或者nginx个人倾向于nginx好配置好管理性能霸道借用绝世好bra里的一句台词在你的动态应用down掉前nginx是不会down的。在配置反向代理的时候将所有的静态请求从IIS里分流出来其次在动态应用里加入Memcached之类的缓存dotnet也建议使用如果你对dotnet自身的缓存页面缓存局部缓存很了然那么也是可以的总之有缓存好过没缓存如果你不是乱用缓存的话。合理配置iis的工作进程数量和回收时间一般来说四核的机器就指定4个工作进程这个数值没有经过严格的论证有待商榷。最后欢迎大家勇于尝试linux现在的linux已经非常方便管理且性能优秀并且是免费得到的不存在任何版权问题。windows不是不优秀只不过没有优秀到我必须还钱去买它而已ps我的开源软件清单