服务器处理性能估算

系统的建设,必须满足未来5年业务发展和管理的需求,所以下面对服务器性能指标的估算,将以满足未来5年的需要为基准。
1. 数据库服务器
1.1. TPCC值估算
约定:
系统同时在线用户数为100人(U1);
平均每个用户每分钟发出2次业务请求(N1);
系统发出的业务请求中,更新、查询、统计各占1/3;
平均每次更新业务产生3个事务(T1);
平均每次查询业务产生8个事务(T2);
平均每次统计业务产生13个事务(T3);
一天内忙时的处理量为平均值的5倍;
经验系数为1.6;(实际工程经验)
考虑服务器保留30%的冗余;
服务器需要的处理能力为:
TPC-C=U1*N1*(T1+T2+T3)/3*3*经验系数/冗余系数
则数据库服务器的处理性能估算为:
TPC-C= 100*2*(3+8+13)/3*5*1.6/0.7= 18,285 TPM
1.2. 内存估算
该服务器内存主要由操作系统占用内存、数据库系统占用内存、并发连接占用内存等几部分组成。
约定:
操作系统占用约400M内存空间;
数据库系统占用内存0.8G ;
每个并发连接占用5 M;
考虑服务器内存保留15%的冗余;
则服务器的内存估算为:
Mem =(400M + 0.8GB??+ 100*5M) /(1-15%)??= 2 GB
1.3. 存储容量估算
预算管理系统中存储着预算编制数据等资料信息以及日志等管理信息。
在已经考虑了数据冗余的前提下,约定:
每月有100个分局或部室编制预算;
每月每个分局或部室编制1次预算;
预算模板共含6000个预算指标;
每个预算指标含5条明细项目;
每条记录占用空间300B;
每月的预算数据存储容量需求:6000*5*100*500B=1.5G
每月的日志数据存储容量需求:0.1G
每月进行数据备份一次,数据存储容量需求:12*9G=108G
整年总共需用存储容量:12*1.5G+1.5G+12*0.1G+12*9G=20.7G+108G=128.7G
约定系统中预算编制数据等资料信息以及日志等管理信息在线保存5年(备份数据每年进行清除),则预算管理系统的存储容量估算为:
5*20.7G+108G =103.5G+108G=211.5G
1.4. 服务器安装软件
该服务器中将需要安装的软件如下:
操作系统为:Windows 2000 Server
数据库:Oracle
1.5. 建议配置
根据以上的性能指标建议数据库服务器标准配置如下:
应用名称 功能描述 数量 说明
数据库服务器 CPU: TPCC值应大于18,285 TPM
内存:2G及以上
硬盘:211.5GB以上(建议通过RAID5或镜像等方式进行数据备份)
以太网卡:100M及以上 1
1.2. 中间件应用服务器
1.2.1. TPCC值估算
约定:
系统同时在线用户数为100人(U1);
平均每个用户每分钟发出2次业务请求(N1);
系统发出的业务请求中,更新、查询、统计各占1/3;
平均每次更新业务产生3个事务(T1);
平均每次查询业务产生8个事务(T2);
平均每次统计业务产生13个事务(T3);
一天内忙时的处理量为平均值的5倍;
经验系数为1.6;(实际工程经验)
考虑服务器保留30%的冗余;
服务器需要的处理能力为:
TPC-C=U1*N1*(T1+T2+T3)/3*3*经验系数/冗余系数
则数据库服务器的处理性能估算为:
TPC-C= 100*2*(3+8+13)/3*5*1.6/0.7= 18,285 TPM
1.2.2. 内存估算
该服务器内存主要由操作系统占用内存、数据库系统占用内存、并发连接占用内存等几部分组成。
约定:
操作系统占用约400M内存空间;
中间件用户服务器占用内存0.8G ;
每个并发连接占用5 M;
考虑服务器内存保留15%的冗余;
则服务器的内存估算为:
Mem =(400M + 0.8GB??+ 100*5M) /(1-15%)??= 2 GB
1.2.3. 存储容量估算
主要系统中间件应用服务器和操作系统本身至少5G以上。
其中操作系统约占2G,应用服务器约占3G。
1.1.2.4. 服务器安装软件
该服务器中将需要安装的软件如下:
操作系统为:Windows 2000 Server
中间件应用服务器:系统中间件应用服务器
1.1.2.5. 建议配置
根据以上的性能指标建议服务器标准配置如下:
应用名称 功能描述 数量 说明
应用服务器 CPU: TPCC值应大于18,285 TPM
内存:2G及以上(建议3G以上)
硬盘:5GB以上
以太网卡: [...]


打造安全的Apache服务器

