2010年3月 的存档

前言: 上个星期对平台开发系统进行了首次压测,在晶晶的压力测试帮助下,终于将IBM R61的本本跑出了2100用户的好成绩(Tomcat6+Oracle11g+PlatForm+Ubuntu8.10)! 另,不过细节过程可能忘记了,晶晶表介意,大概吧事实讲述清楚,好不!!:) 楔子: 压力测试,通过对tomcat6的逐步优化,终于让IBM R61压测用户跑上了2100人,有点极限的样子,单在整个测试过程中除了系统cpu资源使用100%之外,硬盘响应几乎为无,测试完成后整个系统保持稳定,无崩溃迹象,这说明本本局限了在线压力的继续提高(毕竟不是服务器),呵呵,好了,不介绍了,开始讲述,故事正在开始…… 第一章 三百已是才能尽,五百哪敢去高攀 初始开始压力测试时,定的目标为3000户在线并发的目标(虽然最后也没有成,但还是比较欣慰的,毕竟是用本本,不是在主业Web服务器上测试), 作为适应性的第一测试,只将用户压力定在了500。当晶晶同学将压力并发测试系统准备好,并完成第一轮测试时,都绝望了–通过用户数仅仅为280人左右,晶晶同学告诉我“估计你的本本300用户已经是极限了”。于是,在他的要求下从200开始测试,我无奈的同意了……^>^||| 第二次两百用户的测试非常顺利的通过,各环节耗时除登录耗时占用比例交大外,其余各阶段都非常合格。测试过程中,系统cpu资源只提升了5%不到,硬盘无消耗,本本上的各项操作也非常正常,无任何延时现象,数据库链接监控发现最大链接数没有突破10。这,这……,这就有点不正常了,压测过程系统过于平静、清闲了点。开始和“王老五”分析数据库原因,突然一拍脑袋,这正是“机关算尽太聪明、反害了卿卿(R61)性命……” 第二章 王老五随语惊梦人,鱼财主死抠算线程 “老五呀,数据库线程怎么一点点压力都没有,R61也是,整个压测跟玩似的清闲,这很不对劲”,我沮丧的对着王老五说着。王老五撇了我一眼,有转头紧盯着oracle资源监控系统,然后就是点头和“是呀”的回答。我是有点抓狂了,也跑到王老五的笔记本前看着那些代表数据资源的绿条条,心里就纳闷了,怎么就不红呢,红了就好了……。正在我想的时候,王老五随口来了句“链接数相当少,线程压力几乎没有嘛”。惊,绝对的惊,出了一脑门子的汗,…… “对,线程,……,嗯,这和哪里关联着呢,到底这扇门通向哪里??”我不停的想着,考虑着,眼前已经出现了门,我正在不停的拽那个把手,那个门后面应该就是“我所需要的……” 对了,Ajax Web 访问时线程访问频繁,tomcat执行线程为单线程响应方式,数据链接数极低(不到10),说明线程池使用效率也同样低,过多用户多处于等待执行线程的状态,这也刚好验证了晶晶的测试失败原因–链接超时。那到底是什么导致tomcat线程池使用能力不足呢?这时,我突然想到,Ubuntu系统是一个基于 Linux的系统,一般的系统用户都是被强制受限的,比如,单线程打开文件最大数、用户最大线程数、打开文件最大尺寸、最大内存使用限制……等等。可是普通Ubuntu用户组用户是不允许使用调整命令“ulimit”;而且Ubuntu的root用户是被锁死的;sudo命令执行,结果是shell中没有 “ulimit”命令(sudo: ulimit: command not found)。 这正是“门前已扫五升雪,瓦上还聚三升霜……” 第三章 鱼头大海捞虾米,布图怯怯启Root 1、创建root用户: sudo passwd root 注:根据提示设置root用户密码(创建root用户) 2、允许root用户登录 点击 System (系统)-> Preferences(系统管理) -> Login Window(登陆窗口)菜单,并切换到 Security(安全) 选项页,然后选中其下的“Allow local system administrator login”(允许本地系统管理员登陆)选项。 3、禁用Root用户 sudo passwd -l root————————————另类改变方法: 1.设置好root密码! $ sudo [...]

