首页 > 其他分享 >用户画像系列——在线服务调优实践

用户画像系列——在线服务调优实践

时间:2024-01-23 17:22:36浏览次数:31  
标签:在线 server 耗时 XX 调优 gc online 画像 logs

前面文章讲到画像的应用的几个方面,其中画像的在线服务应用主要是在推荐场景、策略引擎场景,这两部分场景都是面向线上的c端服务。

推荐场景:根据不同的用户推荐不同的内容,做到个性化推荐,需要读取画像的一些偏好数据,推荐感兴趣的内容。

策略引擎:根据用户的属性进入到不同的页面或者给出不同的策略,比如:普通用户访问不了淘宝的奢侈品入口,北京的活动只能北京用户参加。

所以能看到画像的在线服务的业务要求,流量大、对于耗时敏感(上万或者几十万的QPS、要求在毫秒内返回结果)。

目前业界对于这种c端大流量的服务基本上是采用Redis对数据进行存储,提供对外访问。

下面是画像服务在实际线上遇到的一些问题以及问题定位和处理思路:

(1)遇到的问题——流量高峰期耗时波动有毛刺、full gc 过于频繁

流量高峰期,经常出现耗时波动,观察gc情况,发现GC过于频繁(2天左右一次full gc)

机器配置:4c 8g

jvm参数配置:-Xms6g -Xmx6g -XX:NewRatio=2 -XX:+UseParallelGC -XX:ParallelGCThreads=4 -XX:+PrintGC -XX:+PrintGCDateStamps -XX:+PrintGCDetails -XX:GCLogFileSize=50M -XX:NumberOfGCLogFiles=10 -XX:+UseGCLogFileRotation -XX:+HeapDumpOnOutOfMemoryError -XX:HeapDumpPath=/data/online-server/logs -Xloggc:/data/online-server/logs/gc.log

单台容器 qps高峰在 600-800

file

(2)优化方案一

机器配置:8c 16g

jvm参数:-Xms14g -Xmx14g -XX:NewRatio=2 -XX:+UseParallelGC -XX:ParallelGCThreads=4 -XX:+PrintGC -XX:+PrintGCDateStamps -XX:+PrintGCDetails -XX:GCLogFileSize=50M -XX:NumberOfGCLogFiles=10 -XX:+UseGCLogFileRotation -XX:+HeapDumpOnOutOfMemoryError -XX:HeapDumpPath=/data/online-server/logs -Xloggc:/data/online-server/logs/gc.log

Full gc:4天一次

但是Survivor 区非常小:只有13M 原因参考 https://zhuanlan.zhihu.com/p/148604647

file
file

(3)优化方案二

机器配置:8c 16g

jvm参数:-Xms14g -Xmx14g -XX:NewRatio=2 -XX:+UseConcMarkSweepGC -XX:+PrintGC -XX:+PrintGCDateStamps -XX:+PrintGCDetails -XX:GCLogFileSize=50M -XX:NumberOfGCLogFiles=10 -XX:+UseGCLogFileRotation -XX:+HeapDumpOnOutOfMemoryError -XX:HeapDumpPath=/data/online-server/logs -Xloggc:/data/online-server/logs/gc.log

Survivor :478M

file
file

(4)优化方案三

机器配置:8c 16g

jvm:-Xms14g -Xmx14g -XX:NewRatio=1 -XX:+UseConcMarkSweepGC -XX:ParallelGCThreads=4 -XX:+PrintGC -XX:+PrintGCDateStamps -XX:+PrintGCDetails -XX:GCLogFileSize=50M -XX:NumberOfGCLogFiles=10 -XX:+UseGCLogFileRotation -XX:+HeapDumpOnOutOfMemoryError -XX:HeapDumpPath=/data/online-server/logs -Xloggc:/data/online-server/logs/gc.log

提升新生代大小,主要是查询服务的数据中含有很大的对象数据,短暂使用即可回收,不会常驻。

最终优化之后,full gc 维持在1周一次,但是仍然有接口耗时毛刺。

第二步:利用Arthas接口优化实践

核心逻辑主要是从Redis中里面读数据+同时根据权限解析响应有权限的标签返回,下面是利用Arthas对接口的好是分析和较高耗时的时候传递的参数的分析

file
file
file

最终查看这部分耗时较高的id主要是value值数据量非常庞大,导致从Redis读取+解析耗时非常严重甚至达到秒级,虽然最终返回的结果数据不算太大,但是读取和解析耗时非常严重

从调优来看,虽然能通过增大机器资源4c 8g——8c 16g,同时通过调整jvm参数让full gc 能够达到一周一次,但是对于接口波动还是存在问题,主要原因就是某些id对应的value值较大,所以读取和解析耗时严重,因此最终方案应该考虑去对value进行拆分存储,避免一次性取出来过大的数据,将常用数据和非常用数据进行拆分。