一、Apache 服务器的功能
  
Apache Serve的前身是NCSA的httpd,曾经在1995年成为最为流行的万维网的服务器。因为强大的功能和灵活的设置及平台移植性,Apache Server取得了广泛的信赖。Apache Server的主要功能有:
1、支持最新的HTTP1.1协议(RFC2616)。
2、极强的可配置和可扩展性,充分利用第三方模快的功能。
3、提供全部的源代码和不受限制的使用许可(License)。
4、广泛应用于Windows 2000/NT/9x、Netware 5.x,OS/2 和UNIX家族极其他操作系统,所支持的平台多达17余种。
5、强大的功能,涵盖了用户的需求,包括:认证中的DBM数据库支持;错误和问题的可定制响应的目录导向功能;不受限的灵活的URL别名机制和重定向功能;虚拟主机(多宿主主机)支持多个域主页共存一台主机;超强的日志文件功能;利用站点的分析;拓展于维护等等。
正因为这些强大的优势,使Apache Server与其他的Web服务器相比,充分展示了高效、稳定及功能丰富的特点。Apache Server 已用于超过600万个Internet站点。
二、Apache 服务器的安全特性
作为最流行的Web服务器,Apache Server提供了较好的安全特性,使其能够应对可能的安全威胁和信息泄漏。
1、采用选择性访问控制和强制性访问控制的安全策略
从Apache 或Web的角度来讲,选择性访问控制DAC(Discretionary Access Control)仍是基于用户名和密码的,强制性访问控制MAC(Mandatory Access Control)则是依据发出请求的客户端的IP地址或所在的域号来进行界定的。对于DAC方式,如输入错误,那么用户还有机会更正,从新输入正确的的密码;如果用户通过不了MAC关卡,那么用户将被禁止做进一步的操作,除非服务器作出安全策略调整,否则用户的任何努力都将无济于事。
2、Apache 的安全模块
Apache 的一个优势便是其灵活的模块结构,其设计思想也是围绕模块(Modules)概念而展开的。安全模块是Apache Server中的极其重要的组成部分。这些安全模块负责提供Apache Server的访问控制和认证、授权等一系列至关重要的安全服务。
mod_access模块能够根据访问者的IP地址(或域名,主机名等)来控制对Apache服务器的访问,称之为基于主机的访问控制。
mod_auth模块用来控制用户和组的认证授权(Authentication)。用户名和口令存于纯文本文件中。mod_auth_db和mod_auth_dbm模块则分别将用户信息(如名称、组属和口令等)存于Berkeley-DB及DBM型的小型数据库中,便于管理及提高应用效率。
mod_auth_digest模块则采用MD5数字签名的方式来进行用户的认证,但它相应的需要客户端的支持。
mod_auth_anon模块的功能和mod_auth的功能类似,只是它允许匿名登录,将用户输入的E-mail地址作为口令。
SSL(Secure Socket Lager),被Apache所支持的安全套接字层协议,提供Internet上安全交易服务,如电子商务中的一项安全措施。通过对通讯字节流的加密来防止敏感信息的泄漏。但是,Apache的这种支持是建立在对Apache的API扩展来实现的,相当于一个外部模块,通过与第三方程序的结合提供安全的网上交易支持。


使用rsync服务同步服务器文件

使用rsync服务,主机做rsync服务器,备机做rsync客户机
主机:
FreeBSD系统,可以使用port安装rsync,安装完后的路径在/usr/local/下。修改/usr/local/etc/rsyncd.conf文件,增加:

path = /usr/local/www/test/
comment = my blog data
uid = www
gid = www
ignore errors
read only = yes
list = yes
auth users = linuxing
secrets file = /usr/local/etc/rsyncd.secrets

增加密码验证文件:
# cat /usr/local/etc/rsyncd.secrets
linuxing:test
# chown root:wheel /usr/local/etc/rsyncd.secrets
# chmod 600 /usr/local/etc/rsyncd.secrets
启动服务
# rsync –daemon

# /usr/local/etc/rc.d/rsyncd.sh start
查看是否已经打开服务(端口873)
# sockstat |grep 873
root rsync 1147 4 tcp4 *:873 *:*

# netstat -aln | grep 873
tcp4 0 0 *.873 ?*.* LISTEN
确认都正常的话,使到rsync服务开机自动启动,在/etc/rc.conf,增加rsyncd_enable=”YES”。
备机:
使用的是红旗DC Server [...]


使用Squid配置反向代理(HTTP 加速器)

