Netperf是一种网络
性能测试工具,主要针对据域TCP和UDP的传输。Netperf根据应用的不同可以进行不同模式的网络性能测试,既批量数据传输模式(bulk data transfer)请求/应答模式(request/response)模式。Netperf测试结果所反映的是一个系统能够以多快速度向另外一台系统发送数据,以及另外一个系统能够以多快速度接收数据。
Netperf工具以client/server方式
工作。
server端是netserver,用来侦听来自client端的连接。client端是netperf,用来行server发起网络测试。在client和server之间,首先建立一个控制连接,传输有关测试配置信息,以及测试结果;在控制连接建立并传输了测试配置信息以后,client与server之间回再建立一个测试连接,用来来回传递特殊的流量模式,以测试网络的性能。
1.下载
下载地址:http://www.netperf.org/netperf/
这个网站上有最新版本的下载连接和操作手册
例如下载的文件为:netperf-2.6.0.tar
2.解压
$ tar -xvf netperf-2.6.0.tar
3.安装
$ cd netperf-2.6.0
$ ./configure
$ make
$ make install
4.首先在服务器端运行
$ netserver
5.运行客户端
$ netperf -H host -l testlen -t testname
命令参数:
-H host: 指定远端运行netserver的server ip地址
-l testlen: 指定测试的时间长度(秒)
-t testname: 指定进行的测试类型,包括TCP_STREAM, UDP_STREAM, TCP_RR,UDP_RR, TCP_CRR
6. 测试案例
(1)服务器端执行:(ip: 10.10.11.208)
[root@phpc1 netperf-2.6.0]# netserver Starting netserver with host 'IN(6)ADDR_ANY' port '12865' and family AF_UNSPEC [root@phpc1 netperf-2.6.0]# |
(2)客户端运行
[root@phpc2 netperf-2.6.0]# netperf -H 10.10.11.208 -l 60 -t TCP_STREAM MIGRATED TCP STREAM TEST from 0.0.0.0 (0.0.0.0) port 0 AF_INET to 10.10.11.208 () port 0 AF_INET Recv Send Send Socket Socket Message Elapsed Size Size Size Time Throughput bytes bytes bytes secs. 10^6bits/sec 87380 16384 16384 60.03 [root@phpc2 netperf-2.6.0]# netperf -H 10.10.11.208 -l 60 -t TCP_STREAM MIGRATED TCP STREAM TEST from 0.0.0.0 (0.0.0.0) port 0 AF_INET to 10.10.11.208 () port 0 AF_INET Recv Send Send Socket Socket Message Elapsed Size Size Size Time Throughput bytes bytes bytes secs. 10^6bits/sec 87380 16384 16384 60.03 937.04 |
从netperf是输出结果中我们可以知道以下信息:
(a) 远端系统(即server)使用大小为87380字节的socket接受缓冲区
(b)本地系统(即client)使用大小为16384字节的socket发送缓冲区
(c)向远端系统发送的测试分组大小为16384字节
(d)测试经历的时间为60秒
(e)吞吐量的测试结果为 937.04 *10^6bits/sec
在缺省情况下,netperf向发送的测试分组大小为本地系统所使用的socket发送缓冲大小
TCP_STREAM方式下与测试相关的局部参数如下所示:
-s size:设置本地系统的socket发送与接收缓冲大小
-S size: 设置远端系统的socket发送与接收缓冲大小
-m size: 设置本地系统发送测试分组的大小
-M size: 设置远端系统接收测试分组的大小
-D: 对本地与远端系统的socket设置TCP_NODELAY选项I/O测试。
其他网络性能测试工具如 dbs, iperf, pathrate, nettest, netlogger, tcptrace, ntop.
7.网络性能介绍
(1)TCP网络性能
由于TCP协议能够提供端到端的可靠传输,因此被大量的网络应用程序使用。但是,可靠性的建立是要付出代价的。TCP协议保证可靠性的措施,如建立并维护连接,控制数据有序的传输等都会消耗一定的网络带宽。
netperf可以模拟以下三种不同的tcp流量模式:
(a)单个TCP连接,批量(bulk)传输大量数据。
(b)单个TCP连接,client请求/server应答的方式
(c)多个TCP连接,每个链接中一对请求/应答方式
(2)UDP网络性能
UDP没有建立连接的负担,但是udp不能保证传输的可靠性,所以使用udp的应用需要自行跟踪美国发出的分组,并重发丢失的分组,netperf可以模拟两种udp流量模式:
(a) 从client到server的单向批量传输
(b)请求/应答方式
由于udp传输的不可靠性,在使用netperf是需要确保发送的缓冲区大小不大于接收缓冲区大小,否则数据丢失,netperf将给出错误的结果。因此,对于接收到分组的统计不一定准确,需要结合发送分组的统计综合得出结论。
概述:2012年8月,我参与了某市某某集团ERP业务信息系统平台的建设
工作,该信息系统项目为该集团公司旗下的的几个分公司实现企业业务信息资源整合,统一调配,合理优化,加速分公司之间的业务处理流程,提高企业的整体经济效益。该系统信息项目分为6个子系统和一个系统集成硬件设备的安装和线缆的铺设工程。6个子系统分别是:原料采集加工处理信息系统,半成品生产制造信息系统,成品生产制造信息系统,物流运输管理系统,市场销售业务信息系统,企业业务资源调配和决策系统。该信息系统项目计划投资500万元,建设工期为12个月。
由于系统建设项目牵扯的单位多,业务大,是对集团公司的整个生产链进行统一管理,系统能否可靠,稳定的运行,直接关系到该公司的经济效益和广大员工的业务效率,要求系统必须有很强的质量保障,基于这些原因,我把
质量管理作为本系统建设项目的重点之一。本文结合作者的实际经验,以质量管理为例,分别从制定项目质量管理计划,系统集成硬件设备及安装施工现场的质量保障,项目软件系统阶段性评审和审计,项目软件
系统测试这四个方面进行了质量管理的论述。由于采用了有效的质量管理,该项目于2013年8月,成功上线,达到了客户的满意,得到了公司的认可。
正文:随着我国经济社会的快速发展,企业规模越来越大,企业业务联系越来越紧密,原有的分散独立的企业资源分配方式已无法适应企业集团化的需要,为此如何整合企业资源优化,统一调配,提高企业资源的利用率,降低生产成本,提高经济效益,已成为摆在企业面前迫在眉睫的问题。因此,开发一个ERP企业资源信息系统平台就应运而生。2012年8月,我有幸参加了某市某集团ERP企业资源信息系统平台的建设工作,并出任项目经理,该系统实现集团公司旗下的几个分公司的资源整合,统一分配,达到合理配置企业资源的功能。该系统信息项目分为6个子系统和一个系统集成硬件设备的安装和线缆的铺设工程。6个子系统分别是:原料采集加工处理信息系统,半成品生产制造信息系统,成品生产制造信息系统,物流运输管理系统,市场销售业务信息系统,企业业务资源调配和决策系统。该系统计划投资500万元,建设工期为12个月。该系统采用C/S架构,后台
数据库采用sel service 2012,中间件技术采用CORBA,用
java语言开发。由于系统建设项目牵扯的单位多,业务大,是对集团公司的整个生产链进行统一管理,系统能否可靠,稳定的运行,直接关系到该公司的经济效益和广大员工的业务效率,要求系统必须有很强的质量保障,基于这些原因,我把项目的质量管理作为本系统项目建设的重点之一。我从硬件设备的安装施工及各种线缆的铺设,制定项目质量管理计划,进行阶段性评审和审计,进行
软件测试这四个方面加强了质量管理工作。
一,制定项目质量管理计划。
实践证明,质量出自于计划,而非出自于检查。鉴于此,在项目初期,我就制定了切实可行的项目质量管理计划。质量计划包括识别与项目相关的质量标准,以及质量保证过程中实施的方法,策略,步骤。我利用成本效益分析法,针对本项目的特点,分析出质量成本与效益的平衡点,得出为做质量管理工作所需的人员,设备,材料,为此我向公司申请质量管理专业人员,成立了专门负责质量监督控制的负责小组,并对该小组的工作职责具体分工。我加大该质量小组的职权力度,决不允许不听从质量小组意见的现象发生。小组对项目质量负责,我又对小组负责。遇有重大特殊的质量问题,我将召开全体项目组成员和质量管理小组会议,大家集体讨论,共同解决。对于所需的质量检测仪器,我根据项目需要,尽可能地使用成熟,稳定的测试设备,对于没有的设备,与甲方协商,争取从甲方处获得。根据本项目的特点,我把国家标准《计算机软件质量保证计划规范》作为本次项目的质量的评定准则。另外我与质量监控小组共同确定质量保证工作实施的细则计划,就是到什么时期,采用什么标准,何时做质量监控以及质量监控的工作流程,本次项目质量管理可分为三个阶段:第一阶段:硬件设备和各种线缆的检测。第二阶段:硬件设备安装及管线铺设的现场监控。第三阶段:软件系统的质量保障。在本次项目中我把软件系统的质量保障做为重中之重。
二,系统集成硬件设备及安装施工现场的质量保障。
硬件设备的正常运行,质量的优劣以及施工现场的规范施工是信息系统项目的成功上线的物理基础。为此,我对照设备采购清单,采购合同,产品出厂合格证,检查是否有不合格的产品,对于设备的性能指标,我采取同类设备抽样的办法,进行检测。对于核心数据库服务器的设备,我搭载模拟真实系统运行环境,试运行,实时记录运转时的各种数据,性能指标。对于不合格的产品,我依照采购合同,与供方联系,以求尽快解决。对于硬件施工现场的隐秘工程,我设立旁站,派遣质量检测人员驻扎在工地,实时跟踪,依据国家施工规范,随时进行检测记载,并拍摄现场照片。
三,针对软件开发的每一个过程和环节,利用阶段性评审和质量审计技术,对软件质量进行有效的监管。 软件开发分为需求分析,概要设计,详细设段,编码,测试等几个阶段。因为需求分析定义阶段是软件质量的基础,为此我全程参与,实时跟踪需求定义的整个过程,在需求分析阶段完成时,我邀请软件质量的评定专家组,进行评审验证,对于提出的建议,积极修改需求规格说明书。在软件结构设计阶段,我把软件的复用性,健壮性,稳定性,计,编码,测试,试运行,交付质量使用等几个阶段。我们要求在每个阶段的过程和结束时,依据国家标准《软件质量评定准则》,组织公司人员,邀请客户代表,进行阶段性评审,对于不能达到阶段性的指标产品,开发决不能进行到下一个开发阶段中去。我重点实时监测需求分析阶作为软件结构的评定标准,我采用类比法,以同行业的优秀软件的结构做样板,寻找差距,弥补不足,马上整改。在详细设计和编码阶段,我要求采用成熟,通用,易懂的算法,在编码风格上采用规范书写,不能凭借个人兴趣和爱好,随意发挥扩展功能模块,排除了无效劳动。
四.加强软件测试,确保测试结果符合设计和产品规格说明书,以期达到客户的满意。
软件测试是保障软件质量的重要方法,通常软件测试包括单元测试,系统测试,集成测的试三个步骤。我们在软件需求阶段就把测试计划考虑进去,并邀请重要客户参与到测试工作当中来,对于软件测试过程严格按照测试计划的程序具体实施,对于测试结果不但要满足设计要求,更要达到的用户的满意,得到他们的认可。对于测试结果达不到要求的,我运用趋势图分析法,分析错误出现的频率,找出错误多的测试结果,再组织人力运用鱼骨图技术查找原因,确定造成错误的地方,错误找到后,对照需求规格说明书和软件设计结构图,积极整改。这种方法,在一个测试点上反复运用多次,就能使错误率迅速降低到零,保障了软件质量,并能快速进行到下一个开发阶段中去。其次,我组织项目组进行模拟适应性环境测试,适应性环境测试就是软件在不同应用环境和平台上的测试,它可以增加软件应用的通用性和易操作性。在得到用户的操作环境后,我搭建了windows和linux两种操作系统平台,该系统在这两种操作平台下都能正常运行,才算是适应性环境测试通过。最后是软件的界面设计测试,这种测试结果的好差直接影响终端用户的业务效率和操作习惯,是用户最为关心的,为此,我邀请重要客户参与到该项测试中来,让用户多提供一些日常操作党中可能出现的一些错误操作,我们对这些错误操作总结,提炼,并最终形成测试用例,实践证明,这种方法有效的减少了错误发生的概率。
结束语:通过近一年的全体项目组成员的共同努力,该项目于2013年8月成功上线,在得到甲方认可和公司领导赞誉的同时,我深刻的体会到,质量是一个信息系统项目的基石,项目的任何其他目标都是在它的基础之上建设的,没有强有力的质量做保障,项目的其他目标实现终究是空中楼阁。
一、服务器端以字节码的形式向客户端发送数据:
1、服务器端默认采用本地编码发送数据。
2、设置客户端编码:
2.1 设置响应头:response.setHeader("Content-Type","text/html;charset=UTF-8");
2.2 在页面中加入如下:<meta http-equiv='Content-Type' content='text/html;charset=UTF-8'>
2.3
向客户端发送:
OutputStream out = response.getOutputStream();
out.write("<meta http-equiv='Content-Type' content='text/html;charset=UTF-8'>");
2.4
调用response.setContentType("text/html;charset=UTF-8");
二、服务器端以字符的形式向客户端发送数据:
1、服务器端默认采用iso-8859-1编码。
2、解决乱码问题:
2.1 response.setCharacterEncoding("UTF-8");
response.setHeader("Content-Type","text/html;charset=UTF-8");
2.2 response.setContentType("text/html;charset=UTF-8");//该方法等同以上的两个方法
java最明显的一个优势就是它的内存管理机制。你只需简单创建对象,java的垃圾回收机制负责分配和释放内存。然而情况并不像想像的那么简单,因为在Java应用中经常发生内存泄漏。
本教程演示了什么是内存泄漏,为什么会发生内存泄漏以及如何预防内存泄漏。
什么是内存泄漏?
定义:如果对象在应用中不再被使用,但由于它们在其他地方被引用,垃圾回收却不能移除它们(这样就造成了很多内存不能释放,从而导致内存溢出的现象。译注)。
要理解这一定义,我们需要理解内存中对象的状态。下图说明了那些是未使用,那些是未引用。
从图中可以看到被引用对象和未引用对象(的范围)。未引用对象可以被垃圾回收机制回收,而被引用对象不能被垃圾回收机制回收。未引用对象当然是没有使用的,因为没有其他对象引用了它。然而未使用对象并不都是未引用的。某些未使用的对象仍然被其他地方引用!这就是内存泄漏起因。
为什么会发生内存泄漏?
让我们来下面的这个例子,看看为什么会发生内存泄漏。在如下例子中,A对象引用了B对象。A的生命周期(t1-t4)比B的生命周期(t2-t3)要长的多,当B不再在应用中被使用,A仍然持有对B的引用。这样一来,垃圾回收机制不能从内存中移除B。这很有可能导致内存溢出问题,因为如果其他很多对象像A一样,那么内存中将会有很多不能被回收的对象,这将消耗大量内存空间。
也有可能的情况是B持有了大量对其他对象的引用。这些被B引用的对象同样不会被回收掉。所有这些未使用的对象将会消耗宝贵的内存空间。
如何预防内存泄漏?
如下是一些预防内存泄漏的快速技巧:
1、留意集合类,比如HashMap,ArrayList等等,因为他们是内存泄漏经常发生的地方。当它们被声明为静态对象时,他们的生命周期就和应用的生命周期一样长。
2、留意事件监听器和回调。如果一个类注册了监听器,但当该类不再被使用后没有注销监听器,可能会发生内存泄漏。
3、“如果一个类管理自己的内存,程序员应该警惕内存泄漏。”[1],很多时候对象中的指向其他对象成员变量需要设置成null(才能被回收)。
一个小测验:为什么JDK6中的substring()方法会引发内存泄漏?
要回答这个问题,你可能需要查看JDK6和7中substring()的源码。
什么是索引
拿汉语字典的目录页(索引)打比方:正如汉语字典中的汉字按页存放一样,
SQL Server中的数据记录也是按页存放的,每页容量一般为4K 。为了加快查找的速度,汉语字(词)典一般都有按拼音、笔画、偏旁部首等排序的目录(索引),我们可以选择按拼音或笔画查找方式,快速查找到需要的字(词)。
同理,SQL Server允许用户在表中创建索引,指定按某列预先排序,从而大大提高查询速度。
* SQL Server中的数据也是按页( 4KB )存放
* 索引:是SQL Server编排数据的内部方法。它为SQL Server提供一种方法来编排查询数据 。
* 索引页:
数据库中存储索引的数据页;索引页类似于汉语字(词)典中按拼音或笔画排序的目录页。
* 索引的作用:通过使用索引,可以大大提高数据库的检索速度,改善数据库性能。
索引类型
* 唯一索引:唯一索引不允许两行具有相同的索引值
* 主键索引:为表定义一个主键将自动创建主键索引,主键索引是唯一索引的特殊类型。主键索引要求主键中的每个值是唯一的,并且不能为空
* 聚集索引(Clustered):表中各行的物理顺序与键值的逻辑(索引)顺序相同,每个表只能有一个
* 非聚集索引(Non-clustered):非聚集索引指定表的逻辑顺序。数据存储在一个位置,索引存储在另一个位置,索引中包含指向数据存储位置的指针。可以有多个,小于249个
索引类型:再次用汉语字典打比方,希望大家能够明白聚集索引和非聚集索引这两个概念。
唯一索引:
唯一索引不允许两行具有相同的索引值。
如果现有数据中存在重复的键值,则大多数数据库都不允许将新创建的唯一索引与表一起保存。当新数据将使表中的键值重复时,数据库也拒绝接受此数据。例如,如果在stuInfo表中的学员员身份证号(stuID) 列上创建了唯一索引,则所有学员的身份证号不能重复。
提示:创建了唯一约束,将自动创建唯一索引。尽管唯一索引有助于找到信息,但为了获得最佳性能,建议使用主键约束或唯一约束。
主键索引:
在数据库关系图中为表定义一个主键将自动创建主键索引,主键索引是唯一索引的特殊类型。主键索引要求主键中的每个值是唯一的。当在查询中使用主键索引时,它还允许快速访问数据。
聚集索引(clustered index)
在聚集索引中,表中各行的物理顺序与键值的逻辑(索引)顺序相同。表只能包含一个聚集索引。例如:汉语字(词)典默认按拼音排序编排字典中的每页页码。拼音字母a,b,c,d……x,y,z就是索引的逻辑顺序,而页码1,2,3……就是物理顺序。默认按拼音排序的字典,其索引顺序和逻辑顺序是一致的。即拼音顺序较后的字(词)对应的页码也较大。如拼音“ha”对应的字(词)页码就比拼音“ba” 对应的字(词)页码靠后。
非聚集索引(Non-clustered)
如果不是聚集索引,表中各行的物理顺序与键值的逻辑顺序不匹配。聚集索引比非聚集索引(nonclustered index)有更快的数据访问速度。例如,按笔画排序的索引就是非聚集索引,“1”画的字(词)对应的页码可能比“3”画的字(词)对应的页码大(靠后)。
提示:SQL Server中,一个表只能创建1个聚集索引,多个非聚集索引。设置某列为主键,该列就默认为聚集索引
如何创建索引
使用T-SQL语句创建索引的语法:
CREATE [UNIQUE] [CLUSTERED|NONCLUSTERED] INDEX index_name ON table_name (column_name…) [WITH FILLFACTOR=x] |
* UNIQUE表示唯一索引,可选
* CLUSTERED、NONCLUSTERED表示聚集索引还是非聚集索引,可选
* FILLFACTOR表示填充因子,指定一个0到100之间的值,该值指示索引页填满的空间所占的百分比
在stuMarks表的writtenExam列创建索引:
USE stuDB GO IF EXISTS (SELECT name FROM sysindexes WHERE name = 'IX_writtenExam') DROP INDEX stuMarks.IX_writtenExam /*--笔试列创建非聚集索引:填充因子为30%--*/ CREATE NONCLUSTERED INDEX IX_writtenExam ON stuMarks(writtenExam) WITH FILLFACTOR= 30 GO /*-----指定按索引 IX_writtenExam 查询----*/ SELECT * FROM stuMarks (INDEX=IX_writtenExam) WHERE writtenExam BETWEEN 60 AND 90 |
虽然我们可以指定SQL Server按哪个索引进行数据查询,但一般不需要我们人工指定。SQL Server将会根据我们创建的索引,自动优化查询 。
索引的优缺点
* 优点
–加快访问速度
–加强行的唯一性
* 缺点
–带索引的表在数据库中需要更多的存储空间
–操纵数据的命令需要更长的处理时间,因为它们需要对索引进行更新
创建索引的指导原则
* 请按照下列标准选择建立索引的列。
–该列用于频繁搜索
–该列用于对数据进行排序
* 请不要使用下面的列创建索引:
–列中仅包含几个不同的值。
–表中仅包含几行。为小型表创建索引可能不太划算,因为SQL Server在索引中搜索数据所花的时间比在表中逐行搜索所花的时间更长
<connectionStrings> <add name="NorthwindConnectionString" connectionString="Data Source=localhost;Initial Catalog=Northwind;Persist Security Info=True;User ID=sa;Password=sa" providerName="System.Data.SqlClient" /> </connectionStrings> |
【2】在后台中,引入程序集或者手工引入:using System.Web.Configuration;
【3】后台写入的方法为:
protected void Page_Load(object sender, EventArgs e) { //从web.config中引用连接字符串 string strConn = WebConfigurationManager.ConnectionStrings["NorthwindConnectionString"].ConnectionString; SqlConnection myConn = new SqlConnection(strConn); string strSQL = "SELECT Top 5 CategoryID,CategoryName,Description From Categories"; SqlCommand myCommand = new SqlCommand(strSQL, myConn); myConn.Open(); myGv.DataSource = myCommand.ExecuteReader(); myGv.DataBind(); myConn.Close(); } |
ORACLE 11G 新部署的环境,刚使用GOLDENGATE 进行完数据迁移和同步,发现ORACLE 自动收集的任务时间
并不是设定的晚上22点启动。检查AIX 时区发现设置的CDT ,
数据库的TIMEZONE 是CST6CDT,与系统管理
员沟通,他答复是AIX 6.1 没有北京时间这个时区了,所以没有按照手册特别设置,现在只能进行时区更改为
Asia/Shanghai,OS更改完成后GOLDENGATE / ORACLE /AIX 全部重启。
问题接踵而至
1.GOLDENGATE 所有的TRAIL FILE 时间都被更改导致REPLICATE ABEND
解决方法:
ALTER REPLICAT REP* , extseqno xxx ,extrba xxx
2.ORACLE 中发现数据库的TIMEZONE 还需是原来的,统计信息自动收集任务时间还是异常
解决方法:
数据库时区更改参考:http://space.itpub.net/175005/viewspace-618100
确认业务表没有使用TIMESTAMP WITH LOCAL TIME ZONE 类型的
ALTER DATABASE SET TIME_ZONE='+08:00';
Completed: ALTER DATABASE SET TIME_ZONE='+08:00'
Wed Oct 09 09:37:10 2013
重启数据库
检查更改是否成功
select * from database_properties where property_name = 'DBTIMEZONE';
检查 scheduler default_timezone 的设置
9:40:01 SQL> set verify off 9:40:08 SQL> variable v_value varchar2(1000); 9:40:20 SQL> begin 2 dbms_scheduler.get_scheduler_attribute(attribute => 'default_timezone',value => :v_value); 3 end; 4 / PL/SQL procedure successfully completed Executed in 0.016 seconds v_value --------- CST6CDT 发现依然是更改前的TZ CST6CDT 进行更改: 9:44:12 SQL> BEGIN 2 DBMS_SCHEDULER.SET_SCHEDULER_ATTRIBUTE( 3 ATTRIBUTE => 'default_timezone', 4 VALUE => 'Asia/Shanghai'); 5 END; 6 7 / PL/SQL procedure successfully completed Executed in 0.031 seconds |
一个小问题折腾了半天。
我在 oracle 10g R2 for
windows 7 64bit 的安装时候发现了这个问题。经过验证可以解决问题。
这算是oracle的一个小bug 在检查
操作系统版本的时候 windows-6.1 没有维护进去。
找到oracle安装文件中的 “oraparam.ini” 文件在里面 合适位置添加以下一段 (里面有一段和以下文字类似就是6.1换成6.0 放在6.0的后面即可)
[Windows-6.1-required] #Minimum display colours for OUI to run MIN_DISPLAY_COLORS=256 #Minimum CPU speed required for OUI #CPU=300 [Windows-6.1-optional] |
另外 在本文件的中有一段 5.0,6.0 的字样在后面把 6.1 加上即可
在安装过程中oracle 在检查操作系统时 操作系统检查有问题,提示未在此操作系统中验证过。用户确认即可继续安装
64位的机器不用严格按照oracle 在下载时候对版本的要求去挑选合适的oracl版本 在 64位windows7 中 直接安装oracle官网的 oracle 10g R2 for Microsoft windows 64bit 即可
直接面向windows 64位 不具体到那个版本的操作系统。也是ok的 但是也会出现这样的问题 6.1版本检查不通过。如上操作即可通过验证。
Linux:CentOS release 5.5 (cat /etc/redhat-release)
LR:9.5
二、由于待测Linux系统被阉割过的,缺少必要的包,在网络上也参考了一些文档,下面是本人的使用心得
1. 准备如下的rpm包
rsh-0.17-14.i386.rpm
rsh-server-0.17-14.i386.rpm
rstatd-3.03-1.i386.rpm(网上的文档都是tar.gz 包,需要编译,麻烦还需要安装gcc的包)
setuptool-1.19.2-1.el5.centos.i386.rpm
安装的命令为:rpm -ivh rpm包的名称
以上4个包安装完成后,重新启动服务器。
启动rstatd服务报错的解决方法[root@psp-server ~]# service rstatd start
Cannot register service: RPC: Unable to receive; errno = Connection refused
解决方法为,安装portmap-4.0-65.2.2.1.i386.rpm包,并开启该服务
[root@psp-server ~]# service portmap start
2.允许rstatd、portmap、rlogin、rsh、rexec这5个服务开机运行
[root@psp-server ~]# setup
在弹出的对话框窗口中选择系统服务-->选中rstatd、portmap、rlogin、rsh、rexec服务,保存
3.重新启动linux服务器,或手动启动以上的5个服务。
4.查看rpc.rstatd是否启动成功
5.OK,先可以用LR连接LINUX服务器了。
最近新采购的一批机器,由于intel cpu体系架构的改变,新机器的系统需要升级,选择了CentOS 6.2系统。
1 在新机器上将MR业务开启后,导致整个集群都反应很慢,运行的job几乎都被卡住;通过ganglia监控发现,机器的system cpu超过30%,机器几乎是满负载的情况。
原因分析:
RHEL 6.2和6.3系统中包含了一个新特性,被称为“transparent hugepage compaction”,它和Hadoop负载不能很好的交互。相比于其他的
操作系统,这导致了严重的性能损失。Red Hat会在未来的更新中解决此问题。
解决方法:把如下命令增加到开机启动中。
echo always > /sys/kernel/mm/redhat_transparent_hugepage/enabled echo never > /sys/kernel/mm/redhat_transparent_hugepage/defrag |
2 解决上述问题,把MR业务开启一段时间后,经常出现某个task卡死的情况,job会一直hang住,查看TT日志
2013-08-2006:12:31,050INFO org.apache.hadoop.mapred.TaskLogsTruncater: Initializing logs' truncater withmapRetainSize=-1and reduceRetainSize=-1 2013-08-2006:12:31,053FATAL org.apache.hadoop.mapred.Child: Error running child : java.lang.OutOfMemoryError: unable to create newnative thread at java.lang.Thread.start0(Native Method) at java.lang.Thread.start(Thread.java:640) at org.apache.hadoop.mapred.ReduceTask$ReduceCopier.fetchOutputs(ReduceTask.java:1932) at org.apache.hadoop.mapred.ReduceTask.run(ReduceTask.java:382) at org.apache.hadoop.mapred.Child$4.run(Child.java:270) at java.security.AccessController.doPrivileged(Native Method) at javax.security.auth.Subject.doAs(Subject.java:396) at org.apache.hadoop.security.UserGroupInformation.doAs(UserGroupInformation.java:1157) at org.apache.hadoop.mapred.Child.main(Child.java:264) |
从上面的
日志看,是OOM的错误,不能创建新的进程。但查看该TT机器,内存充足,应该不是内存导致的问题。
后来又check了环境的配置,发现在以前RHEL 5.4系统中生效的ulimit的nproc限制,在新系统中并没有生效(可以通过ulimit -u查看)。google后得知,6.2系统中修改了这一配置,新的配置需要在里/etc/security/limits.d/90-nproc.conf设置生效。
[hdfs@hd0447-sw40 ~]$ cat /etc/security/limits.d/90-nproc.conf # Default limit fornumber of user's processes to prevent # accidental fork bombs. # See rhbz #432903for reasoning. * soft nproc 1024 |
在处理hadoop前期环境的时候,发现有些机器在没有业务的情况下机器负载很高的情况,这里也记录一下。
1. 通过top命令发现plymouthd进程cpu负载达到近100%
解决方法:打开 /boot/grub/menu.lst , 去掉 “rhgb quiet”这两个参数 ,然后重启
2.power_saving死锁引起的高负载
解决方法:
方法1:rmmod acpi_pad,重启机器,机器将不支持电源节能;
方法2:在BIOS中开启ACPI支持,重启,更新内核至2.6.32-358.2.1.el6.x86_64;
方法3:在BIOS里设置禁用;
方法4:要将驱动程序列入黑名单,编辑 /etc/modprobe.d/blacklist.conf,然后添加blacklist acpi_pad。
开始使用方法1,解决了大多数机器power_saving死锁的问题,有些机器的整体负载还是会保持在10%以上,查看后发现还有部分power_saving进程,采用方法4,问题得以解决