现在设计高性能Web网站时,一般都把动态和静态分开处理。静态资源(html/image/js/css/swf)一般使用nginx/lighttpd这类Web服务器,把静态资源缓存到内存或用sendfile,CPU和磁盘IO一般不是瓶颈,性能很高,直接用就行,本文不讨论。
至于动态部分,我们一般使用Apache,用C++编写CGI/FastCGI。FastCGI因为比CGI少了fork和初始化,并发性能和CPU消耗都比CGI要好很多。本质上,FastCGI是一种同步多进程的Server(也有用多线程模式,但对编码要求更高些)。
这种同步模式的并发性能,受限于FastCGI进程数和请求处理时长:假设每个请求100ms处理完,那么1个FastCGI进程每秒能处理10个请求,一台Web服务器假设起100个FastCGI进程,那就是每秒并发1000。比起一般异步Server每秒1万的性能,差了10倍。更重要的是,如果后端服务的接口耗时因异常情况变长时,FastCGI就像是被挂住一样,性能急剧下降,抖动明显。
我看到有些架构设计,把FastCGI只作为接入层,把消息转发给后面的异步业务逻辑Server。这种设计里,业务逻辑异步Server不用解析HTTP,能复用现有的框架和组件;但前面的FastCGI接入层需要知道业务Server的分布,有变动时要同步刷新配置,并且并发性能也受FastCGI进程数限制。
为什么不在异步Server的网络组件里直接支持HTTP协议呢?貌似难度很大,SSL、上传、认证、缓存、压缩、安全性等等,想起来就头大。参照前面把动静分离的思路,让异步Server只处理动态逻辑,简化功能,这样就省事多了。考虑到Web服务器经常出现代码bug导致入侵的漏洞,规划以下功能:
1、支持GET/POST方法
2、支持绑定多域名
3、HTTP Header长度限定
4、HTTP Body长度限定
5、URL长度限定
6、Cookie长度限定
7、支持应用逻辑设定HTTP Header
8、支持长连接模式
......
这样的话,网络组件直接提供HTTP服务,复用了我们在异步Server上的技术积累,也把原来CS模式的框架延伸到了Web领域。
分享到:
相关推荐
Nginx作为新兴的Web服务器,目前的发展势头迅猛,已经在众多知名网站的各项产品中取代Apache。但是,Nginx相关的中文资料却比较欠缺,目前还没有关于Nginx服务器的任何书籍,这也使得一些朋友对于是否采用Nginx取代...
Lighttpd+Squid+Apache搭建高效率Web服务器 9 浏览量比较大的网站应该从哪几个方面入手? 17 用负载均衡技术建设高负载站点 20 大型网站的架构设计问题 25 开源平台的高并发集群思考 26 大型...
因此,本文旨在探讨龙芯2F平台的Web服务器性能测试问题,研究龙芯2F平台的Web服务器性能测试设计,并探讨龙芯2F平台在Web服务器市场的应用前景。 本文的主要内容包括: 1.龙芯2F平台的概述和应用前景 2.Web服务器...
本文将重点探讨主机服务器的性能配置测算方法,以及如何在不同的应用场景中优化服务器性能。我们将从以下几个方面进行讨论: 1. 主机服务器性能的基本概念 主机服务器是指通过互联网提供各种服务的计算机设备,其...
如服务器控件、数探访问、数据绑定、Asp.NET状态管理、XML与web开发、web应用程序中的web服务、ASP.NET身份验证、授权和安全、调试和异常处理、利用缓存改进性能以及在NET中发布web应用程序等。 本书适用于熟悉...
本文将从高性能服务器、数据库、编程语言、Web服务器等方面进行探讨,并提供一些实际的解决方案。 首先,高性能的服务器是大型网站应对高并发和高负载的首要解决方案。服务器的选择对网站的性能和可扩展性产生了...
如服务器控件、数据访问、数据绑定、ASP.NET状态管理、XML与Web开发、Web应用程序中的Web服务、ASP.NET身份验证、授权和安全、调试和异常处理、利用缓存改进性能以及在.NET中发布Web应用程序等。 本书适用于熟悉C#...
LVS 技术是 Linux 集群技术中的一种负载均衡技术,能够将多台服务器整合起来,实现高性能的服务器功能。 LVS 技术有三种实现方式,即 NAT、IP 隧道和直接路由。其中,直接路由模式是最常用的方式,它可以将请求分发...
3. 网络优化:通过选用高性能的网络设备、合理规划网络拓扑结构和配置 QoS 等技术,可以提高网络传输的性能和效率。 案例分析 ---------- 在这里,我们将介绍一个基于 Linux 的 Web 服务器性能评价和优化的案例。...
同时,Web前端开发技术的创新和迭代速度具有一定的代表意义,在快速发展的互联网技术体系中,需要在高速宽带技术的背景之下,通过不断涌现的高性能浏览器,运用更加高水平的前端开发技术,才能够承载得了不断丰富的...
《Nginx技术》可能是一本深入介绍Nginx(一款高性能的开源Web服务器和反向代理服务器)的技术书籍。以下是可能包含在这本书中的主题: Nginx基础: 对Nginx的基本概念、架构和工作原理进行介绍,包括事件驱动的异步...
然后,Nginx是一个轻量级、高性能的HTTP和反向代理Web服务器,并发能力强,可运行在大多数操作系统上,并且配置简单、灵活,是应用范围非常广的服务组件。 此外,MySQL是一个关系型数据库管理系统,其在Web应用方面...
就是 由于Web服务器未进行优化。不管是哪种情况,一但 用户量在短时间内激增,网站就会明显 变 慢。甚至拒绝访问。要想有效地解决这些问题 ,就只有依靠不同的优化技术。本文对大型网站的高性 能 架构做 出来 了一些...
如服务器控件、数探访问、数据绑定、Asp.NET状态管理、XML与web开发、web应用程序中的web服务、ASP.NET身份验证、授权和安全、调试和异常处理、利用缓存改进性能以及在NET中发布web应用程序等。 本书适用于熟悉...
刀片式服务器适合大规模数据中心,塔式服务器适合中小型企业,机架式服务器适合高性能计算和大数据应用。 二、 网络配置 Linux 运维中,网络配置是非常重要的。我们可以使用 vi 编辑器来修改网络配置文件 `/etc/...
Loadrunner 是一款功能强大且广泛应用的性能测试工具,它可以模拟大量用户对服务器的访问,模拟真实用户行为,对服务器的性能和压力进行测试,以评估服务器的承载能力和响应速度。在本文中,我们将探讨 Loadrunner ...
深入浅出地探讨了面向对象编程、Ajax 与Comet 服务器端通信,HTML5 表单、媒体、Canvas(包括WebGL)及Web Workers、地理定位、跨文档传递消息、客户端存储(包括IndexedDB)等新API,还介绍了离线应用和与维护、...
在设计一个良好的 API 接口时,需要考虑到多个要素,包括标准化、兼容性、抽象性、简单性、高性能等。今天,我们将探讨如何设计一个良好的 API 接口,并讨论其中的要素和实现方法。 标准化 在 Web API 标准化方面...
* 高性能:MySQL可以提供高性能的数据库支持,满足大规模电子商务系统的需求。 * 简单易学:MySQL数据库简单易学,易于开发人员学习和应用。 本文档对PHP+MySQL网上购物系统的毕业设计进行了详细的介绍,分析了电子...
深入浅出地探讨了面向对象编程、Ajax与Comet服务器端通信,HTML5表单、媒体、Canvas(包括WebGL)及Web Workers、地理定位、跨文档传递消息、客户端存储(包括IndexedDB)等新API,还介绍了离线应用和与维护、性能、部署...