2010年3月23日23:26 | 评论关闭
分类: 技术文档
标签:

使用Tomcat,如果对它的配置不能深入地理解,在实际工作中可能会遇到一些问题。 当安装完Tomcat 6.0以后,默认的conf/server.xml文件,去掉注释以后,如下所示: 下面基于这样一个基础的配置并结合Tomcat的体系结构,来说明各个配置元素的含义。关于Tomcat的体系结构,可以参考文档docs/architecture/overview.html。 元素 元素表示的是整个Catalina Servlet容器,在conf/server.xml中是最顶层的配置元素,也就是说,使用Tomcat WEB服务器是基于这样一个容器的,能够容纳各种资源、连接、虚拟主机等等。当然,如果你实现了org.apache.catalina.Server接口,也可以在server.xml中配置元素,是启动容器为自己实现的,这需要在元素中配置指定的属性。 实现org.apache.catalina.Server接口,必须支持该接口定义的三个属性:className、port、shutdown。 className属性 指明实现org.apache.catalina.Server接口的类,如果在元素中没有指定className的值,就会默认指定className=”org.apache.catalina.core.StandardServer”,使用标准的实现类。 port属性 指定TCP/IP端口号,通过该端口号可以与Tomcat服务器进行通信,比如执行shutdown命令来关闭Tomcat服务器。 shutdown属性 通过为sutdown指定一个字符串,可以通过发送该字符串作为消息来关闭Tomcat服务器。 对于上面的配置文件中,元素配置如下: 显然省略了className属性,使用默认的org.apache.catalina.core.StandardServer,端口号为8005,通过建立的TCP/IP连接,可以使用命令向端口8085发送消息,来影响Tomcat服务器的行为,例如关闭服务器。shutdown=”SHUTDOWN”,如果Tomcat在启动以后,接收到端口8085发送的消息为SHUTDOWN,则开始执行关闭的动作。 元素 元素是元素的顶层配置,从元素的含义来看,元素表示存活于一个顶层的Catalina Servlet容器中的组件,其中,一个元素中可以配置一个或者多个元素。作为组件,应该通过某种方式来提供一定的服务。 其中,作为一个服务组件,必须实现org.apache.catalina.Service 接口。默认,Tomcat实现了一个标准的服务器组件,具体实现类为org.apache.catalina.core.StandardService。一个元素可以配置两个属性: className属性 默认使用Tomcat实现了标准服务组件,当然可以定义自己的服务组件,并在元素中配置指定。 name属性 用来标识在元素中唯一的一个服务组件。 从上面的配置文件可以看到,元素的配置块: 元素 元素表示连接器,是容器与外部进行交互信的桥梁。该元素定义的连接器是在一个元素表示的组件中,一个元素中可以配置多个连接器元素,表示提供服务的组件通过不同的连接方式与容器外部进行通信,从而完成一定的操作。 通过上面配置可以看到,配置了两个连接器,一个是基于HTTP协议的连接器,一个是基于AJP协议的连接器。 上面元素属性包括port、protocol、redirectPort、connectionTimeout,分别表示端口号、通信协议、重定向端口号、连接超时时间。 元素可以配置的属性非常多,这是由连接的特点所决定的,可以对连接的状态进行详细设置。可以参考Tomcat文档docs/config/http.html。 元素 元素表示Catalina Servlet容器中针对元素定义的服务,执行请求处理的一个引擎。当然作为这样一个引擎,它可能将通过元素配置的不同连接方式,接收容器外部请求的数据,经过处理,将处理后的数据,再通过连接器传送给容器外部执行请求的载体,例如用户。 可见,存在一个或者多个连接器绑定在一个引擎上,相互协调完成特定服务定义的功能。 元素可以配置的属性有: className属性 className属性指定引擎的实现类,可以实现自定义引擎,但是必须实现org.apache.catalina.Engine 接口,Tomcat同样实现了默认的标准引擎,通过org.apache.catalina.core.StandardEngine类定义的。 defaultHost属性 指定默认主机。在一个元素中可以配置多个虚拟主机,每个虚拟主机都通过name属性来识别,但是在元素中必须指定一个在其中存在的主机配置,通过defaultHost来默认指定。 name属性 用来标识该引擎的逻辑名称。 通过从上面的配置可以看到,name=”Catalina”,defaultHost=”localhost”,而且localhost已经在元素中存在的元素中配置。没有指定className属性,表示默认使用org.apache.catalina.core.StandardEngine引擎。 元素 元素表示对虚拟主机进行配置,可以在一个元素中配置多个元素,也就是指定多个虚拟主机。虚拟主机就是通过域名这样的逻辑名,来定位到物理存在的主机,或者主机上的目录。 同样,如果想自定义主机实现类,可以实现org.apache.catalina.Host 接口,否则使用默认的标准主机实现org.apache.catalina.core.StandardHost类。 上面对元素的配置如下: 属性说明如下: className属性 指定主机实现类。这里使用默认的标准主机,可以省略。 name属性 虚拟主机名称,也就是一个逻辑域名标识符,例如localhost,如果连接器配置元素指定了HTTP协议和8085端口,则可以通过浏览器使用前缀http://localhost:8085来进行通信;如果你将本地IP地址127.0.0.1绑定到任意一个域名,例如www.shirdrn.org上,可以通过浏览器使用前缀http://www.shirdrn.org:8080来与容器进行本地交互。 [...]

