首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

系统架构师论文-改进Web服务器性能的有关技术

一个大中型的图书馆信息系统涉及到许多方面的技术与方案,本文着重讨论与Web服务器性能有关的一些内容。 本人有幸作为项目负责人之一参与了某大型图书馆数字化信息系统的设计和基于Web应用软件的开发工作。由于在数字化图书馆信息系统中流通着的大多是数字化的索引、文摘、全文、图像或音频视频等多媒体值息,対Web服务器性能有着较高的要求。 结合实际工程经验,本文将从硬件实现手段(缓存服务器、均衡负载设备、Web双机镜像、CPU和网卡的提升、网络带宽扩充)和软件实现手段(三层C/S软件结构设计、应用程序部署)等两个大方面论述如何提高Web服务大路的性能,以便使用户能够更快捷、高效、安全地使用应用系统。

02
  • 您找到你想要的搜索结果了吗?
    是的
    没有找到

    Squid反向代理(Reverse proxy)

    squid反向代理(Reverse proxy) 反向代理也同样提供缓存加速,只不过服务的对象反过来了。 传统代理、透明代理大多是为局域网用户访问Internet中的web站点提供缓存代理; 而反向代理相反,主要为internet中的用户访问企业局域网内的web站点提供缓存加速,是一个反向的代理过程,因此称为反向代理。 对于一些访问量较大的web站点(如新浪、搜狐),提供反向代理可以起到良好的加速作用,同时大大缓解web服务器的压力,如:使用nslookup工具解析出www.linuxidc.com站点对应得IP(通常会有多个、这是基于dns介绍的负载分担) 任选其中一个在浏览器中直接访问,会发现squid发现代理服务返回的错误信息,而使用www.linuxidc.com域名访问时,用户基本上感觉不到squid服务的存在。 传统代理、透明代理主要面向局域网用户提供服务,其对访问internet中web站点提供缓存加速,访问目标是不固定的; 而反向代理主要面向internet的客户提供服务,其对访问企业自有的web站点提供缓存加速,访问目标相对比较固定。 使用squid反向代理,后台真正提供web服务的站点可以位于internet,也可以位于企业局域网内,提供web服务的主机可以有一个到多个。 在squid.conf文件中,实现反向代理服务最基本的选项有两处,在http_port后加“vhost”(注意:vhost与transparent不能同时使用)使用cache_peer配置项指定后台真正提供web服务的主机(有时称为上游服务器)的ip地址、端口等。 格式: 添加对反向代理的支持,并在公网ip地址的80端口监听服务 vi /etc/squid/squid.conf http_port 219.16.21.100:80 vhost 指定web服务器主机位置 cache_peer web服务器地址 服务器类型 http端口 icp端口 [可选项] web服务器地址:不解释 服务器的类型:对应到目标主机的缓存级别,上游web主机一般使用“parent” http端口:web服务器web服务的端口如80、8080等icp端口:用于连接相邻的ICP(internet cache protocol)缓存服务器(通常为另外一台squid主机),如果没有,则使用0;可选项:是提供缓存时的一些附加插参数,如:“originserver”表示该服务器作为提供web服务的原始主机,“weight=n”指定服务器的优先权重,n为整数,数字越大优先级越高(默认为1);“max-conn=n”指定方向代理主机到web服务器的最大连接数。

    01

    负载均衡,会话保持,session同步

    一,什么负载均衡 一个新网站是不要做负载均衡的,因为访问量不大,流量也不大,所以没有必要搞这些东西。但是随着网站访问量和流量的快速增长,单台服务器受自身硬件条件的限制,很难承受这么大的访问量。在这种情况下,有二种方案可以选择: 1,对单台服务器的硬件进行更新,由双核的变成四核的,内存加大等。 2,增加服务器的台数,来分担服务器的负担。以实现增加网络带宽,增加服务器的处理能力的目的。 第一种方法可以理解为纵向发展,这种方法总是有限。第二种方法才是解决问题的正确选择 实现负载均衡的方法,大至分为二个方向,一种是用软件来实现负载均衡,另一种是硬件实现负载均衡(包括结合硬件和软件) 用软件来实现负载均衡,实现负载均衡的过程,自身也要消耗一些系统资源,响应时间增加。例如:LVS,nginx,haproxy,apache等这些基于应用层 的负载均衡软件,适合那些访问量不是特别大的网站。如果像sina,163这样大访量的网站,用硬件来实现负载均衡是最明志的选择。 负载均衡的算法很多,有根据请求数来进行负载均衡的,有根IP来负载均衡的,有根据流量的等等。我经常会用的二种算法。 一个是根据请求数 a,可以实现各台服务器都能比较平均分担客户的请求,其中一台服务器down掉的话也不会造成不好的影响。 b,服务器间的状态要同步,如session,需要其他手段来同步这些状态。 一个是根据IP a,ip_hash算法可以把一个ip映射到一台服务器上,这样可以解决session同步的问题 b,ip_hash也有不好的地方就是,假如其中的一台服务器down掉的话,映射到这台的服务器的用户就郁闷了。 c,ip_hash容易导致负载不均衡的情况,现在河蟹政府对google的搜索关键词进行过滤,你会经常发现google打不开,但是过一会就好了。这让那些google的爱好者们郁闷不已,很多用户都到国外找代理去了,狗急跳墙,人急帆樯。如果这样的话,这些代理会被分到同一个服务器,会导致负载不均衡 ,甚至失效。 二,什么是会话保持,有什么作用 会话保持是指在负载均衡器上有一种机制,在作负载均衡的同时,还保证同一用户相关连的访问请求会被分配到同一台服务器上。 会话保持有什么作用呢,举例说明一下 如果有一个用户访问请求被分配到服务器A,并且在服务器A登录了,并且在很短的时间,这个用户又发出了一个请求,如果没有会话保持功能的话,这个用户的请求很有可能会被分配到服务器B去,这个时候在服务器B上是没有登录的,所以你要重新登录,但是用户并不知道自己的请求被分配到了哪里,用户的感觉就是登录了,怎么又要登录,用户体验很不好。 还有你在淘宝上面买东西,从登录=》拍得东西=》添加地址=》付款,这是一个一系列的过程,也可以理解成一次操作过程,所有这一系列的操作过程都应当由一台服务器完成,而不能被负载均衡器分配到不同的服务器上。 会话保持都会有时间的限制(映射到固定某一台的服务器除外,如:ip_hash),各种负载均衡工具都会提供这种会话保持时间的设置,LVS,apache等。连php语言都提供了会话保持时间的设定session.gc_maxlifetime 会话保持时间的设定要大于session生存时间的设定,这样可以减少需要同步session的情况,但是不能杜绝。所以同步session还是要做的。 三,session同步 为什么要进行session同步,说会话保持的时候已经提到了。具体方法请参考web集群时session同步的3种方法 web集群时session同步的3种方法 在做了web集群后,你肯定会首先考虑session同步问题,因为通过负载均衡后,同一个IP访问同一个页面会被分配到不同的服务器上,如果session不同步的话,一个登录用户,一会是登录状态,一会又不是登录状态。所以本文就根据这种情况给出三种不同的方法来解决这个问题: 一,利用数据库同步session 在做多服务器session同步时我没有用这种方法,如果非要用这种方法的话,我想过二种方法: 1,用一个低端电脑建个数据库专门存放web服务器的session,或者,把这个专门的数据库建在文件服务器上,用户访问web服务器时,会去这个专门的数据库check一下session的情况,以达到session同步的目的。 2,这种方法是把存放session的表和其他数据库表放在一起,如果mysql也做了集群了话,每个mysql节点都要有这张表,并且这张session表的数据表要实时同步。 说明:用数据库来同步session,会加大数据库的负担,数据库本来就是容易产生瓶

    01
    领券