【转】解决Jfreechart中文乱码问题

最近一个项目部署在tomcat上,所有的步骤都是成功后,用客户端浏览器测试部分字体为乱码,如下图的“进出口统计”显示为乱码。

1、首先查看tomcat的主配置文件,默认编码为GBK,网上有资料说修改为UTF-8即可解决,但是修改完毕后事实证明不是这个问题。因此说GBK是没有问题的。
2、别的中文数字也没有任何问题,怀疑是写代码的时候字符集的问题,也可能是因为系统上没有这个字符集,所以显示为乱码。
3、网上搜索一下说的解决步骤是:
方法如下:
需要一个中文TrueType字库,zysong.ttf,貌似msyh.ttf(微软雅黑)不管用,我开始用雅黑字体不成功  1.确认%JavaHome%/jre/lib/fonts目录下存在zysong.ttf
2.在%JavaHome%/jre/lib/fonts目录下执行"ttmkfdir -o fonts.dir"命令,重新生成fonts.dir文件
3.确认/usr/share/fonts/zh_CN/TrueType目录存在,如果不存在则mkdir创建
4.确认/usr/share/fonts/zh_CN/TrueType目录下存在zysong.ttf
5.在%JavaHome%/jre/lib目录下,执行 cp fontconfig.RedHat.3.properties.src fontconfig.properties
6.重起resin,OK。(虽然我装的tomcat,他的是resin)
4、找了一圈终于找到zysong.ttf文件,如果找不到下载的地方,可以给我留言找我要(因为文件用gzip和bz2压缩完都4M,这里只让传附件2M,蛋疼)。
5、我的解决步骤是:
a)将zysong.ttf文件上传到linux并且放到/usr/share/fonts/zh_CN/TrueType目录下
b)将zysong.ttf文件上传到linux并且放到%JavaHome%/jre/lib/fonts目录下
c)重启tomcat
d)测试看看是否还显示乱码呢
e)结果就如下图所示了


原文地址:http://blog.chinaunix.net/space.php?uid=23916356&do=blog&id=3020161

固定NFS端口

修改/etc/service,添加以下内容(端口号必须在1024以下,且未被占用)
mountd 1011/tcp #rpc.mountd  
mountd 1011/udp #rpc.mountd  
rquotad 1012/tcp #rpc.rquotad  
rquotad 1012/udp #rpc.rquotad

重启nfs服务后,端口即固定了。
和nfs相关的端口有:
portmap  111
nfsd    2049
mountd   1011
rquotad    1012

参考: http://www.router.net.cn/Article/41167.html

linux 搭建ruby网站环境

Ruby安装包

下载地址:http://www.ruby-lang.org/en/downloads/

ruby-1.8.6-p111.tar.gz

解压并安装:

tar -xvzf ruby-1.8.6-p111.tar.gz

cd ruby-1.8.6-p111

./configure -prefix=/opt/modules/ruby

make

make install

操作系统PATH路径:

export PATH=/opt/modules/ruby/bin:$PATH



rails远程安装:

gem下载地址:http://rubyforge.org/projects/rubygems/

解压并安装:

tar xzvf rubygems-1.0.1.tgz

cd rubygems-1.0.1/

ruby setup.rb

/usr/local/ruby/bin/gem install rails --remote

mysql_ruby驱动安装

下载地址:http://www.tmtm.org/en/mysql/ruby/

解压并安装:

tar -xvzf mysql-ruby-2.7.4.tar.gz

cd mysql-ruby-2.7.4

ruby extconf.rb --with-mysql-dir=/opt/modules/mysql/

make && make install

fast-cgi安装:

下载地址:http://www.fastcgi.com/dist/

解压并安装:

tar xzvf fcgi-2.4.0.tar.gz

cd fcgi-2.4.0

./configure --prefix=/opt/modules/fcgi

make && make install

安装ruby的fcgi支持库:
下载地址: http://rubyforge.org/projects/fcgi/   
tar xzvf ruby-fcgi-0.8.7.tar.gz

cd ruby-fcgi-0.8.7

ruby install.rb config -- --with-fcgi-include=/opt/modules/fcgi/include --with-fcgi-lib=/opt/modules/fcgi/lib

ruby install.rb setup

ruby install.rb install



Lighttpd安装:

下载地址:http://www.lighttpd.net/download/

注意: 安装前要检查linux中的pcre,在RedHat中会默认安装pcre-4.5-3.2.RHEL4,这个版本不支持lighttpd.

必须下载另外两个rpm,grep-2.5.1-32.2.i386.rpm和pcre-devel-4.5-3.2.SEL4.i386.rpm,

下载地址:http://scientificlinux.physik.uni-muenchen.de/mirror/scientific/43/i386/errata/fastbugs/RPMS/grep-2.5.1-32.2.i386.rpm



下载地址:ftp://ftp.pbone.net/mirror/www.startcom.org/AS-4.0.0/os/i386/StartCom/RPMS/pcre-devel-4.5-3.2.SEL4.i386.rpm



安装命令为:rpm -ivh rpm包名



解压并安装:

tar xzvf lighttpd-1.4.18.tar.gz

./configure --prefix=/opt/modules/lighttpd

make && make install



配置环境:

1.将lighttpd的配置文件放到/etc/lighttpd/

cp doc/sysconfig.lighttpd /etc/sysconfig/lighttpd

mkdir /etc/lighttpd

cp doc/lighttpd.conf /etc/lighttpd/lighttpd.conf



2.将启动服务器的启动文件放入到用户的目录中

cp doc/rc.lighttpd.redhat /etc/init.d/lighttpd

编辑此文件:

LIGHTTPD_BIN=/usr/sbin/lighttpd

改为

LIGHTTPD_BIN=/usr/local/lighttpd/sbin/lighttpd



希望服务器启动的时候就启动lighttpd,那么:

chkconfig lighttpd on



配置Lighttpd



修改/etc/lighttpd/lighttpd.conf



1)server.modules

取消需要用到模块的注释,mod_rewrite,mod_access,mod_fastcgi,mod_simple_vhost,mod_cgi,mod_compress,mod_accesslog是一般需要用到的。



