Open calvinxiao opened 5 years ago
APM = Application Performance Management
企业可以使用 APM 实时监控应用性能和当前工作负载,从而更好做出扩容决定保证系统稳定,闲时可以做对应的服务器缩容,降低总体运行成本。
与服务器性能指标监控不同,APM 的探针可以部署在代码运行时里面,可收集到更加接近应用程序的性能数据,大部分 APM sdk 还可以监控到 SQL 请求,Redis 请求,对外 HTTP 请求,模板渲染细节等数据。
现在市场上的 APM 都做成了 SaaS 服务。国外领先的 APM 有 NewRelic 和 DataDog 等。国内有 OneAPM。
Elastic 开源出了一款 APM,数据存储用 ElasticSearch,用户只需要安装一个 apm-server,然后在应用里面安装对应语言版本的 elastic-apm 包,便可以快速搭建一套开源的 APM 服务。
elastic-apm
Elastic APM 打着以开发者为中心的旗号,官网是如下强调的
Elastic APM 支持 Java、Go、Node.js、Python、Ruby 和 Real User Monitoring (JavaScript),未来还会支持更多编程语言。如果没有发现自己想要的,您既可自行构建,也可求助于开源社区。 -- https://www.elastic.co/cn/solutions/apm
具体 Elastic APM 有什么功能大家在官网或者试用一下就知道了,这里就不详细说了。
以前在做 Ruby 应用性能优化的时候,用的都是 stackprof 和 rbspy 之流,stackprof 能收集 Ruby 进程的 CPU wall time,新建对象数量等信息,rbspy 能在线收集一个 Ruby 进程的当前调用栈(用 ptrace),可以生成火焰图,清晰看出具体耗时最长的函数。
stackprof
rbspy
而在使用了 Elastic APM 之后,每个路径的耗时对比清晰可见,APM 的每一个 HTTP Service 首页都给出了响应时间(均值,95%,99%),状态码数量等信息,简单直接的给出了需要做性能调优的功能。
Elastic APM 通过探针可以收集到常用类库的运行信息,目前的 Ruby elastic-apm gem 可以支持 Active Record,Sequel SQL,Redis,Mongo,NET::HTTP,tilt::Template,json 等等。
通过使用 Elastic APM,我们发现了友好速搭官网首页执行了 89 次 SQL 查询,看代码发现是前端渲染模板的时候在循环里调用了两次 SQL 请求。通过优化,整个页面现在只需要 2 个 SQL 请求,目前 99% 的 response time 在 40ms 以内。大家可以访问 https://youhaosuda.com/ 或者搜索 友好速搭 感受一下火箭般的浏览速度。
Elastic APM 还会记录应用内的异常,可以简单使用现有的 Grafana,通过增加 Elasticsearch 数据源,可以直观看到对应服务的异常数量,Grafana 可以设置告警发到 Slack 或者 Bearychat。
Web 产品的响应速度也是产品特性之一。亚马逊统计过,每快 100ms 的响应时间可以节省 1% 的销售成本,通过友好速搭创建的网站,全球毫秒级加载,而且现在还可以通过 Elastic APM 实时监控网站性能状况,用最敏捷的方式解决性能瓶颈。
友好速搭是国内领先的电商服务和云技术提供方。依托技术、营销、企业服务三大业务,为高端零售品牌打造个性化交易系统,并快速链接行业资源与精准流量,使品牌价值最大化。
Elastic APM
简介
APM = Application Performance Management
企业可以使用 APM 实时监控应用性能和当前工作负载,从而更好做出扩容决定保证系统稳定,闲时可以做对应的服务器缩容,降低总体运行成本。
与服务器性能指标监控不同,APM 的探针可以部署在代码运行时里面,可收集到更加接近应用程序的性能数据,大部分 APM sdk 还可以监控到 SQL 请求,Redis 请求,对外 HTTP 请求,模板渲染细节等数据。
现在市场上的 APM 都做成了 SaaS 服务。国外领先的 APM 有 NewRelic 和 DataDog 等。国内有 OneAPM。
Elastic 开源出了一款 APM,数据存储用 ElasticSearch,用户只需要安装一个 apm-server,然后在应用里面安装对应语言版本的
elastic-apm
包,便可以快速搭建一套开源的 APM 服务。Elastic APM 打着以开发者为中心的旗号,官网是如下强调的
具体 Elastic APM 有什么功能大家在官网或者试用一下就知道了,这里就不详细说了。
以前在做 Ruby 应用性能优化的时候,用的都是
stackprof
和rbspy
之流,stackprof
能收集 Ruby 进程的 CPU wall time,新建对象数量等信息,rbspy
能在线收集一个 Ruby 进程的当前调用栈(用 ptrace),可以生成火焰图,清晰看出具体耗时最长的函数。而在使用了 Elastic APM 之后,每个路径的耗时对比清晰可见,APM 的每一个 HTTP Service 首页都给出了响应时间(均值,95%,99%),状态码数量等信息,简单直接的给出了需要做性能调优的功能。
Elastic APM 通过探针可以收集到常用类库的运行信息,目前的 Ruby elastic-apm gem 可以支持 Active Record,Sequel SQL,Redis,Mongo,NET::HTTP,tilt::Template,json 等等。
通过使用 Elastic APM,我们发现了友好速搭官网首页执行了 89 次 SQL 查询,看代码发现是前端渲染模板的时候在循环里调用了两次 SQL 请求。通过优化,整个页面现在只需要 2 个 SQL 请求,目前 99% 的 response time 在 40ms 以内。大家可以访问 https://youhaosuda.com/ 或者搜索 友好速搭 感受一下火箭般的浏览速度。
Elastic APM 还会记录应用内的异常,可以简单使用现有的 Grafana,通过增加 Elasticsearch 数据源,可以直观看到对应服务的异常数量,Grafana 可以设置告警发到 Slack 或者 Bearychat。
Web 产品的响应速度也是产品特性之一。亚马逊统计过,每快 100ms 的响应时间可以节省 1% 的销售成本,通过友好速搭创建的网站,全球毫秒级加载,而且现在还可以通过 Elastic APM 实时监控网站性能状况,用最敏捷的方式解决性能瓶颈。