本文分析通过调整jvm参数以及利用Arthas进行分析接口耗时情况来进行定位在线服务问题。
博客地址:https://zgzf.online/

本文由博客一文多发平台 OpenWrite 发布!

标签:在线,server,耗时,XX,调优,gc,online,画像,logs
From: https://www.cnblogs.com/zgzf/p/17982954

相关文章

  • 无共享存储的在线迁移
    无共享存储的在线迁移 环境需求:最低版本ESXI5.1,保证ESXI主机的cpu型号一样,开启vmotion 一般vSphere集群下的vMotion迁移都需要共享存储,这样,才可以将虚拟机的“主机”与“数据存储”都迁移至另一台上,如下图所示。当使用vSphere5.1的Client,两台ESXi主机也没有共享存储......
  • 梦想绘图网页CAD(在线CAD插件)功能更新(2024.01.16)
    一、DEMO和下载地址:H5在线DEMO:https://demo.mxdraw3d.com:3000/mxcad/下载地址:https://www.mxdraw.com/ndetail_40255.html二、更新内容1.增加对OLE,IMAGE,外部参照的支持2.增加自定义实体功能3.支持天正格式(仅Windows系统)4.写扩展记录,对扩展字典的支持5.得到命名字典6.添加文......
  • 独立开发一款在线浏览器书签管理平台,网页剪藏,专注阅读模式-藏趣云浏览器书签
    藏趣云-阅读模式重磅来袭发布  新增功能模块大家好,今天给大家带来一个藏趣云的全新功能,网页阅读功能,和聚合搜索功能。网页阅读聚合搜索百度搜索:藏趣云了解更多  官网地址:藏趣云官网帮助文档与下载地址:下载地址和帮助文档 藏趣云介绍藏趣云是一款跨平台的......
  • 【深入浅出JVM原理及调优】「搭建理论知识框架」全方位带你深度剖析Java线程转储分析
    专栏介绍学习JVM需要一定的编程经验和计算机基础知识,适用于从事Java开发、系统架构设计、性能优化、研究学习等领域的专业人士和技术爱好者。前提准备编程基础:具备良好的编程基础,理解面向对象编程(OOP)的基本概念,熟悉Java编程语言。数据结构与算法:对基本的数据结构和算法有一定了解,理......
  • shiro实现用户踢出,在线用户列表展示功能,包含常见踩坑集合、代码下载
    功能描述:用户a登录了s账号,接着用户b也登录了s账号,此时用户a将被踢出。一个账号只能一个人登录,被别人登录了,那么你就要被踢下线。本文目录shiro认证与授权理解实现需求核心以下是实现shiro用户踢出KickOutListener(登录成功后加入业务逻辑)kickOutFilter(进入controller的初级验证)配置......
  • docker之离线安装和在线安装
    一、离线安装1、软件包下载https://download.docker.com/linux/static/stable/x86_64/2、安装dockertarxvf/opt/docker-24.0.7.tgz-C/usr/local/cd/usr/local/cpdocker/*/usr/bin/tee/etc/systemd/system/docker.service<<EOF[Unit]Description=DockerApplic......
  • 基于SSM的在线交友系统
    本文介绍了在线交友系统的开发全过程。通过分析企业对于在线交友系统的需求,创建了一个计算机管理在线交友系统的方案。文章介绍了在线交友系统的系统分析部分,包括可行性分析等,系统设计部分主要介绍了系统功能设计和数据库设计。本在线交友系统管理员功能有个人中心,用户管理,每日推......
  • 基于lvm的系统盘在线迁移
    早期系统装在SSD盘上,现由于磁盘IO性能问题需要将SSD盘用作于业务。而SSD通常容量不是很大,所以需要将操作系统挪走,系统引导迁移可以参考Linux换系统盘后引导修复本次迁移内容为:将/dev/sylink/data分区从sda迁移到sdb[root@master193~]#pvscanPV/dev/sda3VGsylink......
  • 性能调优:深入理解 FastAPI 并发请求处理
    在当今的数字化世界中,网络用户对于高速响应和持续连接的诉求日益显著。这促使了基于Python构建的FastAPI一、开始使用FastAPI在开始之前,请先确认已经安装了FastAPI。可以通过以下pip命令进行安装:1pipinstallfastapi建设一个基础的FastAPI应用来实例化并发请求处理非常直......
  • 生产调优思路
    上线前分析点分析系统压力点在哪里?压力点的每秒请求数?每个请求耗时?每个请求消耗的内存?整个系统的所有请求重复1-4。算出部署多少台机器?每个机器多少内存?压测之后分析点Eden区对象增长速率?YoungGC频率?一次YoungGC耗时?YoungGC过后多少对象存活?老年代的对象增长速率?F......