2)server.document-root, server.error-log,accesslog.filename需要指定相应的目录



3)用什么权限来运行lighttpd,默认将使用root用户进行运行。

server.username = "nobody"

server.groupname = "nobody"

从安全角度来说,不建议用root权限运行web server,可以自行指定普通用户权限。



4)静态文件压缩

compress.cache-dir = "/tmp/lighttpd/cache/compress"

compress.filetype = ("text/plain", "text/html","text/javascript","text/css")

可以指定某些静态资源类型使用压缩方式传输,节省带宽,对于大量AJAX应用来说,可以极大提高页面加载速度。



安装过程中遇到的一些问题:(安装花绪)

1.在安装rails的过程中,由于需要远程安装rails的时候,但是安装不成功,

命令提示:

ERROR: While executing gem ... (Gem::RemoteFetcher::FetchError)

getaddrinfo: Temporary failure in name resolution (SocketError)

getting size of http://gems.rubyforge.org/Marshal.4.8

原因是此服务器没设置DNS,不能对外访问网络。

解决方法:





#>vi /etc/resolv.conf

nameserver 202.106.46.151

nameserver 202.106.196.115

nameserver 211.98.2.4

nameserver 211.98.4.1



2.安装lighttpd时,由于原来的pcre包不支持此服务,需要安装一个linux内核包pcre-devel-4.5-3.2.SEL4.i386.rpm,

但是不能正常安装。

命令提示:

warning: pcre-devel-4.5-3.2.SEL4.i386.rpm: V3 DSA signature: NOKEY, key ID 652e84dc

error: Failed dependencies:

pcre = 4.5-3.2.SEL4 is needed by pcre-devel-4.5-3.2.SEL4.i386



原因是此安装包不能直接进行安装,必须安装另一个grep的rpm包,才能正常安装。

解决方法:





#>rpm -ivh grep-2.5.1-32.2.i386.rpm

#>rpm -ivh pcre-devel-4.5-3.2.SEL4.i386.rpm



3.lighttpd的配置,服务不能正常启动,启动步骤如下:

#>/etc/init.d/lighttpd status

命令提示:

lighttpd dead but pid file exists

在配置过程中由于对配置文件的内容不是很熟悉,所以只好拿可以运行的配置比对,经过调试发现有几处需要调整,

1)server.pid-file = "/var/run/lighttpd.pid"

此处是当前项目运行时的PID;

2)compress.cache-dir = "/opt/modules/lighttpd/compress"

经处是的目录需要手动建立,否则加载会失败!

3)fastcgi.server = (

".fcgi" => (

"rails" => (

"socket" => "/tmp/lighttpd/socket/rails.socket",

"bin-path" => "/opt/pptv-data/pptvCMS/public/dispatch.fcgi",

"bin-environment" => ("RAILS_ENV" => "development"),

"min-procs" => 10,

"max-procs" => 10

)

)

)

上述代码为新增该服务访问的项目路径。此项目会启动10个进程,会建立10个rails.socket,保证socket建立的所在目录存在。

项目所在的物理地址是否正确(/opt/pptv-data/pptvCMS/public/dispatch.fcgi)。

4)index-file.names = ( "dispatch.fcgi","index.php","index.html","index.htm", "default.htm" )

新增"dispatch.fcgi"作为访问页面。

5)查看项目对应的public/dispatch.fcgi中的第一行是否为当前服务器的ruby安装路径。

ruby安装路径:/opt/modules/ruby

dispatch.fcgi中的第一行:#!/opt/modules/ruby/bin/ruby

需要修改的文件包括:dispatch.cgi,dispatch.rb,dispatch.fcgi



4 lighttpd的配置正确,服务正常启动,项目不能正常访问:

命令提示:

错误访问号500,页面不存在,

问题的原因,在environment.rb文件中需要指定rails的版本号,

如:

RAILS_GEM_VERSION = '1.2.6' unless defined? RAILS_GEM_VERSION

查看版本发现rails的版本是2.0.2,由于开发时采用的版本为1.2.6,所以需要卸载当前的2.0.2版本,安装1.2.6版本。

解决方法:

gem uninstall rails

gem install rails --version '=1.2.6'

重新启动服务,一切OK。

不编译内核也可以让linux支持ntfs

1. 下载  ntfs-3g  http://www.ntfs-3g.org/
     下载   fuse    http://fuse.sourceforge.net/
2. 编译安装 fuse  
tar zxvf  fuse-version.tar.gz  
cd   fuse-vsersion
./configure
make
make install
3.  编译安装  ntfs-3g
tar zxvf   ntfs-3g-version.tar.gz
cd   ntfs-3g-version
./configure
make
make install

现在,如果顺利的话,你的linux已经支持了 ntfs。

4. 挂载
mount -t ntfs-3g -o locale=zh_CN.GB18030 /dev/sdb1   /mnt

这里要说一下, -o  locale=ZH_CN.GB18030 是指定挂载的时候指定字符集。这是为了避免ntfs磁盘中的中文字符到linux上变成乱码的情况。

5. 如果按照4步骤挂载了,但是依旧乱码,如何做?
请将你的  /etc/sysconfig/i18n  编辑成如下:LANG="zh_CN.GB18030"
LANGUAGE="zh_CN.GB18030:zh_CN.GB2312:zh_CN"
SUPPORTED="zh_CN.UTF-8:zh_CN:zh:en_US.UTF-8:en_US:en"
SYSFONT="lat0-sun16"

hda: irq timeout: status=0xd0 {Busy}

发现dmesg很多以下问题: ide-cd: cmd 0x3 timed out hda: irq timeout: status=0xd0 { Busy } ide: failed opcode was: unknown hda: ATAPI reset complete hda: irq timeout: status=0xd0 { Busy } ide: failed opcode was: unknown hda: ATAPI reset complete hda:
发现dmesg很多以下问题:

ide-cd: cmd 0x3 timed out
hda: irq timeout: status=0xd0 { Busy }
ide: failed opcode was: unknown
hda: ATAPI reset complete
hda: irq timeout: status=0xd0 { Busy }
ide: failed opcode was: unknown
hda: ATAPI reset complete
hda: DMA disabled
hda: drive_cmd: status=0x51 { DriveReady SeekComplete Error }
hda: drive_cmd: error=0x04 { AbortedCommand }
ide: failed opcode was: 0xec
hda: DMA disabled
hda: drive_cmd: status=0x51 { DriveReady SeekComplete Error }
hda: drive_cmd: error=0x04 { AbortedCommand }
ide: failed opcode was: 0xec
解决方法:

关闭 DMA

如果有玩OS系统的朋友,会知道DMA的作用,是在减少传输资料时,耗用到CPU的资源。像是硬碟和光碟机都有这样的设计,因为大部分的资料传输,可能是不需要用到CPU咚恪V皇前奄Y料区块搬来搬去而已!(个人理解,有误请告知补正!)

目前的LINUX系统,预设应该是支援DMA enable的。
当我看到我的OS萤幕出现了:

ide-cd: cmd 0x3 timed out
hda: irq timeout: status=0xd0 { Busy }
ide: failed opcode was: unknown
hda: ATAPI reset complete
hda: irq timeout: status=0xd0 { Busy }
ide: failed opcode was: unknown
hda: ATAPI reset complete
hda: DMA disabled
hda: drive_cmd: status=0x51 { DriveReady SeekComplete Error }
hda: drive_cmd: error=0x04 { AbortedCommand }
ide: failed opcode was: 0xec
hda: DMA disabled
hda: drive_cmd: status=0x51 { DriveReady SeekComplete Error }
hda: drive_cmd: error=0x04 { AbortedCommand }
ide: failed opcode was: 0xec
那个hda设备一直出现 irq 错误和 ATAPI reset !
我查了一下可能原因,好判断这个错误对我的SERVER有没有严重的影响。
原来就是hda光碟机,它的DMA打开了,但OS却不支援!才有这样的错误发生。

机器:HP ProLiant DL580 G5
作业系统:centos5
光碟机hda是8X的DVD。

不过官网给的solution只是在开机设定中把DMA关闭。
我要的是能够把DMA即时开关的指令和KNOW-HOW。

OK,往下看吧!

一、检查系统中的DMA选项是否已被啓动
Linux中的hdparm命令是用来进行操控硬碟、光碟机之类设备的,
用hdparm -i /dev/hda可以列出IDE可能支持的DMA模式,如:

DMA: mdma0 mdma1 mdma2 udma0 udma1 *udma2
二、啓动DMA支援
方法1:
在lilo.conf中加入:idex=dma,其中x代表硬碟序号,其取值范围0-3,
分别代表系统中的四个IDE硬碟设备。

方法2:
使用hdparm命令,hdparm -d1 /dev/hda 其中d1表示开啓DMA模式,
可以利用加到rc.locl中以便每次啓动OS时能使用DMA模式传输资料。

三、关闭DMA
命令格式:
hdparm -d0 /dev/hda
就把DMA传输模式关闭了,但能用DMA,为什么要关闭呢?

还有,对于支持UDMA传输模式硬碟,也可以参考以述方法进行配置,
但要确保硬碟控制器及硬碟都支持UDMA,最后你必须要有一根能支持UDMA传输的线路

另个说法:

原因估计是核心版本太低,IDE 模块对DMA支持不好,当系统满足一定I/O要求(与负载似乎无关),就会自动关闭DMA支持。根据过往的经验,这个错误不会影响系统的正常运行。而且,正常运行的服务器一般不会经常操作光驱设备,所以,我们可以把DMA支持禁用。
修改Grub启动菜单,加入ide=nodma,禁止IDE使用DMA接口。这会对光驱的速度,及系统I/O有点影响。
例如,修改:

引用

kernel /boot/vmlinuz-2.6.18-92.el5 ro root=LABEL=/1 rhgb quiet
为:

引用

kernel /boot/vmlinuz-2.6.18-92.el5 ro root=LABEL=/1 rhgb quiet ide=nodma

以上内容转自 : http://bailkai.blog.163.com/blog/static/82011736201041573650357/

怎么知道linux系统安装的时间

在安装系统时,每个分区下都会有一个 lost+found ,而且这个目录的创建时间是和该分区创建的时间一样的。所以如果想知道你的系统是什么时候安装的,只需要看这个目录的创建时间即可。
通常情况下,我们分区都会把 /boot 单独分一个区,所以你只要查看 /boot/lost+found 这个目录的创建时间即可。比较简单的方法是:
ls -ld  /boot/lost+found
如果你的/boot/不是单独分区,那么就看一下 / 下的吧

ls -ld  /lost+found

yummain.user_main(sys.argv[1:], exit_code=True)

yum update 时报错,报错信息如下:
File "/usr/bin/yum", line 29, in ?
    yummain.user_main(sys.argv[1:], exit_code=True)
  File "/usr/share/yum-cli/yummain.py", line 229, in user_main
    errcode = main(args)
  File "/usr/share/yum-cli/yummain.py", line 104, in main
    result, resultmsgs = base.doCommands()
  File "/usr/share/yum-cli/cli.py", line 339, in doCommands
    self._getTs(needTsRemove)
  File "/usr/lib/python2.4/site-packages/yum/depsolve.py", line 101, in _getTs
    self._getTsInfo(remove_only)

网上说,这个是yum的一个bug,解决办法是停掉fastestmirror 插件:
yum --disableplugin=fastestmirror update

把windows下putty的key转换成linux上使用的rsa key

以前在windows上使用的putty的私钥,想移植到linux使用。使用 PUTTYGEN.EXE 转换了半天,研究了半天依然不行。最后网上搜了搜,说是要使用linux下的putty转换才行。于是,网上下载了源码。

wget http://the.earth.li/~sgtatham/putty/latest/putty-0.62.tar.gz
tar zxvf putty-0.62.tar.gz
cd  putty-0.62
cd unix
./configure
make

不用安装它,make 即可。
./puttygen /tmp/prikey.ppk -O private-openssh -o  /tmp/123.ppk

