转载:http://blog.163.com/wm_at163/blog/static/13217349020117323538535/
高吞吐量关键指标:
1、并发访问量
2、在线数量
3、数量查询所占比重
此三点的直接体现:
1、数据状态保存
2、登陆状态信息保存
3、频繁的数据连接和存储
查询策略优化:
1、减少一次数据读取的条目可以较大改善和减轻服务器对CPU和内存的压力
2、减少一次数据读取的条目可以检查网络传输的压力,减短用户网络等待时间,提高相应速度
3、采用自定义分页,非常明显减少数据量,网络传输量,客户端缓存压力
4、数据库设计,避免多表遍历关联,考虑关键字索引,建立查询关键字,适当使用视图,尽量采用存储过程获取数据
数据缓存策略优化:
1、根据具体情况实现客户端视图缓存,会话缓存,应用缓存相结合的缓存策略
2、局部信息数据应用缓存
数据读取策略优化:
根据需要考虑结构集和数据流结合的访问方式
考虑对象连接池和数据连接池技术:
上面这个核心字多点说也就是:更多用户访问、更短响应时间、数据正确性。
优化的过程,我的想法就是先顺藤摸瓜,沿着一个请求发生的路径一路看过去,测量一下每个点上消耗的时间,会发现很多消耗时间多的点,都是值得你去优化的地方。然后再考虑在每个点上发生了拥挤导致响应时间变长了又该怎么解决。 当然也不需要一上来就全面优化,连影响最小的地方也不放过。先优化对你的性能影响最大的地方,效果是最好的,解决主要矛盾才是关键。不同的情况下,会有不同的优化方式。
简单地来看一个浏览器用户访问的流程:
浏览器->服务器->返回结果显示
这么简单地看,可能想得到的优化手段很少,常见的可能就是优化sql,加快数据库处理;加个缓存,加快返回;使用静态文件,减少动态计算。
细分开来看每一个步骤:
1 浏览器发起一个请求,如果本地有缓存会请求本地缓存文件,没有缓存会请求服务器。所以这里就有一个优化点:需要把常用的css和js文件独立成独立的静态文件,一次加载以后,后面直接加载本地缓存。另外IE浏览器内核在请求图片下载时会限制一次只能同时从同一个域名下载两个文件,这里又有优化点,分散图片存储的域名。使用静态文件,减少计算的同时增加本地缓存的使用,减少请求。静态化是常见的一种优化手段。
2 浏览器真实发起请求服务器时,首先被请求到的是服务器的操作系统层,那么服务器的操作系统对外界连接的响应能力,就是你需要了解的东西了。比如linux的内核参数的调整如何影响最大连接数,简单的一个例子就是在一个默认最大文件句柄数只有1024的服务器上,超过这个压力的时候,你如何优化你的程序,也都没有意义。入口只有那么窄,你得把口给扩开。熟悉服务器的性能,调优系统内核也是一个必要的手段。
3 系统层再把连接交给你的server做处理的时候,server的配置这个时候也相当重要。比如apache的最大连接数,tomcat的最大连接数。对server的配置调优很影响性能。比如tomcat在处理静态文件上的能力比apache要差很多,所以在apache+tomcat的负载均衡就能很好地进行动静请求的分离,提高响应速度。又比如tomcat新版本里的NIO技术又比普通IO性能好上不少。对server的了解,要保持跟踪最新动态。
4 server再把数据交给你的程序处理的时候,就到了考验你编程能力的时候了。你得对你的程序的执行效率非常清楚。必须保证每个响应都在尽量短的时间内执行成功。还有比较常见的一些对不常更新的数据使用内存缓存来加快访问。内存永远是最快的。这方面的优化也有非常非常多的事情可以去做,而且跟你的编程息息相关。
5 程序处理的时候,数据库连接池的使用,连接池大小的配置,连接池性能的优化,sql语句的优化,等等都可能影响你的程序的效率,这些地方永远是值得关注的。当然,优秀的算法在这个地方是少不了的。一个好的业务逻辑设计,可能极大提升你的程序性能。对数据库操作的调优也是一个永远的话题。
6 数据传递到数据库进行保存和查询的时候,你就必须对你的数据库的使用有所了解,知道数据库本身的哪些配置可以优化从而带来性能的提升。一个简单的例子就是在内存足够大的时候,增大mysql的内存缓存就可以极大提升它的响应速度。
7 现在server把数据返回给用户了,那么返回的数据的大小又同样影响着结果的显示速度。尽量减小数据的大小,比如开启apache的gzip就能极大压缩常见的静态文件,可以保证用户更快完出数据的下载,同时节省你的服务器使用带宽,老板一定会很高兴的。
8 用户下次访问的时候,同样面临一个优化的方式:是利用上次跟服务器建立好的连接再次通讯呢?还是重现跟服务器建立连接?这就是在server端做配置要考虑的一个问题,在低并发下,保持跟用户建立的socket连接,并且让用户通过这个连接来多次访问,可以提高速度。但是在高并发下,大量这种建立好的连接就意味着其他用户失去了进来的机会。所以这个是需要权衡的。一般情况下最好可以预估一下一个用户可能在多长的时间里连续发起多少个请求,然后可以把用户断开,把资源用来服务其他用户。
9 ajax技术也是在减少大请求,使用更小的局部数据更新来代替整个页面的刷新,加快用户的响应速度,结合静态化能完美改善性能。
这是对一个用户的访问的时候的考虑,然后就要考虑多用户情况的问题(有些是上面提到过的):
1 操作系统对多用户访问时的一些限制的优化
2 server的并发量的优化
3 多用户并发下,更多地要仔细考虑程序在数据操作的并发上的问题。比如对象的锁,数据库的锁,事务,等待处理的数据的排队方式等等。你需要知道读写分离的好处,应该隔离不同操作间的等待。另外并发带来的锁等待问题需要极大地关注,往往不是在内存就是在数据库里,发生着大量并发锁等待,导致你的程序缓慢。
4 对数据库的锁的机制必须深入了解,比如mysql不同引擎的带来的锁表和行级锁对性能的影响。同时要在自己的逻辑处理上要控制好不同用户同时操作的问题,时刻要绷紧这个弦。多数据集群,读写分离等等机制也是需要深入了解的。
以上是我一些简单的零碎总结,并不全面,也不细致,主要想表达一个思考的过程。不在于你都学会了什么,发现问题,研究问题,解决问题的能力,才是最重要的。
其实每一个点上,基本上你都可以找到N多牛人写的很牛很细致的书来讲具体怎么优化的,需要的时候可以好好去找书来研究一下。
深入去了解每一个点上的优化,你会发现,互联网的魅力真的是奇妙无穷!
相关推荐
10. **扩展与优化**:基于SSM-Vue的项目基础,开发者可以进一步扩展功能,比如增加权限管理、引入缓存机制、优化查询性能等,以满足不同企业的具体需求。 总结起来,SSM-Vue企业台账管理平台是一个综合运用多种技术...
总结起来,理解HTTP消息在JavaWeb开发中至关重要,因为它直接影响到应用程序的性能和用户体验。通过使用开发者工具,开发者能够深入洞察HTTP通信的细节,从而更好地调试、优化和构建高质量的Web应用程序。
总结,实现JavaWeb的分页功能需要结合Servlet、JSP和MySQL数据库的知识。Servlet负责控制逻辑,JSP用于展示,而MySQL则处理数据的获取。通过理解这些组件的工作原理和相互协作,你可以构建出高效、友好的分页功能。...
当你对源码有了深入的理解后,就可以根据需求修改代码,比如调整爬取策略、增加过滤规则、优化性能等。 总结来说,这个项目为Java Web开发者提供了一个实际的Web爬虫实现,可以帮助他们学习网络爬虫的基本原理和...
总结起来,"通信仿真-JavaWeb-mast开发笔记"涵盖了JavaWeb开发中的核心知识点,包括Servlet和JSP的基础、HTTP协议的理解、会话管理、数据库交互、Socket编程以及性能优化。学习并掌握这些内容,将有助于你构建高效、...
7. **Servlet生命周期**: 包括加载、初始化、服务、销毁四个阶段,理解这些阶段有助于优化性能和资源管理。 8. **session和cookie**: 两者都是用于跟踪客户端状态的技术。Session存储在服务器端,安全性较高,但...
### JavaWeb-Linux部署文档知识点总结 #### 一、运行环境 - **系统环境**:CentOS 7 - **软件需求**: ...需要注意的是,这只是一个基础的部署过程,实际生产环境中还需要考虑安全性、性能优化等方面的问题。
在JavaWeb开发领域,开发者们通常会涉及到一系列的技术和...在解决实际问题时,比如性能优化、安全性增强、代码重构等方面,这些经验总结将起到至关重要的作用。不断积累和总结,才能在JavaWeb开发的道路上走得更远。
总结,JavaWeb学生成绩管理系统通过集成先进的技术和科学的管理理念,旨在提供一个高效、准确的教务管理工具,为教育信息化建设贡献力量。通过持续优化和迭代,该系统有望成为教育机构提升管理效能的重要助手。
基于 MySQL 的数据库查询性能优化[J]. 电子设计工程,2021,29(12):43-47. - 史倩玉. 基于MVC模式的实时招聘系统的设计[J]. 信息记录材料,2021,22(03):232-234. - 孙将超.在线人才招聘系统实现研究[D].吉林大学,...
如果是这样,那么还需要考虑Android或iOS平台的相关知识,如Android Studio、Swift或Kotlin的使用,以及针对移动端的UI设计和性能优化。 总结,"Python画图"与"JavaWeb"的结合意味着在数据驱动的Web应用中,开发者...
这篇文章深入浅出地介绍了JavaWeb的基本概念、体系结构、开发流程、关键技术栈、开发工具和环境,以及安全性和性能优化。文章旨在为JavaWeb初学者提供一个全面的入门指南,帮助他们理解并开始JavaWeb开发。 【适用...
4. **性能优化**:通过设置`load-on-startup`,我们可以控制Servlet的初始化时间,避免不必要的等待,从而优化应用的启动性能。 在提供的链接中,博客作者`daochuwenziyao`详述了一个关于`load-on-startup`的实验...
JSP的生命周期包括翻译、编译、加载和实例化等阶段,理解这些阶段对于优化性能至关重要。 MVC(Model-View-Controller)模式是JavaWeb中常见的设计模式,用于分离业务逻辑、数据模型和用户界面。Model代表数据模型...
- **性能调优**:讨论如何通过调整配置参数、优化算法等方式提高系统性能。 - **故障排查**:讲解常见错误的原因及其解决办法,比如常见的500 Internal Server Error等问题。 - **安全防护**:探讨如何避免SQL注入、...
五、性能优化与安全考虑 1. 使用缓存技术,如Redis,提高数据访问速度。 2. 对敏感操作进行权限验证,防止非法访问。 3. 数据加密传输,确保用户信息安全。 4. 使用Ajax局部刷新,提升用户体验。 5. 代码审查和性能...
在JavaWeb开发中,会话技术是至关重要的一个部分,它允许服务器跟踪用户的状态,即使用户的请求在HTTP无状态的特性下不断...在实际开发中,我们需要根据具体需求,灵活运用这两种技术,同时注意性能优化和安全性问题。
5. 测试与调试:对应用进行功能测试和性能优化。 总结,JavaWeb是一个强大且灵活的开发平台,通过理解和掌握其核心技术和架构,开发者可以构建出高效、可扩展的Web应用。"javaweb书籍.pdf"这个文件可能包含了黄勇...
- **性能测试**:评估系统的响应速度、并发处理能力等性能指标。 - **安全性测试**:验证系统的安全性,防止潜在的安全漏洞。 ### 五、总结与展望 #### 5.1 项目总结 本项目成功构建了一个高效、可靠的新能源充电...
【JavaWeb学生成绩管理系统...总结来说,JavaWeb学生成绩管理系统是一个全面的解决方案,涵盖了从数据库设计到用户交互的所有环节,利用了JavaWeb的各种技术和最佳实践,为高效、安全地管理学生成绩提供了强大支持。