2010年3月23日23:25 | 评论关闭
分类: 技术文档
标签:

Linux下配置jdk+tomcat 操作系统 Redhat as4 所需软件包 jdk-6u4-linux-i586-rpm.bin apache-tomcat-6.0.16.tar.gz 注意:选择用什么包的时候要注意,jdk包最好选择较高版本,否则tomcat可能无法启动 以本文为例,安装tomcat6.0和5.0时,如果用的是jdk1.4版本则tomcat无法启动,而用jdk1.5之后的版本就可以 1、配置环境 字符集、时区配置 1. 设定系统语言环境:/etc/sysconfig/i18n为zh_CN.GBK #vi /etc/sysconfig/i18n LANG=”zh_CN.GBK” SUPPORTED=”zh_CN.GBK:zh:zh_CN.GB2312:zh:zh_CN.UTF-8:zh_CN:zh:en_US.UTF-8:en_US:en” SYSFONT=”latarcyrheb-sun16″ 2. 修改字符集设置:/etc/profile里面添加NLS_LANG设置 #vi /etc/profile export NLS_LANG=’SIMPLIFIED CHINESE_CHINA’.ZHS16GBK 3. 检查服务器的时区与时间是否为正确时区:China standard Time(CST) 中国标准时间。 #cat /etc/sysconfig/clock 看是否有以下3行显示 ZONE=”Asia/Shanghai” UTC=false ARC=false 如果不是的话则需要做下面的修改步骤(或者执行timeconfig): #mv /etc/localtime /etc/localtime.bak # ln -sf /usr/share/zoneinfo/Asia/Shanghai /etc/localtime 将时区文件(/etc/sysconfig/clock)更改为以下内容: ZONE=Asia/Shanghai UTC=false ARC=false 2、安装JDK 修改jdk权限为可执行 #chmod 755 jdk-6u4-linux-i586-rpm.bin #./jdk-6u4-linux-i586-rpm.bin [...]

2010年3月23日23:25 | 评论关闭
分类: 技术文档
标签:

Tomcat性能调优方案 一、操作系统调优 对于操作系统优化来说,是尽可能的增大可使用的内存容量、提高CPU的频率,保证文件系统的读写速率等。经过压力测试验证,在并发连接很多的情况下,CPU的处理能力越强,系统运行速度越快。。 【适用场景】 任何项目。 二、Java虚拟机调优 应该选择SUN的JVM,在满足项目需要的前提下,尽量选用版本较高的JVM,一般来说高版本产品在速度和效率上比低版本会有改进。 JDK1.4比JDK1.3性能提高了近10%-20%,JDK1.5比JDK1.4性能提高25%-75%。 因此对性能要求较高的情况推荐使用 JDK1.6。 【适用场景】 任何项目。 三、Apache集成Tomcat Web服务器专门处理HTTP请求,应用服务器是通过很多协议为应用提供商业逻辑。虽然Tomcat也可以作web服务器,但其处理静态html的速度比不上Apache,且其作为web服务器的功能远不如Apache,因此把Apache和Tomcat集成起来,将html和Jsp的功能部分进行明确分工,让Tomcat只处理Jsp部分,其他的由Apache,IIS等web服务器去处理,由此大大提高Tomcat的运行效率。 如果一个项目中大量使用了静态页面、大量的图片等,并有有较大的访问量,推荐使用Apache集成Tomcat的方式来提高系统的整体性能。 Apache和Tomcat的整合有三种方式,分别是JK、http_proxy和ajp_proxy.其中JK方式是最常见的方式,JK本身有两个版本分别是1和2,目前1最新版本是1.2.8,而版本2早已经废弃了。http_proxy是利用Apache自带的mod_proxy模块使用代理技术来连接Tomcat。Ajp_proxy连接方式其实跟http_proxy方式一样,都是由mod_proxy所提供的功能。只需要把配置中的 http://换成ajp://,同时连接的是Tomcat的AJP Connector所在的端口。 相对于JK的连接方式,后两种在配置上比较简单的,灵活性方面也一点都不逊色。但就稳定性而言不像JK这样久经考验,所以建议采用JK的连接方式。 Apache+JK+Tomcat配置: 使用到的两个配置文件分别是:httpd.conf和mod_jk.conf。其中httpd.conf是Apache服务器的配置文件,用来加载JK模块以及指定JK配置文件信息。mod_jk.conf是到Tomcat服务器的连接定义文件。 【部署步骤】 1.安装Apache服务器 2.部署Tomcat 3.将mod_jk.so拷贝到modules目录下面 4.修改httpd.conf和mod_jk.conf 【适用场景】 大量使用静态页面的应用系统。 四、Apache和Tomcat集群 对于并发要求很高的系统,我们需要采取负载均衡的方式来分担Tomcat服务器的压力。负载均衡实现大概有四种:第一是通过DNS,但只能简单的实现轮流分配,不能处理故障;第二是基于MS IIS,windows 2003 server本身就带了负载均衡服务;第三是硬件方式,通过交换机功能或专门的负载均衡设备来实现;第四种是软件的方式,通过一台负载均衡服务器进行,上面安装软件。使用Apache Httpd Server做负载均衡器,Tomcat集群节点使用Tomcat就可以做到上述第四种方式,这种方式比较灵活,成本相对比较低,另外一个很大的优点就是可以根据应用情况和服务器的情况做一些灵活的配置。所以推荐使用Apache+Tomcat集群来实现负载均衡。 采用Tomcat集群可以最大程度的发挥服务器的性能,可以在配置较高的服务器上部署多个Tomcat,也可以在多台服务器上分别部署 Tomcat,Apache和Tomcat整合的方式还是JK方式。经过验证,系统对大用户量使用的响应方面,Apache+3Tomccat集群> Apache+2Tomcat集群 > Apache集成Tomcat > 单个Tomcat。并且采用Apache+多Tomcat集群的部署方式时,如果一个Tomcat出现宕机,系统可以继续使用,所以在硬件系统性能足够优越的情况下,需要尽量发挥软件的性能,可以采用增加Tomcat集群的方式。 Apache+Tomcat集群的方式使用到得配置文件有httpd.conf、mod_jk.conf、workers.properties。其中 mod_jk.conf是对JK信息的配置,包括JK的路径等,workers.properties配置文件是对Tomcat服务器的连接定义文件。 Apache需要调整运行参数,这样才能构建一个适合相应网络环境的web服务。其中可进行的优化配置如下: 1. 设置MPM(Multi Processing Modules多道处理模块)。ThreadPerChild,这个参数用于设置每个进程的线程数,在Windows环境下默认值是64,最大值是 1920,建议设置为100-500之间,服务器性能高的话值大一些,反之小一些。MaxRequestPerChild表示每个子进程能够处理的最大请求数。这个参数的值更大程度上取决于服务器的内存,如果内存比较大的话可以设置为很大的参数,否则设置一个较小的值,建议值是3000. 2. 关闭DNS和名字解析 HostnameLookups off 3. [...]

2010年3月23日23:24 | 评论关闭
分类: 技术文档
标签:

Linux上: 在/usr/tomcat/bin/catalina.sh中加入 export JAVA_OPTS=’-Xms[初始化内存大小] -Xmx[可以使用最大内存]‘ 例如:export JAVA_OPTS=’-Xms256m -Xmx512m’ Windows上: 在catalina.bat里设置初始内存和最大内存: set CATALINA_OPTS=”-Xms30m -Xmx512m” 检查一下Catalina.bat文件,在每个“%_RUNJAVA%”后面都应该有“%CATALINA_OPTS%” 有的Catalina.bat文件在“%_RUNJAVA%”后面跟着“%JAVA_OPTS%”, 如果是这样,应该设置: set JAVA_OPTS=-Xms30m -Xmx512m 或者在每个“%_RUNJAVA%”后面加上“%CATALINA_OPTS%” ———————————— 如何设置Tomcat的JVM虚拟机内存大小 可以给Java虚拟机设置使用的内存,但是如果你的选择不对的话,虚拟机不会补偿。可通过命令行的方式改变虚拟机使用内存的大小。如下表所示有两个参数用来设置虚拟机使用内存的大小。 参数 描述 -Xms JVM初始化堆的大小 -Xmx JVM堆的最大值 这 两个值的大小一般根据需要进行设置。初始化堆的大小执行了虚拟机在启动时向系统申请的内存的大小。一般而言,这个参数不重要。但是有的应用程序在大负载的 情况下会急剧地占用更多的内存,此时这个参数就是显得非常重要,如果虚拟机启动时设置使用的内存比较小而在这种情况下有许多对象进行初始化,虚拟机就必须 重复地增加内存来满足使用。由于这种原因,我们一般把-Xms和-Xmx设为一样大,而堆的最大值受限于系统使用的物理内存。一般使用数据量较大的应用程 序会使用持久对象,内存使用有可能迅速地增长。当应用程序需要的内存超出堆的最大值时虚拟机就会提示内存溢出,并且导致应用服务崩溃。因此一般建议堆的最 大值设置为可用内存的最大值的80%。 Tomcat默认可以使用的内存为128MB,在较大型的应用项目中,这点内存是不够的,需要调大。 Windows下,在文件/bin/catalina.bat,Unix下,在文件/bin/catalina.sh的前面,增加如下设置: JAVA_OPTS=’-Xms【初始化内存大小】 -Xmx【可以使用的最大内存】’ 需要把这个两个参数值调大。例如: JAVA_OPTS=’-Xms256m -Xmx512m’ 表示初始化内存为256MB,可以使用的最大内存为512MB。 另 外需要考虑的是Java提供的垃圾回收机制。虚拟机的堆大小决定了虚拟机花费在收集垃圾上的时间和频度。收集垃圾可以接受的速度与应用有关,应该通过分析 实际的垃圾收集的时间和频率来调整。如果堆的大小很大,那么完全垃圾收集就会很慢,但是频度会降低。如果你把堆的大小和内存的需要一致,完全收集就很快, 但是会更加频繁。调整堆大小的的目的是最小化垃圾收集的时间,以在特定的时间内最大化处理客户的请求。在基准测试的时候,为保证最好的性能,要把堆的大小 设大,保证垃圾收集不在整个基准测试的过程中出现。 如果系统花费很多的时间收集垃圾,请减小堆大小。一次完全的垃圾收集应该不超过 3-5 秒。如果垃圾收集成为瓶颈,那么需要指定代的大小,检查垃圾收集的详细输出,研究 垃圾收集参数对性能的影响。一般说来,你应该使用物理内存的 80% 作为堆大小。当增加处理器时,记得增加内存,因为分配可以并行进行,而垃圾收集不是并行的。 Tomcat [...]

2010年3月23日23:23 | 评论关闭
分类: 技术文档
标签:

两个月以来围绕着谷歌搜索服务是否正式退出中国大陆的流言得到了官方确认。美国时间三月二十二日下午(中国大陆时间三月二十三日凌晨)搜索引擎巨人Google所在中国谷歌搜索服务正式关闭,www.google.cn将会被转接至www.google.com.hk,同时中国大陆用户可以选择使用英文,繁体中文或者简体中文来继续搜索。与此同时谷歌中国的其他业务运营正常包括Google Talk,Google Docs,Google Map,Google Code等。 要监察更多在中国可用的谷歌服务,请访问这个报告页面,在迁移的这段时间会每天更新以告知服务是否被关闭