这里要解释一下,当make后,就会在当前目录下生成一个 puttygen,这个就是转换的工具;
上述命令中, /tmp/prikey.ppk 为windows下putty的私钥;
-O 后边指定要转换成的格式,这个必须要写成private-openssh
-o  用来指定,转换后的私钥路径以及名称。

到这里已经转换好了,下面就该使用转换后的私钥了。
ssh  -i  /tmp/123.ppk   [email protected]  
看看你是否能登录了呢?

系统处理能力TPC估算方法探讨--DTPT 2008.03

摘    要    对相关TPC估算方法进行了探讨,并结合工程实际总结出了一套计算服务器处理能力的通用估算方法。

关键词    TPC基准值    数据处理能力    计算公式



      

0  前言

        近年来,随着计算机技术的不断普及,不同种类的应用系统在各个行业发挥着举足轻重的作用。同样,在高速发展的通信领域,大量的应用系统被开发和使用,例如业务支撑系统(BSS)、运营支撑系统(OSS)、办公自动化(OA)等。但是,如果期望应用系统能够达到建设之初的预想效果,除加强对软件功能和设计质量控制外,对硬件设备的合理配置也是重要的环节之一。

        通常而言,一套完整的应用系统都是由硬件和软件部分构成的,只不过具体配置和实现功能存在差异。合理的硬件配置必须满足软件对于CPU处理能力、内存容量以及存储容量的需求,并能满足系统未来一段时期内的变化,富余一定冗余量。涉及这类项目设计,采用合理的方案估算系统所需处理能力是正确选择硬件配置的前提。系统处理能力的估算有以下难点。

        a) 软件系统所需的数据处理能力涉及到很多暂时无法确定的方面(如软件自身的功能设计、编码水平、数据结构等因素),较难用数据方法精确计算。

        b) 软件和硬件系统之间应有统一的单位换算方法。

        因此,希望有一种国际标准,能够量化系统的性能,以此作为设备选型的依据。

        本文以事务处理性能委员会(TPC)提供的基准估算理论为核心,结合案例探讨使用tpmC值计算系统所需的硬件系统处理能力。

1  TPC标准介绍

        在对系统进行方案设计时,通常会遇到下列问题。

        a) 配置什么样的服务器设备?

        b) 系统性能如何?

        c) 系统能够满足多长时间的应用?

        单凭历史经验给出一个经验值来评估整套系统显然是不够的,必须拿出足够的理论证据来证明设计中已考虑到了上述问题。通常,采用TPC的基准测试来衡量硬件服务器的处理能力,同时,采用通用计算公式估算软件所需的处理能力。

1.1  TPC

        TPC是由数10家会员公司创建的非盈利组织,总部设在美国。该组织对全世界开放,但迄今为止,绝大多数会员都是美、日和西欧的大公司。TPC的成员主要是计算机软硬件厂家,而非计算机用户,它的功能是制定商务应用基准程序的标准规范、性能和价格度量,并管理测试结果的发布。

        TPC的测试结果和出版物是开放的,可以通过网站(http://www.tpc.org)获取详细信息。IBM、NCR、HP、SUN等国际著名服务器供应商均是TPC会员,这些公司旗下的产品均会在网站上公布TPC的测试结果。目前,国内的工程项目中大量采用了上述公司制造的服务器类产品,因而这些数据对于设计阶段的性能估算很有参考价值。

        至今,TPC已经推出了4套基准程序(TPC-A、TPC-B、TPC-C和TPC-D)。其中TPC-A和TPC-B已经过时,不再使用。TPC-C是在线事务处理(OLTP)的基准程序,TPC-D是决策支持的基准程序。目前,工程设计中常见的系统均为在线事务处理型(包括BSS、OSS和OA),因此TPC-C基准测试是本文关注的重点。

1.2  TPC-C基准测试

        TPC-C是一种旨在衡量OLTP系统性能与可伸缩性的行业标准基准测试项目。这种基准测试项目将对包括查询、更新及队列式小批量事务在内的广泛数据库功能进行测试。许多数据专业设计人员将TPC-C视为衡量“真实”OLTP系统性能的有效指示器。

        TPC-C基准测试是对硬件处理能力的考核标准。TPC-C通过模拟一个批发商的货物管理系统,衡量硬件服务器的性能指标(查询、统计功能的执行效率)。TPC对具体的测试环境,也做了详细的规定。

1.2.1  测试环境

        批发公司有N个仓库,每个仓库供应10个地区,其中每个地区为3 000名顾客服务。每个仓库中有10个终端,每个终端用于一个地区。在运行时,10×N个终端操作员向公司的数据库发出5类请求。

1.2.2  逻辑和流程

        该系统需要处理的交易有以下几种。

        a) New-Order:客户输入一笔新的订货交易。

        b) Payment:更新客户账户余额,以反映其支付状况。

        c) Delivery:发货(模拟批处理交易)。

        d) Order-Status:查询客户最近交易的状态。

        e) Stock-Level:查询仓库库存状况,以便能够及时补货。

        从上述定义可见,数据库在逻辑上是分布的。而N是一个可变参数,测试者可以随意改变N,以获得最佳测试效果。图1示出的是TPC-C测试逻辑结构图;图2示出的是TPC-C测试流程图。







1.2.3  评测指标

        TPC-C基准测试针对一种模拟订单录入与销售环境测量每分钟商业事务吞吐量。按照TPC的定义,流量指标tpmC描述了系统在执行Payment、Delivery、Order-status、Stock-Level这4种交易的同时,每分钟可以处理多少个New-Order交易。所有交易的响应时间必须满足TPC-C测试规范的要求。

        最终的测试结果会在TPC的网站上公布,可以免费查询到绝大部分的系统测试结果。测试信息包括tpmC得分、系统配置清单、测试环境以及日期等,内容非常详尽。

   

2  服务器处理性能估算

