服务器性能优化.doc_第1页
服务器性能优化.doc_第2页
服务器性能优化.doc_第3页
服务器性能优化.doc_第4页
服务器性能优化.doc_第5页
已阅读5页,还剩15页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

性能优化解决方案大型门户网站系统10万人 一个小时内,会跟数据库10,数据库瓶颈,每个数据库最大连接数(socket)2000在某一段短暂时间内1万人,会跟数据库发生1万次交互,2000-8000【30秒】5000 300012000个用户很快就可以到达页面25000个访问页面比较慢33000提示超时/服务器出现例外解决方案:(1) 页面静态化 html解决方案:使用模板技术(velocity【9-10】、Freemarket【5-6】)!- - 记录页面访问次数-(2) 缓存技术(当数据更新较快,几秒钟更新一次,或者需要实时反映数据变化,或者页面有多种风格,不便于生成静态页面)A、 页面缓存(View,html代码)缺点:不能做到实时更新,优点:比二级缓存性能更高B、 二级缓存(mode/业务层,domain对象)优点:实时更新JPA二级缓存JPA关于hibernate的二级缓存配置方案:第一步:导入ehcache的ehcache.jar文件(hibernate中有)第二步:在persistence.xml中添加下面配置项:第三步:在实体类上面标注Cache,如Cache(region=”cn.itcast.bean.Person”,usage=CacheConcurrencyStrategy.READ_WRITE)第四步:在classpath下放入ehcache.xml,内容模板如下: 注意:节点中的name属性值要和Cache(region=”cn.itcast.bean.Person”)中的region相同ehcache.xml文件中各项属性说明如下:defaultCache节点为缺省的缓存策略maxElementsinMemory内存中最大允许存在的对象数量eternal设置缓存中的对象是否永远不过期overflowToDisk把溢出的对象存放到硬盘上(对于本例而言,第1001个对象将存放在硬盘上)timeToIdleSeconds 指定缓存对象多长时间就过期,过期的对象会被清除掉timeToLiveSeconds指定缓存对象总的存活时间diskPersistent当jvm结束时是否持久化对象diskExpiryThreadIntervalSeconds指定专门用于清除过期对象的监听线程的轮询时间3、数据源 连接池放一些链接对象每次都要跟数据库建立连接socket(client)-socket(数据库)用户库hibernate用户库hibernate-distribution-3.3.2.GAhibernate3.jarhibernate-distribution-3.3.2.GAlibrequiredantlr-2.7.6.jarhibernate-distribution-3.3.2.GAlibrequiredcommons-collections-3.1.jarhibernate-distribution-3.3.2.GAlibrequireddom4j-1.6.1.jarhibernate-distribution-3.3.2.GAlibrequiredjavassist-3.9.0.GA.jarhibernate-distribution-3.3.2.GAlibrequiredjta-1.1.jarhibernate-distribution-3.3.2.GAlibrequiredslf4j-api-1.5.8.jarhibernateAnnotation用户库hibernate-annotations-3.4.0.GAhibernate-annotations.jarhibernate-annotations-3.4.0.GAlibhibernate-commons-annotations.jarhibernate-annotations-3.4.0.GAlibejb3-persistence.jarmysql用户库mysql-connector-java-3.1.13-bin.jarslf4j用户库slf4j-1.5.8slf4j-nop-1.5.8.jarspring2.5.6用户库spring-framework-2.5.6distspring.jarspring-framework-2.5.6libjakarta-commonscommons-logging.jarspring-framework-2.5.6libjakarta-commonscommons-pool.jarspring-framework-2.5.6libjakarta-commonscommons-dbcp.jarspring-framework-2.5.6libj2eecommon-annotations.jarspring-framework-2.5.6libaspectjaspectjrt.jarspring-framework-2.5.6libaspectjaspectjweaver.jarspring-framework-2.5.6libcglibcglib-nodep-2.1_3.jarentityManager用户库hibernate-entitymanager-3.3.2.GAhibernate-entitymanager.jarc3p0用户库spring-framework-2.5.6libc3p0c3p0-.jarJPA解决方案:persistence.xml文件修改将persistence.xml中的黄色部分去掉添加灰色部分org.hibernate.ejb.HibernatePersistence beans.xml文件内容如下: pertiesdriverClass=org.gjt.mm.mysql.DriverjdbcUrl=jdbc:mysql:/localhost:3306/compass?useUnicode=true&characterEncoding=UTF-8user=rootpassword=bjsxtc3p0+Spring+hibernate+jpa实例程序目录用户库hibernate用户库hibernate-distribution-3.3.2.GAhibernate3.jarhibernate-distribution-3.3.2.GAlibrequiredantlr-2.7.6.jarhibernate-distribution-3.3.2.GAlibrequiredcommons-collections-3.1.jarhibernate-distribution-3.3.2.GAlibrequireddom4j-1.6.1.jarhibernate-distribution-3.3.2.GAlibrequiredjavassist-3.9.0.GA.jarhibernate-distribution-3.3.2.GAlibrequiredjta-1.1.jarhibernate-distribution-3.3.2.GAlibrequiredslf4j-api-1.5.8.jarhibernateAnnotation用户库hibernate-annotations-3.4.0.GAhibernate-annotations.jarhibernate-annotations-3.4.0.GAlibhibernate-commons-annotations.jarhibernate-annotations-3.4.0.GAlibejb3-persistence.jarmysql用户库mysql-connector-java-3.1.13-bin.jarslf4j用户库slf4j-1.5.8slf4j-nop-1.5.8.jarspring2.5.6用户库spring-framework-2.5.6distspring.jarspring-framework-2.5.6libjakarta-commonscommons-logging.jarspring-framework-2.5.6libjakarta-commonscommons-pool.jarspring-framework-2.5.6libjakarta-commonscommons-dbcp.jarspring-framework-2.5.6libj2eecommon-annotations.jarspring-framework-2.5.6libaspectjaspectjrt.jarspring-framework-2.5.6libaspectjaspectjweaver.jarspring-framework-2.5.6libcglibcglib-nodep-2.1_3.jarentityManager用户库hibernate-entitymanager-3.3.2.GAhibernate-entitymanager.jarc3p0用户库spring-framework-2.5.6libc3p0c3p0-.jar源代码Person.javapackage com.hibernate.bean;import javax.persistence.Column;import javax.persistence.Entity;import javax.persistence.Id;Entitypublic class Person private String id;private String name;public Person() public Person(String id, String name) this.id = id; = name;IdColumn(length = 20)public String getId() return id;public void setId(String id) this.id = id;Column(length = 20)public String getName() return name;public void setName(String name) = name;IPersonService.javapackage com.hibernate.service;import java.util.List;import com.hibernate.bean.Person;public interface IPersonService public void save(Person person);public void update(Person person);public void delete(String personid);public Person getPerson(String personid);public List getPersonList();PersonServiceBean.javapackage com.hibernate.service.impl;import java.util.List;import javax.persistence.EntityManager;import javax.persistence.PersistenceContext;import org.springframework.stereotype.Service;import org.springframework.transaction.annotation.Transactional;import com.hibernate.bean.Person;import com.hibernate.service.IPersonService;TransactionalServicepublic class PersonServiceBean implements IPersonService PersistenceContext private EntityManager em;public void save(Person person)em.persist(person);public void update(Person person)em.merge(person);public void delete(String personid)em.remove(em.getReference(Person.class, personid);public Person getPerson(String personid)return em.find(Person.class, personid);public List getPersonList()return em.createQuery(from Person ).getResultList();PersonTest.javapackage junit.test;import java.util.List;import org.junit.BeforeClass;import org.junit.Test;import org.springframework.context.ApplicationContext;import org.springframework.context.support.ClassPathXmlApplicationContext;import com.hibernate.bean.Person;import com.hibernate.service.IPersonService;public class PersonTest private static IPersonService personService;BeforeClasspublic static void setUpBeforeClass() throws Exception ApplicationContext applicationContext=new ClassPathXmlApplicationContext(beans.xml);personService=(IPersonService)applicationContext.getBean(personServiceBean);Testpublic void testSave() Person person=new Person(sno1,张三);personService.save(person);Testpublic void testUpdate() Person person=new Person(sno1,李四);personService.update(person);Testpublic void testDelete() personService.delete(sno1);Testpublic void testGetPerson() Person person=personService.getPerson(sno1);System.out.println(标识: +person.getId()+ 姓名:+person.getName();Testpublic void testGetPersonList() List persons=personService.getPersonList();for(Person person:persons)System.out.println(标识: +person.getId()+ 姓名:+person.getName();persistence.xmlorg.hibernate.ejb.HibernatePersistence!- 应用于MSSQL数据库 -!- 应用于mysql数据库 - beans.xml pertiesdriverClass=org.gjt.mm.mysql.DriverjdbcUrl=jdbc:mysql:/localhost:3306/compass?useUnicode=true&characterEncoding=UTF-8user=rootpassword=bjsxt4、SSI门户网站 大多使用 shtml技术SSI简介1.SSI(Server Side Include),通常称为“服务器包含”技术,使用了SSI技术的文件默认的后缀名为.shtml,SSI技术通过在html文件中加入了SSI指令让web服务器在输出标准HTML代码之前先解释SSI指令,并把解释完后的输出结果和HTML代码一起返回给客户端。 在大部分的项目中,我们使用了SSI的包含指令,他们的作用类似于JSP中的标签。既然JSP中的标签也提供了类似的功能,为何我们要使用SSI技术?主要是因为以下两点:1.首先SSI技术是通用技术,它不受限于运行环境,在Java、dotnet、CGI、ASP、PHP下都可以使用SSI技术。2.解释SSI指令的效率比解释JSP的效率快很多,引文Servlet规范提供了太多的功能,这些功能都需要servlet引擎-进行解释,所以效率比

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论