通过squid配置反向代理主要就是配置“squid.conf”这个配置文件。下面以Linux操作系统为例进行介绍,其它版本的在 UNIX也同样适用。在Linux中squid如果是以源代码方式安装的话,这个文件一般在“/usr/local/squid/etc/”目录下。如果 是系统自带的squid,一般配置文件在“/etc/squid/”目录下。
1.Squid反向代理单个后台WEB服务器
如果WEB服务器和反向代理服务器是两台单独的机器(一般的反向代理应该有两块网卡分别连接了内外部网络)。那么,应该修改下面的内容来设置反向代理服务。

http_port 80 # squid监听的端口
httpd_accel_host 172.16.250.250 # 内部WEB服务器的IP地址
httpd_accel_port 80 # WEB服务器的端口
httpd_accel_single_host on # 转发为缓冲的请求到一台单独的机器
httpd_accel_with_proxy on #
httpd_accel_uses_host_header off
如果WEB服务器和反向代理服务器是同一台机器。
那么,应该设置WEB服务器的监听端口为非80端口(比如:81端口)。要修改的内容如下:
http_port 80 # squid监听的端口
httpd_accel_host localhost # 内部WEB服务器的IP地址
httpd_accel_port 81 # WEB服务器的IP地址
httpd_accel_single_host on # 转发为缓冲的请求到一台单独的机器
httpd_accel_with_proxy on #
httpd_accel_uses_host_header off

  
下面解释一下配置指令。
  http_port 80
  选项 http_port 指定squid监听HTTP请求的端口,一般都设置成80端口,这样使用户感觉不到反向代理的存在,就像访问真正的WEB服务器一样。
  httpd_accel_host 172.16.250.250?和?httpd_accel_port 80
  选项httpd_accel_host 和 httpd_accel_port 指定WEB服务器的IP地址和端口号,可以根据自己的WEB服务器的实际情况而定。
  httpd_accel_single_host on
  选项httpd_accel_single_host 为on 时,squid被设置成仅对单一的web服务器作反向代理。不考虑HTTP头信息,Squid转发所有的未被缓冲的页面请求到这个web服务器。如果 squid需要做多个web服务器反向代理,必须将此选项设置为off,并且使用转向器或者DNS去映射请求到合适的后台WEB服务器。
  httpd_accel_with_proxy on
  如果希望squid既作反向代理服务器又作本地机器的上网代理,需要将httpd_accel_with_proxy 改为 [...]


CDN服务器网页缓存分析之Last-Modified和ETag

Last-Modified和ETag是条件请求(Conditional Request)相关的两个字段。如果一个缓存收到了针对一个页面的请求,它发送一个验证请求询问服务器页面是否已经更改,在HTTP头里面带上” ETag”和”If Modify Since”头。服务器根据这些信息判断是否有更新信息,如果没有,就返回HTTP 304(NotModify);如果有更新,返回HTTP 200和更新的页面内容,并且携带新的”ETag”和”LastModified”。
使用这个机制,能够避免重复发送文件给浏览器,不过仍然会产生一个HTTP请求。
一般纯静态页面本身都会有Last-Modified信息,Apache服务器会读取页面文件中的Last-Modified信息,并添加到http响应头部。
对于动态页面,如果在页面内部没有通过函数强制加上Last-Modified,例如header(”Last-Modified: ” . gmdate(”D, d M Y H:i:s”) . ” GMT”),Apache服务器会把当前时间作为Last-Modified,返回给浏览器。
无论是纯静态页面还是动态页面,Firefox浏览器巧妙地按照接受到服务器响应的时间设置缓存页面的Last-Modified,而不是按照http响应头部中的Last-Modified字段。
ETag
既然有了Last-Modified,为什么还要用ETag字段呢?因为如果在一秒钟之内对一个文件进行两次更改,Last-Modified就会不正确。因此,HTTP/1.1利用Entity Tag头提供了更加严格的验证。
Apache服务器默认情况下,会对所有的静态、动态文件的响应头添加ETag字段。在Apache的httpd.conf文件中可以通过FileETag指令配置该选项。
FileETag指令配置了当文档是基于一个文件时用以创建 Etag(entity tag)响应头的文件的属性。在Apache 1.3.22及以前,ETag的值是对文件的索引节(INode),大小(Size)和最后修改时间(MTime)进行Hash后得到的。如果一个目录的 配置包含了‘FileETag INode MTime Size’而其一个子目录包含了‘FileETag -INode’那么这个子目录的设置(并会被其下任何没有进行覆盖的子目录继承)将等价于‘FileETag MTime Size’。
在多台负载平衡的服务器环境下,同一个文件会有不同的etag或者文件修改日期,浏览器每次都会重新下载。设置‘FileETag None’可以使响应头不再包含ETag字段。