2.1  估算方案

        在方案设计之前,必须详细了解用户需求,特别关注以下几点。

        a) 系统的设计使用年限。

        b) 系统平均用户在线人数(访问量)。

        c) 系统忙时,用户的主要操作行为统计(估值)。

        d) 软件开发商应提供的功能架构,并能提供每个功能所引发的事务处理量。

        e) 系统采用的操作系统和数据库平台。

        在充分采集系统信息后,可对系统所需服务器性能进行3个方面的估算。

        a) 数据服务器处理能力估算。

        b) 应用服务器处理能力估算。

        c) 存储容量估算。

        值得指出的是,应用服务器和数据服务器是2个不同的概念。应用服务器提供访问商业逻辑的途径以供客户端应用程序使用。数据服务器主要负责计算和数据存储。在大型系统中应用和数据会独立使用各自的服务器,降低服务器压力并尽可能保障数据安全和独立。

2.1.1  数据服务器性能估算

        测算服务器在忙时的数据库访问峰值(X),代表主机处理峰值应能达到每秒X个连接;每个连接平均需要访问Y个数据表。每个数据库访问相当于服务器Z的处理能力。数据服务器处理性能(Ls)的估算公式为

                            Ls=XYZ/(1-β)/γ  (1)

式中:

        X——用户连接数(连接/s)

        Y——数据表连接数

        Z——数据访问值(tpm)

        β——系统自身消耗值,取值范围为25%~35%

        γ——系统忙时比例因子,取值范围为60%~80%

2.1.2  应用服务器性能估算

        1) 方法一:估值计算

        应用服务器处理性能(Ly)的估算公式为

                                    Ly=Lsα  (2)

式中:

        α——综合系数(见表1)




        2) 方法二:TPC公式计算

        TPC建议使用式(3)估算所需处理能力。假定在系统发出的业务请求中,位列前三项的功能(如查询、更新、统计功能等)分别命名为A、B、C,则应用服务器需要的处理能力为

                   Ly=U1N1(T1+T2+T3)/3XY/Z (3)

式中:

        U1——系统同时在线用户数(人)

        N1——平均每个用户每分钟发出业务请求次数(次/人)

        T1——平均每次A业务产生的事务数(次)

        T2——平均每次B业务产生的事务数(次)

        T3——平均每次C业务产生的事务数(次)

        X——一天内忙时的处理量和平均数的比值

        Y——经验系数(实际量和估算量的比值)

        Z——服务器冗余值

        方法一和方法二均为常用的处理能力估算方法。方法一更为简便,但相对方法二缺乏说服力和准确性。因此,建议尽量使用方法二进行估算。

2.1.3  存储容量估算

        系统的存储空间主要包含4大内容数据。

        a) 软件系统自身所需安装空间。

        b) 系统运行环境所需安装空间(操作系统、数据库软件、其他第三方软件等)。

        c) 系统运行产生的数据。

        d) 系统日志所需空间。

        实际存储容量(G)计算公式为

                     

        设计存储容量(Gs)计算公式为

                             Gs=G(1+Z) (5)

式中:

        A——每条记录占用存储空间(Byte/条)

        B——每天产生的记录条数(条)

        F——每天系统日志占用空间(Byte)

        C——设计使用年限(年)

        D——软件系统自身安装空间(GByte)

        E——运行环境所占安装空间(GByte)

        Z——存储冗余

        通常情况下,为了确保数据安全性,系统备份时会将数据存放在其他独立的备份设备中。因此,在存储容量估算中暂不考虑系统备份所需的容量需求。

        通过前面3个步骤的计算,就能大致掌握系统数据服务器、应用服务器以及存储容量上需求值。结合TPC网站上公布的测试数据和厂商提供的相关设备的tpmC数据,就能做出比较明确的判断。同时,计算数据也是设备选型和设备配置的重要设计依据。

2.2  案例分析

        某建设单位委托设计一套基于B/S技术的传输资源管理系统。通过采集用户需求并咨询相关软件开发商和硬件厂商,获取了以下信息。

        a) 系统设计使用年限5年。

        b) 项目实施后,用户之间可以通过系统查询现网的传输架构和资源使用情况。同时,用户可以定期统计传输资源使用情况并及时更新系统信息。

        c) 估算系统平均用户在线人数100人。

        d) 软件开发商提供的系统参数,包括主要功能操作所产生的事务处理个数、每条记录占用的存储空间等信息。

        e) 软件指令行数估计20万行左右。

        f) 数据库系统为Oracle 9i,并采用RAC方式。

        特别说明,该项目采用Oracle 9i数据库平台,并使用真正应用集群(RAC)方式。RAC是Oracle 9i数据库中采用的一项新技术,也是Oracle数据库支持网格计算环境的核心技术。使用该技术能大大提高数据处理效率并降低安全风险,是目前最为流行的数据库平台之一。RAC技术能使多个服务器上的多个Oracle实例同时管理一个数据库,因此必须配置2台以上数据服务器组成数据集群。综合用户需求、厂商建议和机房勘察结果,拟选用1台服务器作为应用服务器,2台数据服务器组成数据集群,以满足Oracle 9i RAC的需要。图3示出的是系统逻辑拓扑图。




        在掌握基础数据后,根据上一章介绍的估算方案对数据服务器、应用服务器和存储容量进行需求量计算。

2.2.1  数据服务器TPC-C计算

        每秒峰值为6 000连接/s,即主机处理峰值应能达到6 000连接/s;每个连接平均需要10个数据表访问,按照经验,每个数据库访问相当于服务器3~4 tpm的处理能力。系统本身要消耗30%的系统资源(厂商提供参考值);系统忙时比例因子为70%(厂商提供参考值)。将上述值代入式(1)有:

Ls=6 000×10×4/(1-30%)/70%=489 796

        因此,数据库双机系统TPC-C要求大于或等于500 000 tpm,考虑实现Oracle 9i RAC后,双机性能约是单机的1.8倍,因此,单机TPC-C值不能小于500 000/1.8≈278 000 tpm。

2.2.2  应用服务器TPC-C计算

        1) 方法一:估值计算

        本系统程序指令行数约为20万行,属于中型系统。根据式(2),可得到应用服务器所需处理能力。

