web性能调优和tomcat优化

2 篇文章 0 订阅

一、web性能调优

1 、浏览器发起一个请求,如果本地有缓存会请求本地缓存文件,没有缓存会请求服务器。所以这里就有一个优化点:需要把常用的css和js文件独立成独立的静态文件,一次加载以后,后面直接加载本地缓存。编写jsp页面时,尽量将css和js代码提取出来,写成单独的文件。另外IE浏览器内核在请求图片下载时会限制一次只能同时从同一个域名下载两个文件,这里又有优化点,分散图片存储的域名。使用静态文件,减少计算的同时增加本地缓存的使用,减少请求。静态化是常见的一种优化手段。

2、 浏览器真实发起请求服务器时,首先被请求到的是服务器的操作系统层,那么服务器的操作系统对外界连接的响应能力,就是要调优的地方。所以提高服务器的性能,调优系统内核是一个必要的手段,最常用的就是修改服务器的最大文件句柄数和最大连接数。

3、系统层把连接交给你的server做处理的时候,server的配置这个时候也相当重要。对server的配置调优提高性能。比如tomcat在处理静态文件上的能力比apache要差很多,所以在apache+tomcat的负载均衡就能很好地进行动静请求的分离,提高响应速度。又比如tomcat新版本里的NIO技术又比普通IO性能好上不少。

4、server把数据交给你的程序处理的时候,你得对你的程序的执行效率非常清楚,避免多重循环,优秀的算法、合理使用集合、建立线程池等等都是考验你的编程能力。必须保证每个响应都在尽量短的时间内执行成功。还有比较常见的一些对不常更新的数据使用内存缓存来加快访问。内存永远是最快的。这方面的优化也有非常多的事情可以去做,而且跟你的编程息Memcached、EhCache等很多开源的缓存组件都是很好的选择。

5、程序处理的时候,数据库连接池的使用,连接池大小的配置,连接池性能的优化,sql语句的优化等等都可能影响你的程序的效率。一个好的业务逻辑设计,可能极大提升你的程序性能。对数据库操作的调优也是一个需要调优的地方。多用户并发下,更多地要仔细考虑程序在数据操作的并发上的问题。比如对象的锁,数据库的锁,事务,等待处理的数据的排队方式等等。你需要知道读写分离的好处,应该隔离不同操作间的等待。另外并发带来的锁等待问题需要极大地关注,往往不是在内存就是在数据库里,发生着大量并发锁等待,导致你的程序缓慢。

6 、数据传递到数据库进行保存和查询的时候,必须对数据库本身的哪些配置可以优化从而带来性能的提升。比如mysql不同引擎带来的锁表和行级锁会对性能产生影响。在内存足够大的时候,增大mysql的内存缓存也可以提升它的响应速度。

7、server把数据返回给用户,那么返回的数据的大小又同样影响着结果的显示速度。尽量减小数据的大小,比如开启apache的gzip就能极大压缩常见的静态文件,可以保证用户更快完出数据的下载,同时节省你的服务器使用带宽。

8、用户下次访问的时候,同样面临一个优化的方式:是利用上次跟服务器建立好的连接再次通讯呢?还是重现跟服务器建立连接?这就是在server端做配置要考虑的一个问题,在低并发下,保持跟用户建立的socket连接,并且让用户通过这个连接来多次访问,可以提高速度。但是在高并发下,大量这种建立好的连接就意味着其他用户失去了进来的机会。所以这个是需要权衡的。一般情况下最好可以预估一下一个用户可能在多长的时间里连续发起多少个请求,然后可以把用户断开,把资源用来服务其他用户。

9、ajax技术也是在减少大请求,使用更小的局部数据更新来代替整个页面的刷新,加快用户的响应速度,结合静态化能完美改善性能。

10、当然,服务器的硬件配置和网络带宽也会带来性能调优的地方,消除服务器各部件之间的瓶颈和提高网络带宽等都是提高性能的不错选择。


