May 13, 2009
利用 squid 反向代理提高网站性能
"\u003cp\u003e级别: 初级\u003c/p\u003e\n\u003cp\u003e\u003ca href=\"#author\"\u003e李明慧\u003c/a\u003e ([limhui@cn.ibm.com][2]), 软件测试工程师, IBM\u003c/p\u003e\n\u003cp\u003e2009 年 4 月 02 日\u003c/p\u003e\n\u003cp\u003e本文在介绍 squid 反向代理的工作原理的基础上,指出反向代理技术在提高网站访问速度,增强网站可用性、安全性方面有很好的用途。作者在具体的实验环境下,利用 DNS 轮询和 Squid 反向代理技术,实现了网站的负载均衡,从而提高了网站的可用性和可靠性。\u003c/p\u003e\n\u003cp\u003e现在有许多大型的门户网站如 SINA 都采用 squid 反向代理技术来加速网站的访问速度,可将不同的 URL 请求分发到后台不同的 WEB 服务器上,同时互联网用户只能看到反向代理服务器的地址,加强了网站的访问安全。\u003c/p\u003e\n\u003cp\u003e\u003cstrong\u003e反向代理的概念\u003c/strong\u003e\u003c/p\u003e\n\u003cp\u003e反向代理服务器又称为 WEB 加速服务器,它位于 WEB 服务器的前端,充当 WEB 服\u003c/p\u003e\n\u003cp\u003e务器的内容缓存器。其系统结构如图 1\u003c/p\u003e\n\u003cp\u003e [\u003cimg src=\"https://blogstatic.haohtml.com//uploads/2023/09/image001.jpg\" alt=\"\"\u003e][3]\u003c/p\u003e\n\u003cp\u003e反向代理服务器是针对 WEB 服务器设置的,后台 WEB 服务器对互联网用户是透明的,用户只能看到反向代理服务器的地址,不清楚后台 WEB 服务器是如何组织架构的。当互联网用户请求 WEB 服务时,DNS 将请求的域名解析为反向代理服 …\u003c/p\u003e"
May 13, 2009
反向代理简介
"\u003cp\u003e 代理服务器是使用非常普遍的一种将局域网主机联入互联网的一种方式,使用代理上网可以节约紧缺的IP地址资源,而且可以阻断外部主机对内部主机的访问,使 内部网主机免受外部网主机的攻击。但是,如果想让互联网上的主机访问内部网的主机资源(例如:Web站点),又想使内部网主机免受外部网主机攻击,一般的 代理服务是不能实现的,需要使用反向代理来实现。\u003c/p\u003e\n\u003cp\u003e本文将详细介绍反向代理服务的概念以及如何利用反向代理服务器提高WEB服务器的性能和安全性。\u003c/p\u003e\n\u003cp\u003e\u003cstrong\u003e一.反向代理的概念\u003c/strong\u003e\u003c/p\u003e\n\u003cp\u003e什么是反向代理呢?其实,反向代理也就是通常所说的WEB服务器加速,它是一种通过在繁忙的WEB服务器和Internet之间增加一个高速的WEB缓冲服务器(即:WEB反向代理服务器)来降低实际的WEB服务器的负载。典型的结构如下图所示:\u003c/p\u003e\n\u003cp\u003e\u003ca href=\"/wp-content/uploads/2009/05/1057141.jpg\"\u003e\u003cimg src=\"http://blogx.haohtml.com/wp-content/uploads/2009/05/1057141.jpg\" alt=\"\"\u003e\u003c/a\u003e\u003c/p\u003e\n\u003cp\u003eWeb服务器加速(反向代理)是针对Web服务器提供加速功能的。它作为代理Cache,但并不针对浏 览器用户,而针对一台或多台特定Web服务器(这也是反向代理名称的由来)。实施反向代理(如上图所示),只要将Reverse Proxy Cache设备放置在一台或多台Web服务器前端即可。当互联网用户访问某 …\u003c/p\u003e"
May 10, 2009
通过分区(Partition)提升MySQL性能
"\u003cp\u003e\u003cstrong\u003e什么是数据库分区?\u003c/strong\u003e\u003c/p\u003e\n\u003cp\u003e 数据库分区是一种物理数据库设计技术,DBA和数据库建模人员对其相当熟悉。虽然分区技术可以实现很多效果,但其主要目的是为了在特定的SQL操作中减少数据读写的总量以缩减响应时间。\n分区主要有两种形式://这里一定要注意行和列的概念(row是行,column是列)\u003c/p\u003e\n\u003cp\u003e 1. 水平分区(Horizontal Partitioning)这种形式分区是对表的行进行分区,通过这样的方式不同分组里面的物理列分割的数据集得以组合,从而进行个体分割(单分区)或集体分割(1个或多个分区)。所有在表中定义的列在每个数据集中都能找到,所以表的特性依然得以保持。\n 举个简单例子:一个包含十年发票记录的表可以被分区为十个不同的分区,每个分区包含的是其中一年的记录。(朋奕注:这里具体使用的分区方式我们后面再说,可以先说一点,一定要通过某个属性列来分割,譬如这里使用的列就是年份)\n 2. 垂直分区(Vertical Partitioning) 这种分区方式一般来说是通过对表的垂直划分来减少目标表的宽度,使某些特定的列 被划分到特定的分区,每个分区都包含了其中的列所对应的行。\n 举个简单例 …\u003c/p\u003e"
May 7, 2009
便于管理的nginx配置[2009-03-18 01:15:05]
"\u003cp\u003e我目前的nginx配置是拆散的,这样可以便于在很多个虚拟主机和目录里重用部分配置。\u003c/p\u003e\n\u003cp\u003e总体是划分为这样一个结构:\u003c/p\u003e\n\u003cp\u003econf/\nconf/nginx.conf\nconf/proxy.conf\nconf/rewrite.conf\nconf/location.conf\nconf/port.conf\nconf/upstream.conf\nconf/servers/\nconf/servers/www.sudone.com\nconf/servers/www.163.com\u003c/p\u003e\n\u003cp\u003e1、nginx.conf\u003c/p\u003e\n\u003cp\u003e这就是nginx读取的主文件,没特殊情况是通用的\u003c/p\u003e\n\u003cp\u003e2、proxy.conf\u003c/p\u003e\n\u003cp\u003e代理的选项配置,也是通用的\u003c/p\u003e\n\u003cp\u003e3、rewrite.conf\u003c/p\u003e\n\u003cp\u003e所有主机的根目录公用的rewrite规则,默认是空文件,可以不使用。\u003c/p\u003e\n\u003cp\u003e4、location.conf\u003c/p\u003e\n\u003cp\u003e所有主机都会用到的location目录结构,默认是空文件,可以不使用。\u003c/p\u003e\n\u003cp\u003e5、port.conf\u003c/p\u003e\n\u003cp\u003e配置服务器绑定ip和端口,因为nginx如果各个主机ip端口配置有不同会有bug,所以最好是统一设定。\u003c/p\u003e\n\u003cp\u003e6、upstream.conf\u003c/p\u003e\n\u003cp\u003eupstream写在这里面,和业务分开,易 …\u003c/p\u003e"
May 7, 2009
nginx图片服务器的架构方案[2009-03-18 01:15:06]
"\u003cp\u003e图片服务通常数据容量较大,而且访问也频繁,鉴于此,图片服务就会有两种问题,一是存储问题,二是访问量问题。\u003c/p\u003e\n\u003cp\u003e存储问题就是硬盘容量问题,花钱买硬盘就可以了,看似简单,但着实也是最苦的问题。按目前探索来看,最好的方式是:在任何时刻遇到硬盘空间不够时,买颗硬盘插上,最多改改配置,就能立刻利用;另外,硬盘要能充分利用,不然图片存储量大再加上备份,很恐怖,最好是每颗硬盘都用上100%的空间。\u003c/p\u003e\n\u003cp\u003e访问量也是个大问题,如果服务不允许防盗链,那么访问量会引起带宽、服务器压力等问题,有钱的话直接扔CDN,没钱或者有更多的钱,就自己做吧。根据垣古不变的真理“越老的图,访问量也相对较少”这一点,分成两大部分,一边处理最新的图片,一边处理老旧的图片。最新的图片访问量大,但存储量较少;老图片访问量低,但存储量大。\u003c/p\u003e\n\u003cp\u003e大概分析完了,开始制定方案。\u003c/p\u003e\n\u003cp\u003e一、拟定一个存储目录规则:\u003c/p\u003e\n\u003cp\u003e在现有的/a/b/abcde.jpg这样的hash方式下多加一个日期的目录变成:/200810/16/a/b/abcde.jpg或者/2008/10/16/a/b/abcde.jpg。按日期制定这个目录规则后,就可以按年月来拆机器了。\u003c/p\u003e\n\u003cp\u003e二、分机器, …\u003c/p\u003e"
May 7, 2009
图片服务器的hash架构[2009-04-19 23:17:00]
"\u003cp\u003e\u003ca href=\"/wp-content/uploads/2009/05/image_hash.png\"\u003e\u003cimg src=\"http://blog.haohtml.com/wp-content/uploads/2009/05/image_hash.png\" alt=\"\"\u003e\u003c/a\u003e\u003c/p\u003e\n\u003cp\u003e如图,这是一个最简洁的架构。\u003c/p\u003e\n\u003cp\u003e在这个架构里,负载均衡器都可以省了,用最为廉价的dns来替代,dns的优点就是廉价,不用维护,也不愁性能和稳定,还可以跨机房多用几条带宽作分流。另外,在图片服务中,可以选择用另一个域名做dns。优点是主站中的任何cookie等header不会带到图片服务中,省了不少上传流量和服务器可能有的处理时间;缺点是多花了点域名的钱。目前门户都喜欢用这办法,小站用的话,用另一个域名还附带有一个特别的优点:因为部分域名服务商允许添加的二级域名有限,所以用别的域名可以节约有限的域名资源。dns这一块也可以用泛域名,不过貌似国内的泛域名支持不是特别的稳定,有些网站的泛域名,在linux下不能解析windows就正常,比较奇怪,我也没法解释。\u003c/p\u003e\n\u003cp\u003e在这个架构里我总共开了36个域名,但是一时没有那么多机器,所以有一些域名指向同一台机器。一般来说,一个刚上线的项目,放一台机也未尝不可,但是链接(包括域名)一定要固定下来,不然以后调整会非常痛苦。\u003c/p\u003e\n\u003cp\u003e域名的事情还是比较简单的,只要照着填写web表单就完成了,配置四台nginx服务器当然也是非常简单的,因为不需要什么特殊的功能,所以四台机 …\u003c/p\u003e"
May 7, 2009
新型的大型bbs架构(squid+nginx)[2009-03-18 01:15:06]
"\u003cp\u003e这个架构基于squid、nginx和lvs等技术,从架构上对bbs进行全面优化和保护,有如下特点:\u003c/p\u003e\n\u003cp\u003e1、高性能:所有的点击基本上全部由前端缓存负责,提供最快速的处理。\u003c/p\u003e\n\u003cp\u003e2、高保障度:不需考虑应用程序稳定与否、程序语言是何种、数据库是何种,都能从架构上保证稳定。\u003c/p\u003e\n\u003cp\u003e3、高可用性:对应用程序的修改达到最简化:在程序的某些地方加入清缓存的语句即可,当然还需要做页面静态化的工作和统计工作。\u003c/p\u003e\n\u003cp\u003e首先看图,这个图比较大:\u003c/p\u003e\n\u003cp\u003e\u003ca href=\"/wp-content/uploads/2009/05/archi_bbs.png\"\u003e\u003cimg src=\"http://blog.haohtml.com/wp-content/uploads/2009/05/archi_bbs.png\" alt=\"\"\u003e\u003c/a\u003e\u003c/p\u003e\n\u003cp\u003e这个架构的特点和一些流程的说明:\u003c/p\u003e\n\u003cp\u003e1、主域名和图片域名分离\u003c/p\u003e\n\u003cp\u003e域名分离可以使流量分离,缓存策略分离等等,好处诸多。bbs初期一定要做好规划,将图片用另外的域名独立服务,即使没有足够机器,域名也要先分开。另外,图片服务器可以使用有别于主域名的另一个域名,一个好处是可以减少读取cookie对图片服务器的压力,另一个是提高安全性,避免cookie泄露。\u003c/p\u003e\n\u003cp\u003e2、使用LVS作为前端、二级代理和数据库的访问入口\u003c/p\u003e\n\u003cp\u003e使用LVS作为入口,比其他任何一种方式都来得更优质。首先LVS的负载能力很强,因为它工作在网络协议的第4层,使用虚拟ip技术,所以它本身并不担负任何流量的处理,仅仅是一个封包转发的功能;第 …\u003c/p\u003e"
May 7, 2009
Nginx 简单的负载均衡配置示例
"\u003cp\u003e\u003ca href=\"http://www.haohtml.com\"\u003ewww.haohtml.com\u003c/a\u003e 和 blog.haohtml.com 域名均指向 Nginx 所在的服务器IP。\u003c/p\u003e\n\u003cp\u003e用户访问,将其负载均衡到192.168.1.2:80、192.168.1.3:80、192.168.1.4:80、192.168.1.5:80四台服务器。\u003c/p\u003e\n\u003cp\u003e用户访问,将其负载均衡到192.168.1.7服务器的8080、8081、8082端口。\u003c/p\u003e\n\u003cp\u003e以下为配置文件nginx.conf:\n引用\nuser www www;\u003c/p\u003e\n\u003cp\u003eworker_processes 10;\u003c/p\u003e\n\u003cp\u003e#error_log logs/error.log;\n#error_log logs/error.log notice;\n#error_log logs/error.log info;\u003c/p\u003e\n\u003cp\u003e#pid logs/nginx.pid;\u003c/p\u003e\n\u003cp\u003e#最大文件描述符\nworker_rlimit_nofile 51200;\u003c/p\u003e\n\u003cp\u003eevents\n{\nuse epoll;\u003c/p\u003e\n\u003cp\u003eworker_connections 51200;\n}\u003c/p\u003e\n\u003cp\u003ehttp\n{\ninclude conf/mime.types;\ndefault_type …\u003c/p\u003e"
May 7, 2009
服务器的大用户量的承载方案 Nginx Squid Apache PHP MySQL
"\u003cp\u003e一、前言\u003c/p\u003e\n\u003cp\u003e二、编译安装\u003c/p\u003e\n\u003cp\u003e三、 安装MySQL、memcache\u003c/p\u003e\n\u003cp\u003e四、 安装Apache、PHP、eAccelerator、php-memcache\u003c/p\u003e\n\u003cp\u003e五、 安装Squid\u003c/p\u003e\n\u003cp\u003e六、后记\u003c/p\u003e\n\u003cp\u003e一、前言,准备工作\u003c/p\u003e\n\u003cp\u003e当前,LAMP开发模式是WEB开发的首选,如何搭建一个高效、可靠、稳定的WEB服务器一直是个热门主题,本文就是这个主题的一次尝试。\u003c/p\u003e\n\u003cp\u003e我们采用的架构图如下:\u003c/p\u003e\n\u003cp\u003e引用\u003c/p\u003e\n\u003cp\u003e——– ———- ————- ——— ————\u003c/p\u003e\n\u003cp\u003e| 客户端 | ===\u0026gt; |负载均衡器| ===\u0026gt; |反向代理/缓存| ===\u0026gt; |WEB服务器| ===\u0026gt; |数据库服务器|\u003c/p\u003e\n\u003cp\u003e——– ———- ————- ——— ————\u003c/p\u003e\n\u003cp\u003eNginx Squid …\u003c/p\u003e"
May 6, 2009
Drupal,开源cms里的巨擘。
"\u003cp\u003e我从2002年底就开始关注drupal了,当时在国内看不到一点关于drupal的资料,2003年写过几篇关于drupal的介绍文章,到现在都经常看到很多介绍drupal的文章里引用我的话。记得2003年看到\u003ca href=\"http://www.hiweed.com/\"\u003e海微\u003c/a\u003e在研究drupal,并且发布了中文语言包,打开了drupal进入中国的大门。海微是我一直敬仰的一个人,以前一直致力于xoops的中文化工作,现在竟然搞Hiweed Linux操作系统了。\u003c/p\u003e\n\u003cp\u003e海微发布drupal中文语言包后我就一直开始用drupal,不过都是当作普通的blog程序来用,基本上不装插件,也没改过风格。中途试着改过几次风格,但试了几次都放弃了,感觉很麻烦。\u003c/p\u003e\n\u003cp\u003e最近看了几个用drupal做的强站,看了之后感觉就是震撼,根本看不出是用个开源代码的做的,看了之后我又萌发了修改drupal风格的念头,打算为我的\u003ca href=\"http://www.geekg.com/\"\u003e极客集\u003c/a\u003e改个版。研究了两天,终于明白drupal模板的原理了,对CCK和views这两个超强模块也有了新的认识,把官方的主要模块都看了看,看得我眼都花了,实在是太多了,对drupal的评价就是:“只有想不到的,没有做不到的”你想要什么功能都有什么模块。这也是国外程序最大的特 …\u003c/p\u003e"
May 5, 2009
php判断浏览器类型
"\u003cp\u003eUA = getenv(“HTTP_USER_AGENT”);\n $start = strpos($this-\u0026gt;UA,”(“)+1;//查看起始位置\n $length = strpos($this-\u0026gt;UA,”)”)-$start;//查看结束位置\n $middle = trim(substr($this-\u0026gt;UA,$start,$length)); //查看内容\n $end = trim(substr($this-\u0026gt;UA,$start+$length+1));//附加内容\n $message = explode(“;”,$middle);//转换成数组\n //———-操作系统—————–\n $os = trim($message[‘2’]);\n $os_array = explode(” “,$os);\n $this-\u0026gt;PLATFORM = trim($os_array[‘0’]);//操作系统\n //————浏览器————\n $brower = trim($message[‘1’]); …\u003c/p\u003e"
May 4, 2009
大中型网站架构探秘
"\u003cp\u003e【eNet硅谷动力专稿】相信很多IT人士都有过搭建自己主页的经验,10多年前的个人主页都非常简单,很多由Frontpage构建,多属于静态HTML页面,最多加一点特效而已。不过10年间,技术的进步是惊人的。现在,一个网站绝不可能仅仅由几个HTML页面构成。我们随便举一个例子,国内图片网站yupoo.com,在chinarank排名1000左右,而Alexa排名则为5000左右,这个网站不算大,就是这样一个中型站点,拥有超过60台服务器,架构中涉及的Web服务器就包括了Lighttpd、Apache和 nginx。Yupoo的流量不算大,就已经拥有了60台服务器,事实上,排名前几位的网站,都拥有成千上万台服务器,如何协调这些服务器之间的工作负载,如何统一指挥调度,如何维护这些服务器硬件都是棘手的挑战。\u003c/p\u003e\n\u003cp\u003e \u003cstrong\u003e负载均衡:\u003c/strong\u003e\u003c/p\u003e\n\u003cp\u003e 负载均衡是所有大中型网站必备的部署。显然,大型网站每天上千万独立IP的访问量,一个Web服务器根本承担不了,网站后台必需有多台服务器共同工作,因此各种负载均衡技术就应运而生了。\u003c/p\u003e\n\u003cp\u003e 较早的负载均衡是DNS负载均衡。原理很简单,只要在域名解析的时候,将多个地址配置成同一个 …\u003c/p\u003e"
May 3, 2009
ECC ,R-ECC,FBD ECC内存的分别
"\u003cp\u003eFBD即Fully-buffer DIMM(全缓存模组技术),它是一种串行传输技术,可以提升内存的容量和传输带宽.是Intel在DDR2、DDR3的基础上发展出来的一种新型内存模 组与互联架构,既可以搭配现在的DDR2内存芯片,也可以搭配未来的DDR3内存芯片。FB-DIMM可以极大地提升系统内存带宽并且极大地增加内存最大容量。\u003c/p\u003e\n\u003cp\u003eFB-DIMM技术是Intel为了解决内存性能对系统整体性能的制约而发展出来的,在现有技术基础上实现了跨越式的性能提升,同时成本也相对低廉。在整 个计算机系统中,内存可谓是决定整机性能的关键因素,光有快的CPU,没有好的内存系统与之配合,CPU性能再优秀也无从发挥。这种情况是由计算机原理所 决定的,CPU在运算时所需要的数据都是从内存中获取,如果内存系统无法及时给CPU供应数据,CPU不得不长时间处在一种等待状态,硬件资源闲置,性能 自然无从发挥。对于普通的个人电脑来说,由于是单处理器系统,目前的内存带宽已经能满足其性能需求;而对于多路的服务器来说,由于是多处理器系统,其对内 存带宽和内存容量是极度渴求的,传统的内存技术已经无法满足其需求了。这是因为目前的普 …\u003c/p\u003e"
May 3, 2009
英特尔® 至强® 处理器型号及参数特性
"\u003cp\u003e\u003cstrong\u003e所有英特尔® 至强® 处理器特性:\u003c/strong\u003e\u003c/p\u003e\n\u003cp\u003e\u003cstrong\u003e英特尔® 虚拟化技术±\u003c/strong\u003e\u003c/p\u003e\n\u003cp\u003e\u003cstrong\u003e英特尔® 64 位内存扩展技术Φ\u003c/strong\u003e\u003c/p\u003e\n\u003cp\u003e**病毒防护技术°**\u003c/p\u003e\n\u003cp\u003e处理器\u003c/p\u003e\n\u003cp\u003e号\u003c/p\u003e\n\u003cp\u003e架构\u003c/p\u003e\n\u003cp\u003e高速缓存\u003c/p\u003e\n\u003cp\u003e时钟\u003c/p\u003e\n\u003cp\u003e频率\u003c/p\u003e\n\u003cp\u003e前端\u003c/p\u003e\n\u003cp\u003e总线\u003c/p\u003e\n\u003cp\u003e功率\u003c/p\u003e\n\u003cp\u003e系统类型\u003c/p\u003e\n\u003cp\u003e四核\u003c/p\u003e\n\u003cp\u003e双核\u003c/p\u003e\n\u003cp\u003e超线程(HT)\u003c/p\u003e\n\u003cp\u003e技术†\u003cstrong\u003e45 纳米技术\u003c/strong\u003e\nL5410\u003c/p\u003e\n\u003cp\u003e45 纳米\u003c/p\u003e\n\u003cp\u003e12 MB 二级缓存¹\u003c/p\u003e\n\u003cp\u003e2.33 GHz\u003c/p\u003e\n\u003cp\u003e1333 MHz\u003c/p\u003e\n\u003cp\u003e50 瓦\u003c/p\u003e\n\u003cp\u003e双路\n\u003cimg src=\"http://www.intel.com/products/i/checkmark.gif\" alt=\"\"\u003e\nL5420\u003c/p\u003e\n\u003cp\u003e45 纳米\u003c/p\u003e\n\u003cp\u003e12 MB 二级缓存¹\u003c/p\u003e\n\u003cp\u003e2.50 GHz\u003c/p\u003e\n\u003cp\u003e1333 MHz\u003c/p\u003e\n\u003cp\u003e50 瓦\u003c/p\u003e\n\u003cp\u003e双路\n\u003cimg src=\"http://www.intel.com/products/i/checkmark.gif\" alt=\"\"\u003e\nX3360\u003c/p\u003e\n\u003cp\u003e45 纳米\u003c/p\u003e\n\u003cp\u003e12 MB 二级缓存¹\u003c/p\u003e\n\u003cp\u003e2.83 GHz\u003c/p\u003e\n\u003cp\u003e1333 MHz\u003c/p\u003e\n\u003cp\u003e95 瓦\u003c/p\u003e\n\u003cp\u003e单路\n\u003cimg src=\"http://www.intel.com/products/i/checkmark.gif\" alt=\"\"\u003e\nX3350\u003c/p\u003e\n\u003cp\u003e45 纳米\u003c/p\u003e\n\u003cp\u003e12 MB 二级缓存¹\u003c/p\u003e\n\u003cp\u003e2.66 GHz\u003c/p\u003e\n\u003cp\u003e1333 MHz\u003c/p\u003e\n\u003cp\u003e95 瓦\u003c/p\u003e"
May 3, 2009
McAfee托盘图标消失
"\u003cp\u003e咖啡图标是shstat.exe,看“任务管理器”里是否有这进程,没有就用系统的“搜索”,找到该文件并双击运行。\u003c/p\u003e\n\u003cp\u003e然后在开始菜单“运行”里键入:msconfig 打开“启动项”,看shstat.exe有否被勾上,若没有,勾之。如果启动项里连它名字也不见,那就找到该文件,建立一个快捷方式,拖放到开始菜单的“启动”里……\u003c/p\u003e"