Ly=500 000×0.5=250 000 tpmC

        2) 方法二:TPC公式计算

        系统最大同时在线用户数为300人; 估算平均每个用户每分钟发出3次业务请求;系统发出的业务请求中,更新、查询、统计各占1/3;平均每次更新业务触发10个事务;平均每次查询业务触发15个事务;平均每次统计业务触发30个事务;一天内忙时的处理量为平均值的8倍;约定经验系数为1.6(实际工程经验);服务器冗余值为30%。根据式(3),可得到应用服务器所需处理能力。

Ly=300×3×(10+15+30)/3×7×1.6/0.7≈264 000 tpm

        方法一和方法二计算的结果比较接近,建议采用较大的值作为最终估算结果。

2.2.3  存储容量计算

        传输资源管理系统中主要存统计报表数据以及日志管理信息。在已经考虑了数据冗余的前提下,约定:每天每个功能模块生成20个统计报表;目前系统共有10个功能模块;每条报表记录平均占用存储空间300 B;每年的预算数据存储容量需求为21.9 GB;每月的日志数据存储容量需求为0.1 GB;设计使用年限为5年;软件系统自身安装空间为1 GB;运行环境所占安装空间为5 GB (包含操作系统和数据库) ;存储冗余为30%;全年总共所需存储容量为:21.9+12×0.1+1+5=29.1 GB

        5年存储容量为:5×29.1×(1+0.3)=189.15 GB

2.2.4  配置说明

        完成数值估算后,建议把计算结果以表格的形式进行归纳总结(见表2),方便用户查阅。




3  建议

        基于TPC-C标准的服务器性能估算方法,其中很多参数也是平均估值和经验估值,计算结果只能作为参考。在实际应用中,决定系统性能的因素除了硬件、系统软件外,应用软件的设计质量也非常重要。正是由于存在这些不确定的因素,估算值往往和实际值有一定的偏差。为了尽量减少偏差值,建议设计人员务必做好以下几点。

        a) 工程前期,详细了解用户需求,准确把握用户最关心的热点问题。例如:系统用户群、建设的主要目的和建设目标、要实现的功能描述等等。

        b) 了解整个系统架构、实现方法和功能设计也非常重要。在TPC估算中,很多参数和系统的架构设计有关,准确掌握系统的设计特点和数据参数对计算的准确性很有帮助。

        c) 如果某些参数确实无法获取,建议把参数适当估得大些,确保未来系统能正常运行。

        放眼长远,在系统实施前可以加强对项目的监控,并建立项目评估机制。项目实施后记录系统实际运行情况,掌握项目估算值和实际值的偏离度,作为其他项目的经验参考数据。

        a) 通过对各业务系统运行情况的调查,进行历史数据的收集分析,按分类建立基准指标库。收集的信息包括服务器的配置、并发用户数(每天业务量)、CPU/存储负荷等。

        b) 工程实施后,由厂商配合对系统性能进行评估,提供性能测试数据。通过实际测试,可以掌握系统在真实环境下的TPC值,有助于积累经验,修正计算参数。

        c) 硬件厂商提供的TPC-C得分是在实验室环境下获取的,和实际值往往有出入。因此,对硬件服务器进行现场测试,并将测试数据建立档案库很有必要。这些数据不仅可以用于评估项目建设方案中的服务器选型,也可以对已实施项目提供升级优化指导。

4  结束语

        系统处理能力TPC估算方法是一种工程参数结合经验参数的通用计算方法。但是,由于计算公式涉及的参数较多而且一些参数为经验值,计算的结果仅能作为系统配置和选型的参考。尽管有这些不足,基于TPC-C标准的系统处理能力估算仍不失为一套简单有效的系统性能计算方法。

参 考 文 献

1    (美)TPC-C and TPC-D V.1.X Overview Presentations,http://www.

tpc.org,2005

2               (美)James Johnson. 数据库[M]. 北京:电子工业出版社,2004



(来源:邮电设计技术  2008年03期    作者:周承诚)

ssh Using keyboard-interactive authentication

远程登录linux 时,提示 Using keyboard-interactive authentication 。
网上搜查了下,原因是sshd_config 采用默认设置,在 默认的情况下, /etc/ssh/sshd_config 是一个全部注释的文件。
主要有以下两个方法:
1.去掉注释 PermitRootLogin = yes   就可以用 root 登陆了;
2.你是远程用root登陆吧,好多都不建议这样做……..最简单还是adduser,加一个wheel组的用户,登陆后su到 root……………

我的解决方式是:
以root身份直接在/etc/ssh/sshd_config中找到#PermitRootLogin = yes ,将其去掉重启就可以了。

用yum来安装或卸载CentOS图形界面包

之前安装公司服务器的时候,默认安装了图形界面,第二天公司工程师跟我说不能安装图形界面,需要把服务器全部重装,
之后一直有疑问,安装了图形界面就不能卸载掉吗?因为在linux里面,图形界面只是一个软件包的形式,并不是核心,今天看书的时候
想起这个问题,在网上找资料,发现网上一个简单的办法,直接用yum的方式安装或卸载!

命令行模式安装图形界面
yum grouplist 检查已安装的组
yum groupinstall "X Window System"
yum groupinstall "GNOME Desktop Environment"
startx
或者init 5
就OK。
重新安装了带图形界面模式的centos系统,来实验yum方式卸载图形界面
图形界面想要卸载:
yum groupremove "GNOME Desktop Environment"
yum groupremove "X Window System"

以图形界面安装的linux 卸载图形界面之后会提示错误
init: Id "x" respawning too fast: disabled for 5 minutes
解决的办法是
vi /etc/inittab
找到这段文字 把这段文字中id后面的数字改为3 id:3:initdefault 让系统以文本界面启动
找到这段文字x:5:respawn:/etc/X11/prefdm -nodaemon注释掉!

来自:http://moneypy.blog.51cto.com/745631/586101

vmstat详细介绍

vmstat是一个很全面的性能分析工具,可以观察到系统的进程状态、内存使用、虚拟内存使用、磁盘的IO、中断、上下文切换、CPU使用等。对于 Linux 的性能分析,100%理解 vmstat 输出内容的含义,并能灵活应用,那对系统性能分析的能力就算是基本掌握了。
下面是vmstat命令的输出结果:
[root@monitor-www ~]# vmstat 1 5
procs — ———–memory——————–swap——io—– —-system— —–cpu—
r  b  swpd       free     buff      cache  si so  bi    bo       in    cs   us sy  id wa st
1 0 84780 909744 267428 1912076  0 0  20   94      0        0     2  1  95  1 0
1 2 84780 894968 267428 1912216  0 0   0 1396   2301 11337  8  3  89  0 0
1 0 84780 900680 267428 1912340  0 0 76 1428  1854 8082     7  2  90  0 0
1 0 84780 902544 267432 1912548  0 0 116 928  1655 7502    7  2  92   0 0
2 0 84780 900076 267432 1912948  0 0 180 904 1963 8703    10  3  87  0 0
对输出解释如下:
1)procs
a.r列表示运行和等待CPU时间片的进程数,这个值如果长期大于系统CPU个数,就说明CPU资源不足,可以考虑增加CPU;
b.b列表示在等待资源的进程数,比如正在等待I/O或者内存交换等。
2)memory
a.swpd列表示切换到内存交换区的内存数量(以KB为单位)。如果swpd的值不为0或者比较大,而且si、so的值长期为0,那么这种情况一般不用担心,不会影响系统性能;
b.free列表示当前空闲的物理内存数量(以KB为单位);
c.buff列表示buffers cache的内存数量,一般对块设备的读写才需要缓冲;
d.cache列表示page cached的内存数量,一般作文件系统的cached,频繁访问的文件都会被cached。如果cached值较大,就说明cached文件数较多。如果此时IO中的bi比较小,就说明文件系统效率比较好。
3)swap
a.si列表示由磁盘调入内存,也就是内存进入内存交换区的数量;
b.so列表示由内存调入磁盘,也就是内存交换区进入内存的数量
c.一般情况下,si、so的值都为0,如果si、so的值长期不为0,则表示系统内存不足,需要考虑是否增加系统内存。
4)IO
a.bi列表示从块设备读入的数据总量(即读磁盘,单位KB/秒)
b.bo列表示写入到块设备的数据总量(即写磁盘,单位KB/秒)
这里设置的bi+bo参考值为1000,如果超过1000,而且wa值比较大,则表示系统磁盘IO性能瓶颈。
5)system
a.in列表示在某一时间间隔中观察到的每秒设备中断数;
b.cs列表示每秒产生的上下文切换次数。
上面这两个值越大,会看到内核消耗的CPU时间就越多。
6)CPU
a.us列显示了用户进程消耗CPU的时间百分比。us的值比较高时,说明用户进程消耗的CPU时间多,如果长期大于50%,需要考虑优化程序啥的。
b.sy列显示了内核进程消耗CPU的时间百分比。sy的值比较高时,就说明内核消耗的CPU时间多;如果us+sy超过80%,就说明CPU的资源存在不足。
c.id列显示了CPU处在空闲状态的时间百分比;
d.wa列表示IO等待所占的CPU时间百分比。wa值越高,说明IO等待越严重。如果wa值超过20%,说明IO等待严重。
e.st列一般不关注,虚拟机占用的时间百分比。

LC_ALL 是用来干啥的

转帖: www.linuxsky.org/doc/newbie/200707/84.html

在Linux中通过locale来设置程序运行的不同语言环境,locale由ANSI C提供支持。locale的命名规则为<语言>_<地区>.<字符集编码>,如zh_CN.UTF-8,zh代表中文,CN代表大陆地区,UTF-8表示字符集。在locale环境中,有一组变量,代表国际化环境中的不同设置:
1.    LC_COLLATE
定义该环境的排序和比较规则

2.    LC_CTYPE
用于字符分类和字符串处理,控制所有字符的处理方式,包括字符编码,字符是单字节还是多字节,如何打印等。是最重要的一个环境变量。

3.    LC_MONETARY
货币格式

4.    LC_NUMERIC
非货币的数字显示格式

5.    LC_TIME
时间和日期格式

6.    LC_MESSAGES
提示信息的语言。另外还有一个LANGUAGE参数,它与LC_MESSAGES相似,但如果该参数一旦设置,则LC_MESSAGES参数就会失效。LANGUAGE参数可同时设置多种语言信息,如LANGUANE="zh_CN.GB18030:zh_CN.GB2312:zh_CN"。

7.    LANG
LC_*的默认值,是最低级别的设置,如果LC_*没有设置,则使用该值。类似于 LC_ALL。

8.    LC_ALL
它是一个宏,如果该值设置了,则该值会覆盖所有LC_*的设置值。注意,LANG的值不受该宏影响。

C"是系统默认的locale,"POSIX"是"C"的别名。所以当我们新安装完一个系统时,默认的locale就是C或POSIX。

"POSIX" :Specifies the minimal environment for C-language translation called the POSIX locale. If setlocale() is not invoked, the POSIX locale is the default
"C"  Equivalent to "POSIX".
-----------------------------------
How to view the current locale setting?
# locale

How to change the locale setting?
* Via the CDE login locale
* As a user-specific locale
* As a system default locale
To change the current locale setting, first confirm that the desired locale is
installed on the system with:
# locale -a
de
en_AU
en_CA
en_UK
C
If the desired locale is not in the list, you will need to install the
appropriate packages for that locale. See the Note below for more information
about locale packages.

How to change the locale via the CDE login locale?
On the CDE login banner:
Choose options - languages
Under languages - choose the new locale
The CDE banner will re-cycle and then you can login to the selected locale.

NOTE: If a user has a different default locale set in their environment, the
that locale setting will override the selected CDE login locale.

How to set a user-specific locale?
Note:
For sh, ksh:
# LANG=C; export LANG
# LC_ALL=C; export LC_ALL
For csh:
# setenv LANG C
# setenv LC_ALL C

Note: To set a default locale for a user's environment, set the LANG or LC_*
variables in a user's shell intialization file such as $HOME/.profile or
$HOME/.cshrc
How to change the locale by setting the system default locale?
LANG=C
LC_ALL=C

Example from the /etc/default/init file:

# Lines of this file should be of the form VAR=value, where VAR is one of
# TZ, LANG, or any of the LC_* environment variables.
LANG=C
LC_ALL=C