二、tomcat优化

1、JVM参数调优

修改“%TOMCAT_HOME%\bin\catalina.sh”文件,在文件开头增加如下设置:JAVA_OPTS=’-Xms256m-Xmx512m’
各参数详解:
-Xms:设置JVM初始内存大小(默认是物理内存的1/64)
-Xmx:设置JVM可以使用的最大内存(默认是物理内存的1/4,建议:物理内存80%)
-Xmn:设置JVM最小内存(128-256m就够了,一般不设置)
默认空余堆内存小于 40%时,JVM就会增大堆直到-Xmx的最大限制;空余堆内存大于70%时,JVM会减少堆直到-Xms的最小限制。因此服务器一般设置-Xms、 -Xmx相等以避免在每次GC 后调整堆的大小。
在较大型的应用项目中,默认的内存是不够的,有可能导致系统无法运行。常见的问题是报Tomcat内存溢出错误“java.lang.OutOfMemoryError: Java heap space”,从而导致客户端显示500错误。

-XX:PermSize :为JVM启动时Perm的内存大小
-XX:MaxPermSize :为最大可占用的Perm内存大小(默认为32M)
-XX:MaxNewSize,默认为16M
PermGen space的全称是
Permanent Generation space,是指内存的永久保存区域,这块内存主要是被JVM存放Class和Meta信息的,Class在被Loader时就会被放到PermGen space中,它和存放类实例(Instance)的Heap区域不同,GC(Garbage Collection)不会在主程序运行期对PermGen space进行清理,所以如果你的应用中有很多CLASS的话,就很可能出现“java.lang.OutOfMemoryError: PermGen space”错误。

2、修改tomcat让其支持NIO
修改前:
protocol="HTTP/1.1"  connectionTimeout="20000" redirectPort="8443"/>
修改成支持NIO的类型,配置如下 :
protocol="org.apache.coyote.http11.Http11NioProtocol " connectionTimeout="20000"  />

3、并发数设置
默认的tomcat配置,并发测试时,可能50个USER上去就需要排队等待了。
可修改:
maxThreads="500"                         //最大线程数
minSpareThreads="100"               //初始化时创建的线程数
maxSpareThreads="500"             //一旦线程超过这个值,Tomcat会关闭不需要的socket线程
acceptCount="700"                       //指定当所有可以使用的处理请求的线程数都被使用时,可以放到
connectionTimeout="20000"//处理队列中的请求数,超过这个数的请求将不予处理
redirectPort="8443" />
或者
name="tomcatThreadPool"  namePrefix="catalina-exec-"  maxThreads="500"minSpareThreads="400" />
executor="tomcatThreadPool"  port="80" protocol="HTTP/1.1" connectionTimeout="20000"  enableLookups="false"
redirectPort="8443" URIEncoding="UTF-8"  acceptCount="1000" />

4、Java虚拟机调优
应该选择SUN的JVM,在满足项目需要的前提下,
尽量选用版本较高的JVM,一般来说高版本产品在速度和效率上比低版本会有改进。 JDK1.4比JDK1.3性能提高了近10%-20%,JDK1.5比JDK1.4性能提高25%-75%。

5、禁用DNS查询
设置enableLookups="false"
enableLookups="false" redirectPort="8443"URIEncoding="UTF-8" acceptCount="1000" />
当web应用程序向要记录客户端的信息时,它也会记录客户端的IP地址或者通过域名服务器查找机器名转换为IP地址。DNS查询需要占用网络, 并且包括可能从很多很远的服务器或者不起作用的服务器上去获取对应的IP的过程,这样会消耗一定的时间。为了消除DNS查询对性能的影响我们可以关闭 DNS查询,方式是修改server.xml文件中的enableLookups参数值为false

6、设置解决乱码问题
URIEncoding="UTF-8" acceptCount="1000"/>














  • 1
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

sg_0504

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值