2010年3月23日09:08 | 评论关闭
分类: 随想印象
标签:

现象:     右下角调节音量的喇叭图标不见了,并没有隐藏,打开控制面板–声音、语音和音频设备勾选<将音量图标放入任务栏>时,系统就提示“由于没有安装音量控制程序,无法在任务栏上显示音量控制,请使用控制面板中的添加删除程序来安装”。另:重新安装驱动等均不行。 解决方法: 方法一: 1. 将 Windows XP CD-ROM 插入到您计算机的 CD-ROM 或 DVD-ROM 驱动器中。在插入该 CD-ROM 的同时按住 Shift 键,以禁止光盘自动运行。 2. 单击开始,然后单击运行。 3. 在打开框中,键入 cmd,然后单击确定。 4. 在命令提示符处键入以下命令行,并在每一行结束时按 Enter 键,其中 CD-ROM 驱动器 是计算机中包含 Windows XP CD-ROM 的 CD-ROM 或 DVD-ROM 驱动器的驱动器号,而系统根目录 是 Windows 系统文件所在的路径和文件夹名称(通常是 C:\Windows): CD-ROM 驱动器: cd i386 展开 sndvol32.ex_ 系统根目录\system32\sndvol32.exe 例如,如果您计算机的 CD-ROM 驱动器是驱动器 E,并且包含 Windows [...]

2010年3月18日10:16 | 评论关闭
分类: 技术文档
标签:

1.从http://www.oracle.com/technology/software/tech/oci/instantclient/htdocs/winsoft.html中 Download Instant Client,Basic包下一个即可 2,在磁盘创建上目录,解压过去,比如解压到c:\oracleclient 3,创建目录c:\oracleclient\network\admin 4,创建文件tnsnames.ora 内容如下 oracledata = (DESCRIPTION = (ADDRESS_LIST = (ADDRESS = (PROTOCOL = TCP)(HOST = yourhostIp )(PORT = 1521)) ) (CONNECT_DATA = (SERVICE_NAME = yourSID ) ) ) 5,在环境变量中添加nls_lang=SIMPLIFIED CHINESE_CHINA.ZHS16GBK 6,设置pl/sql Developer的perference,主要填二个文本框 OCI Library:“c:\oracleclient\oci.dll”, Oracle_home: “c:\oracleclient\” 7,重启pl/sql developer, 输入用户名密码,以及tnsnames.ora设置的oracledata, Enjoy it.

2010年3月16日22:19 | 评论关闭
分类: 技术文档
标签:

Tomcat下的catalina.out文件很大,但是tomcat不像apache一样有log轮转小工具。只好又找了个小工具:cronolog。 1、下载:cronolog-1.6.2.tar.gz 2、安装 # tar zxvf cronolog-1.6.2.tar.gz # cd cronolog-1.6.2 # ./configure # make # make install 默认安装在/usr/local/sbin/下。 3、配置 在tomcat的bin目录的catalina.sh中找到2行: org.apache.catalina.startup.Bootstrap “$@” start \       >> “$CATALINA_BASE”/logs/catalina.out 2>&1 & 改成: org.apache.catalina.startup.Bootstrap “$@” start \       |/usr/local/sbin/cronolog “$CATALINA_BASE”/logs/catalina.%Y-%m-%d.out >> /dev/null 2>&1 & 重启tomcat,在logs下新生成的文件就是catalina.2008-01-29.out了,会每天自动轮转。

2010年3月11日15:18 | 评论关闭
分类: 技术文档
标签:

大概参数如下: 9英寸 wifi 3g 一次充电可渲染10000页 分辨率 1024 x 768 4G内存 3.5mm耳机插孔 支持PDF, TXT, MP3, ePUB文件 参考链接: http://www.engadget.com/2010/03/02/asus-makes-dr-900-e-reader-official/ http://www.engadget.com/2010/01/18/asus-dr-950-9-inch-touchscreen-e-reader-brings-text-to-speech-an/

2010年3月2日22:06 | 评论关闭
分类: 数码前沿
标签: