转载:http://www.517sou.net/Article/104.aspx
一、影响Linux服务器性能的因素
1. 操作系统级
Ø CPU
Ø 内存
Ø 磁盘I/O带宽
Ø 网络I/O带宽
2. 程序应用级
二、系统性能评估标准
其中:
%user:表示CPU处在用户模式下的时间百分比。
%sys:表示CPU处在系统模式下的时间百分比。
%iowait:表示CPU等待输入输出完成时间的百分比。
swap in:即si,表示虚拟内存的页导入,即从SWAP DISK交换到RAM
swap out:即so,表示虚拟内存的页导出,即从RAM交换到SWAP DISK。
三、系统性能分析工具
1.常用系统命令
Vmstat、sar、iostat、netstat、free、ps、top等
2.常用组合方式
• 用vmstat、sar、iostat检测是否是CPU瓶颈
• 用free、vmstat检测是否是内存瓶颈
• 用iostat检测是否是磁盘I/O瓶颈
• 用netstat检测是否是网络带宽瓶颈
四、Linux性能评估与优化
1. 系统整体性能评估(uptime命令)
[root@web1 ~]# uptime
16:38:00 up 118 days, 3:01, 5 users, load average: 1.22, 1.02, 0.91
这里需要注意的是:load average这个输出值,这三个值的大小一般不能大于系统CPU的个数,例如,本输出中系统有8个CPU,如果load average的三个值长期大于8时,说明CPU很繁忙,负载很高,可能会影响系统性能,但是偶尔大于8时,倒不用担心,一般不会影响系统性能。相反,如果load average的输出值小于CPU的个数,则表示CPU还有空闲的时间片,比如本例中的输出,CPU是非常空闲的。
2. CPU性能评估
(1)利用vmstat命令监控系统CPU
该命令可以显示关于系统各种资源之间相关性能的简要信息,这里我们主要用它来看CPU一个负载情况。
下面是vmstat命令在某个系统的输出结果:
[root@node1 ~]# vmstat 2 3
procs -----------memory---------- ---swap-- -----io---- --system-- -----cpu------
r b swpd free buff cache si so bi bo in cs us sy id wa st
0 0 0 162240 8304 67032 0 0 13 21 1007 23 0 1 98 0 0
0 0 0 162240 8304 67032 0 0 1 0 1010 20 0 1 100 0 0
0 0 0 162240 8304 67032 0 0 1 1 1009 18 0 1 99 0 0
l Procs
r列表示运行和等待cpu时间片的进程数,这个值如果长期大于系统CPU的个数,说明CPU不足,需要增加CPU。
b列表示在等待资源的进程数,比如正在等待I/O、或者内存交换等。
l Cpu
us列显示了用户进程消耗的CPU 时间百分比。us的值比较高时,说明用户进程消耗的cpu时间多,但是如果长期大于50%,就需要考虑优化程序或算法。
sy列显示了内核进程消耗的CPU时间百分比。Sy的值较高时,说明内核消耗的CPU资源很多。
根据经验,us+sy的参考值为80%,如果us+sy大于 80%说明可能存在CPU资源不足。
(2)利用sar命令监控系统CPU
sar功能很强大,可以对系统的每个方面进行单独的统计,但是使用sar命令会增加系统开销,不过这些开销是可以评估的,对系统的统计结果不会有很大影响。
下面是sar命令对某个系统的CPU统计输出:
[root@webserver ~]# sar -u 3 5
Linux 2.6.9-42.ELsmp (webserver) 11/28/2008 _i686_ (8 CPU)
11:41:24 AM CPU %user %nice %system %iowait %steal %idle
11:41:27 AM all 0.88 0.00 0.29 0.00 0.00 98.83
11:41:30 AM all 0.13 0.00 0.17 0.21 0.00 99.50
11:41:33 AM all 0.04 0.00 0.04 0.00 0.00 99.92
11:41:36 AM all 90.08 0.00 0.13 0.16 0.00 9.63
11:41:39 AM all 0.38 0.00 0.17 0.04 0.00 99.41
Average: all 0.34 0.00 0.16 0.05 0.00 99.45
对上面每项的输出解释如下:
l %user列显示了用户进程消耗的CPU 时间百分比。
l %nice列显示了运行正常进程所消耗的CPU 时间百分比。
l %system列显示了系统进程消耗的CPU时间百分比。
l %iowait列显示了IO等待所占用的CPU时间百分比
l %steal列显示了在内存相对紧张的环境下pagein强制对不同的页面进行的steal操作 。
l %idle列显示了CPU处在空闲状态的时间百分比。
问题
1.你是否遇到过系统CPU整体利用率不高,而应用缓慢的现象?
在一个多CPU的系统中,如果程序使用了单线程,会出现这么一个现象,CPU的整体使用率不高,但是系统应用却响应缓慢,这可能是由于程序使用单线程的原因,单线程只使用一个CPU,导致这个CPU占用率为100%,无法处理其它请求,而其它的CPU却闲置,这就导致了整体CPU使用率不高,而应用缓慢现象的发生。
3. 内存性能评估
(1)利用free指令监控内存
free是监控linux内存使用状况最常用的指令,看下面的一个输出:
[root@webserver ~]# free -m
total used free shared buffers cached
Mem: 8111 7185 926 0 243 6299
-/+ buffers/cache: 643 7468
Swap: 8189 0 8189
一般有这样一个经验公式:应用程序可用内存/系统物理内存>70%时,表示系统内存资源非常充足,不影响系统性能,应用程序可用内存/系统物理内存<20%时,表示系统内存资源紧缺,需要增加系统内存,20%<应用程序可用内存/系统物理内存<70%时,表示系统内存资源基本能满足应用需求,暂时不影响系统性能。
3.内存性能评估
(1)利用free指令监控内存
free是监控linux内存使用状况最常用的指令,看下面的一个输出:
[root@webserver ~]# free -m
total used free shared buffers cached
Mem: 8111 7185 926 0 243 6299
-/+ buffers/cache: 643 7468
Swap: 8189 0 8189
一般有这样一个经验公式:应用程序可用内存/系统物理内存>70%时,表示系统内存资源非常充足,不影响系统性能,应用程序可用内存/系统物理内存<20%时,表示系统内存资源紧缺,需要增加系统内存,20%<应用程序可用内存/系统物理内存<70%时,表示系统内存资源基本能满足应用需求,暂时不影响系统性能。
(2)利用vmstat命令监控内存
[root@node1 ~]# vmstat 2 3
procs -----------memory---------- ---swap-- -----io---- --system-- -----cpu------
r b swpd free buff cache si so bi bo in cs us sy id wa st
0 0 0 162240 8304 67032 0 0 13 21 1007 23 0 1 98 0 0
0 0 0 162240 8304 67032 0 0 1 0 1010 20 0 1 100 0 0
0 0 0 162240 8304 67032 0 0 1 1 1009 18 0 1 99 0 0
l memory
swpd列表示切换到内存交换区的内存数量(以k为单位)。如果swpd的值不为0,或者比较大,只要si、so的值长期为0,这种情况下一般不用担心,不会影响系统性能。
free列表示当前空闲的物理内存数量(以k为单位)
buff列表示buffers cache的内存数量,一般对块设备的读写才需要缓冲。
cache列表示page cached的内存数量,一般作为文件系统cached,频繁访问的文件都会被cached,如果cache值较大,说明cached的文件数较多,如果此时IO中bi比较小,说明文件系统效率比较好。
l swap
si列表示由磁盘调入内存,也就是内存进入内存交换区的数量。
so列表示由内存调入磁盘,也就是内存交换区进入内存的数量。
一般情况下,si、so的值都为0,如果si、so的值长期不为0,则表示系统内存不足。需要增加系统内存。
4.磁盘I/O性能评估
(1)磁盘存储基础
l 熟悉RAID存储方式,可以根据应用的不同,选择不同的RAID方式。
l 尽可能用内存的读写代替直接磁盘I/O,使频繁访问的文件或数据放入内存中进行操作处理,因为内存读写操作比直接磁盘读写的效率要高千倍。
l 将经常进行读写的文件与长期不变的文件独立出来,分别放置到不同的磁盘设备上。
l 对于写操作频繁的数据,可以考虑使用裸设备代替文件系统。
使用裸设备的优点有:
ü 数据可以直接读写,不需要经过操作系统级的缓存,节省了内存资源,避免了内存资源争用。
ü 避免了文件系统级的维护开销,比如文件系统需要维护超级块、I-node等。
ü 避免了操作系统的cache预读功能,减少了I/O请求。
使用裸设备的缺点是:
ü 数据管理、空间管理不灵活,需要很专业的人来操作。
http://fastdfs.googlecode.com/files/FastDFS_v1.22.tar.gz
http://fastdfs.googlecode.com/files/FastDFS_v1.23.tar.gz
http://fastdfs.googlecode.com/files/FastDFS_v1.24.tar.gz
目前有这样一个需求,新来了一个同事,需要给他这200多台服务器的权限,我怎么分配给他呢,不可能登陆到每一台服务器然后给他建个登陆账户吧,这时候我们就需要用到NIS了,来集中管理和认证权限,网络信息服务(NIS)是集中控制几个系统管理数据库的网络用品。NIS简化了UNIX和LINUX桌面客户的管理工作,客户端利用它可以使用中心服务器的管理文件。桌面系统的用户无需建立他们自己的/etc/passwd,他们只简单的使用维护在NIS服务器的文件即可。
1首先确认关闭iptables
# /etc/init.d/iptables stop
# chkconfig iptables off
2安装ypbind包,确认你联网执行下面的命令
# yum install -y ypserv ypbind portmap yp-tools
3修改/etx/sysconfig/network加入以下配置
NISDOMAIN="nis-cmdi.com"
4 修改/etc/yp.conf加入下面的设置
ypserv 192.168.1.212
在配置文件 /etc/hosts 中添加 NIS 服务器的记录
192.168.1.212 nis-cmdi.com
修改/etc/ypserv.conf
把最后一行的注释去掉,也就是说通配所有的主机,加入所有的域,map所有的东西,none是表示没有安全性,这一项其实是个安全选项,可以通过这个控制权限
* : * : * : none
为了安全,你可以这样写:
127.0.0.0/255.255.255.0 : * : * : none
192.168.1.0/255.255.255.0 : * : * : none
* : * : * : deny
5 接下来执行下面的命令
# /etc/init.d/portmap start
# /etc/init.d/yppasswdd start
# /etc/init.d/ypserv start
# chkconfig portmap on
# chkconfig yppasswdd on
# chkconfig ypserv on
6 修改/var/yp/Makefile将
all: passwd group hosts rpc services netid protocols mail
修改为
all: passwd group hosts rpc services netid protocols mail auto.master auto.home
7 接下来添加我们需要的用户
#groupadd system
# useradd -g system -u 601 -d /home/rhome/liyi liyi
# useradd -g system -u 601 -d /home/rhome/lier lier
8 接下来,执行:
# /usr/lib/yp/ypinit -m
按下Ctrl-D和回答Y执行下一步操作
# cd /var/yp
# make
(以上两步为初始化数据库)
9 现在执行
authconfig --update --enablenis
如果这步出现问题,请重新执行上面步骤8
11 如果9顺利通过,现在执行下面的命令,并可以看到用户口令表
# getent passwd
通过NFS共享/home/rhome目录
1 首先禁用SeLinux,修改/etc/sysconfig/selinux
SELINUX=disabled
重启服务器
2 修改/etc/exports加入
/home/rhome 192.168.1.0/24(async,rw,no_root_squash)
3 然后重启NFS
# /etc/init.d/nfs restart
4 现在在本机执行exportfs命令,应该可以看到下面的输出
/home/rhome
如果执行完以上步骤一切正常,那么NIS服务器的NFS就配置好了
客户端的配置
1 在客户端上安装ypbind软件包
# yum install -y ypbind yp-tools
2 执行system-config-authentication.选择Enable NIS然后点Configure按照我们刚才的设置填入NIS 域和NIS服务器的地址然后点OK确定,并退出
3 现在在客户端执行
getent passwd
应该可以输出服务器上的口令表
4 修改/etc/auto.master,注释掉所有以前的配置,加入
/home/rhome auto.home
6 创建/etc/auto.home文件,加入
* -rw,soft,intr 192.168.1.212:/home/rhome/&
7 现在执行
# ypcat auto.master应该可以看到
auto.home
8 重启ypbind服务
# /etc/init.d/ypbind restart
# chkconfig ypbind on
9重启autofs
# /etc/init.d/autofs restart
# chkconfig autofs on
到此,应该可以用服务器上用户名和密码登录客户端的系统了
转自互联网
possible SYN flooding on port 80. Sending cookies 开了syncookie之后经常会看到这个报警信息“possible SYN flooding on port 80. Sending cookies”
首先我们看看sysctl.txt对syncookie选项的注释:
tcp_syncookies - BOOLEAN
Only valid when the kernel was compiled with CONFIG_SYNCOOKIES
Send out syncookies when the syn backlog queue of a socket
overflows. This is to prevent against the common ’syn flood attack’
Default: FALSE
Note, that syncookies is fallback facility.
It MUST NOT be used to help highly loaded servers to stand
against legal connection rate. If you see synflood warnings
in your logs, but investigation shows that they occur
because of overload with legal connections, you should tune
another parameters until this warning disappear.
See: tcp_max_syn_backlog, tcp_synack_retries, tcp_abort_on_overflow.
如果系统资源还没问题的话,应该多数不是受到syn flood,而是并发连接过多。
上面的说明建议我们修改tcp_max_syn_backlog, tcp_synack_retries, tcp_abort_on_overflow.
net.ipv4.tcp_max_syn_backlog = 20480
net.ipv4.tcp_synack_retries = 1
net.ipv4.tcp_syn_retries = 1
net.core.netdev_max_backlog = 1000
net.core.netdev_max_backlog = 300000 # number of unprocessed input packets before kernel starts dropping them, default 300
tcp_max_syn_backlog - INTEGER
Maximal number of remembered connection requests, which are
still did not receive an acknowledgment from connecting client.
Default value is 1024 for systems with more than 128Mb of memory,
and 128 for low memory machines. If server suffers of overload,
try to increase this number.
tcp_abort_on_overflow - BOOLEAN
If listening service is too slow to accept new connections,
reset them. Default state is FALSE. It means that if overflow
occurred due to a burst, connection will recover. Enable this
option _only_ if you are really sure that listening daemon
cannot be tuned to accept connections faster. Enabling this
option can harm clients of your server. 这个我们还是别设置了。
最后,设置了net.ipv4.tcp_max_syn_backlog = 819200之后,没有报那个syncookie警告了。
最近一个项目部署在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
修改/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
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。
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"
发现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/
在安装系统时,每个分区下都会有一个 lost+found ,而且这个目录的创建时间是和该分区创建的时间一样的。所以如果想知道你的系统是什么时候安装的,只需要看这个目录的创建时间即可。
通常情况下,我们分区都会把 /boot 单独分一个区,所以你只要查看 /boot/lost+found 这个目录的创建时间即可。比较简单的方法是:
ls -ld /boot/lost+found
如果你的/boot/不是单独分区,那么就看一下 / 下的吧
ls -ld /lost+found
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的私钥,想移植到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估算方法进行了探讨,并结合工程实际总结出了一套计算服务器处理能力的通用估算方法。
关键词 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期 作者:周承诚)
远程登录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 ,将其去掉重启就可以了。
之前安装公司服务器的时候,默认安装了图形界面,第二天公司工程师跟我说不能安装图形界面,需要把服务器全部重装,
之后一直有疑问,安装了图形界面就不能卸载掉吗?因为在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
- «
- 1
- ...
- 30
- 31
- 32
- 33
- 34
- 35
- 36
- ...
- 63
- »