WEB服务器比较和部分源码分析
anghlq
这个作者很懒,什么都没留下…
展开
-
进程模型--IIS
唉,非开源,性能极差,只有一个有点特殊概念ISAPI CGI n VS n FastCGI m(可配置) VS n ISAPI DLL应用程序和WEB服务器处于同一个进程中。 ISAPI到dotnet是很瘦的包装,作为路由。所有那些沉重的负担和处理,甚至请求原创 2013-04-26 21:54:44 · 2001 阅读 · 0 评论 -
谈web--部署和服务器选型
服务器选型静态文件OS肯定是LINUX,BSD之流了,(网络性能高,系统稳定)lighttpd,nginx, apache(老牌,但是性能相对前两者一般)另外封装一个简单的fastcgi,可以支持多个小文件的批量返回的接口,这样也将大大加快页面的加载速度,网络效率也更高动态1. .netIIS+windows,没啥好说了,,,差不多的唯一选择2. j原创 2013-05-02 19:50:59 · 840 阅读 · 0 评论 -
谈web-基本
WEB应用就是一个天生的分布式系统,无状态,天生的隔离性和互协作性,XCOPY的横向扩展。Web应用的最通用原则就是假设你的带宽是非常局限的。如何减少你的带宽?1. 支持压缩2. 浏览器缓存: expired,连请求都不会发出去 协商:etag,last-modified3. 减少专线带宽: IDC的本地代理 应用和基础服务本地化原创 2013-05-02 19:42:30 · 712 阅读 · 0 评论 -
谈web-方案选择
Web的方案选型:ajax一个网页,如果超过2秒钟没有打开,用户已经对体验感觉很差了,如果3秒基本已经关闭或者重新刷新了。因此,先展现部分静态页面,或者无需耗时的信息,耗时信息放在后面,将大大改善用户的体验感。另外,按需加载(比如微博或者论坛的图片或者内容根据鼠标加载),也将大大减少服务带宽和部分后台压力。iframe用户体验感极差,没有独立的URL,刷新,回退等操原创 2013-05-02 19:43:52 · 747 阅读 · 0 评论 -
进程模型--lighttpd
一. Server原则,处理都是在主处理中根据标志位进行分发和调用1. 初始化 环境 //setlocale(LC_TIME, "C"); /* for nice %b handling in strfime() C locale,其采用的字符编码是所有本地 ANSI 字符集编码的公共部分,是用来书写C语言源程序的最小字符集*/ 关闭控制台 //STDIN_FILEN原创 2013-04-26 09:43:01 · 1304 阅读 · 0 评论 -
进程模型-memcached
虽然不是web服务器,感觉都差不多的高并发多执行体的东东,所以也列一下1. 初始化 setrlimit setuid/gid init data, stat,assoc,conn,slabs sigignore(SIGPIPE)//ignore SIGPIPE signals; we can use errno == EPIPE if we2.原创 2013-04-27 22:16:06 · 729 阅读 · 0 评论 -
进程模型-apache
相对厚重点,用MPM封装了进程模型,多种策略可以选择MPM的数据结构记分板 共享内存,存放子进程的状态信息,主要用于父进程对子进程进行控制。 每次执行任务后,子进程都会检查是否跟正在运行的主进程是同一个家族,否则就优雅退出。(running_generation 家族号) 描述线程(子进程中)信息:状态,访问,运行原创 2013-04-27 09:20:17 · 1524 阅读 · 0 评论 -
web服务器杂论
Nginx高性能,对静态文件文件处理相当给力,几乎可以达到满流量程度。另外,有个极其风骚的组合nginx+lua+redis, 通过一个极其瘦的lua模块,可以直接操作redis,这对那些动态数据的网站提供了更大的舞台。Lighttpd高性能,对静态文件处理也很给力,虽然传闻稳定性有点问题,但是使用过程没发现有啥问题。另外,其fastcgi这个很简单的进程被早期的php使用原创 2013-04-27 14:26:31 · 696 阅读 · 0 评论 -
进程模型--nginx
1、初始化ssl数据结构 时间,log,crc表,系统检测,设置handler和获取系统信息(如cpu,rlimit),random初始化如果是新bin的子进程,接管父进程的socket等信息pid file信号量处理 忽略 SIGSYS SIGPIPE SIGIO 退出原创 2013-04-27 12:38:34 · 955 阅读 · 0 评论 -
谈web--服务器端的缓存
加速你的应用: 系统级别的缓存 反向代理:squid,varnish varnish支持REST的方式操作缓存,这样你可以针对动态数据的变更来强制缓存失效 CDN的反向代理 代码级别缓存 Mem,memcached,redis等 加速是一方面,原创 2013-05-02 19:59:05 · 845 阅读 · 0 评论