登录
/
注册
首页
论坛
其它
首页
科技
业界
安全
程序
广播
Follow
园子
关于
博客
发1篇日志+1圆
记录
发1条记录+2圆币
发帖说明
登录
/
注册
账号
自动登录
找回密码
密码
登录
立即注册
搜索
搜索
关闭
CSDN热搜
程序园
精品问答
技术交流
资源下载
本版
帖子
用户
软件
问答
教程
代码
VIP申请
网盘
联系我们
道具
勋章
任务
设置
我的收藏
退出
腾讯QQ
微信登录
返回列表
首页
›
业界区
›
业界
›
合理利用现有技术构建高性能Web应用,兼为这两天的战帖 ...
合理利用现有技术构建高性能Web应用,兼为这两天的战帖添把火
[ 复制链接 ]
娄静曼
2025-5-29 19:43:49
这两天的战帖不少,包括dudu的
满园尽是503,记曾经的一次IIS 7性能考验和
压榨机器,Hack,设计极限强度的网络应用以及
对话网友 - TCP一万连接系统设计这些文章,引发不少园友的争论。
纯粹的技术争论是很好的事情,所以发此文添把火。由于这三篇文章皆和高性能Web应用或者网络引用相关,遂抛砖引玉,谈谈自己的见解。
其一、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,我的开源软件清单
操作系统1 unbuntu10.04
操作系统2 笔记本附带的xp(这个不存在版权问题)
dotnet的开发用vs2008 express系列
python开发用ulipad+spe(我把测试paypal的时候存上面的一个美刀捐给spe的作者,算是测试了支付)
ubuntu下通过apt获取了所有的软件,自动下载,不会在下载站中乱七八糟病毒。
xp下的开源软件和免费的软件也很多,建议大家不要去用破解版,很多破解版里饱含病毒和恶意软件
来源:程序园用户自行投稿发布,如果侵权,请联系站长删除
免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!
回复
使用道具
举报
提升卡
置顶卡
沉默卡
喧嚣卡
变色卡
千斤顶
照妖镜
相关推荐
那些年搞不懂的高深术语——依赖倒置•控制反转•依赖注入•面向接口编程
如何优雅的使用RabbitMQ
分布式锁1 Java常用技术方案
浅谈我对DDD领域驱动设计的理解
游戏编程十年总结(下)
【前端性能】高性能滚动 scroll 及页面渲染优化
验证码对抗之路及现有验证机制介绍
从零开始入门 K8s | 手把手带你理解 etcd
中文写程序,何陋之有?
NHibernate之旅(2):第一个NHibernate程序
公司的中场
谈谈如何从本质上理解sql语句, 存储过程,ORM之间的联系和取舍。
FFmpeg开发笔记(六十二)Windows给FFmpeg集成H.266编码器vvenc
Android 系统缺陷不完全点评
[一步一步MVC]第一回:使用ActionSelector控制Action的选择
.net环境下跨进程、高频率读写数据
第二个iPhone应用程序:“Say Hello”
从零开始学习jQuery (十一) 实战表单验证与自动完成提示插件
高级模式
B
Color
Image
Link
Quote
Code
Smilies
您需要登录后才可以回帖
登录
|
立即注册
回复
本版积分规则
回帖并转播
回帖后跳转到最后一页
浏览过的版块
代码
安全
签约作者
程序园优秀签约作者
发帖
娄静曼
2025-5-29 19:43:49
关注
0
粉丝关注
13
主题发布
板块介绍填写区域,请于后台编辑
财富榜{圆}
敖可
9988
森萌黠
9996
堵赫然
9996
4
凶契帽
9996
5
处匈跑
9996
6
柴古香
9996
7
背竽
9996
8
斜素欣
9994
9
恐肩
9994
10
里豳朝
9994
查看更多