故事开始了
做web开发的朋友经常会随口说道:"不知道怎么回事,系统好卡啊!"那系统为什么会卡,哪里卡?我们要像中医一样望闻问切,分析原因。
- 是前端代码编写不够好,代码运行效率太低?
- 是网络速度太慢?
- 是服务器响应太慢?
- 到服务端以后,还分几种情况
- 是程序算法复杂度太高,运行占用时间太长?
- 是sql执行太慢?执行等待时间过长?
以上这些问题,如果自己去写代码统计执行效率,未免太过笨重。现在推荐一款比较好用的服务端性能监控工具javamelody
参考地址
https://github.com/javamelody/javamelody/wiki
在项目中主要配置
- 修改web.xml
<filter> <filter-name>javamelody</filter-name> <filter-class>net.bull.javamelody.MonitoringFilter</filter-class> <async-supported>true</async-supported> </filter> <filter-mapping> <filter-name>javamelody</filter-name> <url-pattern>/*</url-pattern> <dispatcher>REQUEST</dispatcher> <dispatcher>ASYNC</dispatcher> </filter-mapping> <listener> <listener-class>net.bull.javamelody.SessionListener</listener-class> </listener>
如果想监控sql执行时间请加入以下代码在web.xml中
<context-param> <param-name>contextConfigLocation</param-name> <param-value> classpath:net/bull/javamelody/monitoring-spring-datasource.xml </param-value> </context-param>
- 修改pom.xml增加依赖
<dependency> <groupId>junit</groupId> <artifactId>junit</artifactId> <version>4.12</version> </dependency>
启动项目后访问地址
- http://ip:port/项目名/monitoring。
分析接口瓶颈
这里显示出来每次请求的平均响应时间和最大响应时间,很容易看出来哪个接口性能比较差,再针对性的优化耗时过长的问题。
分析sql执行时间过长的问题
这里显示出来每个sql耗时过长,可以针对性进行优化。
怎么找出一个接口背后执行了哪些sql?
点击具体一个请求,如下图所示:
页面跳转如下图所示
即可看出
如果看出一个耗时过长的sql是哪个接口,方面定位在哪个地方执行了sql
点击红框如下图所示:
页面跳转
点击右下角用到的
即可展示出来
其他有用信息
- java内存使用情况
- 数据库连接信息
- 线程
等等,更多请查看文档。再一次感谢开源。