Note: The system must be rebooted after making changes to the
/etc/default/init file in order for the changes to take effect.

How to verify the locale setting?
After setting or changing the locale, verify that the locale is set correctly:
Check if the locale is set correctly by running the locale command without any
options:
# locale
LANG=C
LC_CTYPE= "C"
LC_NUMERIC= "C"
LC_TIME= "C"
LC_COLLATE= "C"
LC_MONETARY= "C"
LC_MESSAGES= "C"
LC_ALL=C

iframe里ie8的cookie问题 p3p

a站点iframe嵌入b站点的页面,但是被ie8阻止了cookie,java代码设置heade没用,配置了apache httpd。conf才解决,原文如下:





P3P,不算是新名词,但还是有些人不清楚。事实上我也不清楚。。。在百度上看到有这玩意就备份下来。说真的,我只是知道用,但不知道为什么用。额。。很明显,因为在ucenter同步的时候,在discuz的ui/api里有写过。

看内容吧。。。。

IE6/IE7支持的P3P(Platform for Privacy Preferences Project (P3P) specification)协议默认阻止第三方无隐私安全声明的cookie,Firefox目前还不支持P3P安全特性,firefox中自然也不存 在此问题了。

在frameset里面,也就是里面的frame是来自第三方站点(不同IP或不同域名),那么默认情况下IE会自动禁用这些站点的cookie, 也就是在请求某url时在HTTP header里不发送它们的cookie,包括session的cookie。注意,这些站点在response里面设置的cookie还是会被发送到浏 览器的。

在用户浏览a.php时 A.com写入的为第一方Cookie,其嵌入的iframe 指向 b.php.这时B.com写入的就为第三方Cookie了,所以它是被IE当在了大门外。 所以,每次当用户提交的cookie提交时,就挂掉了.因为传不到真实的服务器.

解决方案.

PHP 的程序 , 可以直接在B网站中写入www.kobsky.cn 小眼世界&yacute;&ntilde; &euml;&Otilde;R&Iuml;z-Z

PHP代码
<?php   
header('P3P: CP="CURa ADMa DEVa PSAo PSDo OUR BUS UNI PUR INT DEM STA PRE COM NAV OTC NOI DSP COR"' );   
?>   
这样就能接受第三方的Cookie啦。


lighttpd的服务器


XML/HTML代码
server.modules     = ("mod_setenv")   
setenv.add-response-header  = ( "P3P" = >  " CP = 'CURa ADMa DEVa PSAo PSDo OUR BUS UNI PUR INT DEM STA PRE COM NAV OTC NOI DSP COR' ")   
apache的服务器

XML/HTML代码
< VirtualHost >   
Header set P3P 'CP = "CURa ADMa DEVa PSAo PSDo OUR BUS UNI PUR INT DEM STA PRE COM NAV OTC NOI DSP COR" '   
</ VirtualHost >   
IIS的服务器 www.kobsky.cn 小眼世界&yacute;&ntilde; &euml;&Otilde;R&Iuml;z-Z

增加一个网站http头来解决问题;www.kobsky.cn 小眼世界&yacute;&ntilde; &euml;&Otilde;R&Iuml;z-Z
管理 工具——〉选择一个网站 ——〉属性——〉 http头,增加一个http头www.kobsky.cn 小眼世界&yacute;&ntilde; &euml;&Otilde;R&Iuml;z-Z
然后输入头名:P3Pwww.kobsky.cn 小眼世界&yacute;&ntilde; &euml;&Otilde;R&Iuml;z-Z
输入头内容:CP=CAO PSA OUR

jsp页面:

XML/HTML代码
< %   
response.setHeader("P3P","CP = CAO  PSA OUR");   
%>   
java代码最简单的办法,增加一个filte:
Java代码
public   class  TransNameFilter  extends  HttpServlet  implements  Filter {   
private   static  org.apache.commons.logging.Log logWriter =   
   LogFactory.getLog(TransNameFilter.class .getName());   
   
/**   
*   
*/   
public  TransNameFilter() {   
   super ();   
   
}   
/* (非 Javadoc)   
   * @see javax.servlet.Filter#init(javax.servlet.FilterConfig)   
   */   
public   void  init(FilterConfig arg0)  throws  ServletException {   
   
}   
   
/* (非 Javadoc)   
* @see javax.servlet.Filter#doFilter(javax.servlet.ServletRequest, javax.servlet.ServletResponse, javax.servlet.FilterChain)   
*/   
public   void  doFilter(ServletRequest request, ServletResponse response, FilterChain chain)   
   throws  IOException, ServletException {   
   
   HttpServletRequest hreq = (HttpServletRequest) request;   
   String transName = hreq.getParameter("transName" );   
   if  (Util.isNullOrEmpty(transName)) {   
    logWriter.fatal(" there is no transName for this request" );   
   } else  {   
   
    logWriter.info(" transName is "  + transName);   
   }   
     
   HttpServletResponse res = (HttpServletResponse) response;   
        //iframe引起的内部cookie丢失   
   res.setHeader("P3P" , "CP=CAO PSA OUR" );   
   if  (chain !=  null )   
    chain.doFilter(request, response);   
   
}   
   
/* (非 Javadoc)   
   * @see javax.servlet.Filter#destroy()   
   */   
public   void  destroy() {   
   
}   
   
}  

来自:http://blog.csdn.net/ljwhx2002/article/details/6115731

快速安装本地yum源


1.挂载光盘
[root@fortest Server]# mount -t iso9660 -o loop /dev/cdrom /media/CentOS

2.删除/etc/yum.repos.d目录所有的repo文件
[root@fortest Server]# rm -rf /etc/yum.repos.d/*

3.创建新文件dvd.repo
[root@fortest Server]# vim /etc/yum.repos.d/dvd.repo
加入以下内容:
[dvd]
name=install dvd
baseurl=file:///media/CentOS
enabled=1
gpgcheck=0

4.刷新repos,生成缓存
[root@fortest Server]#yum makecache
然后就可以使用yum命令安装你所需要的软件包了