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

前面文章讲到画像的应用的几个方面,其中画像的在线服务应用主要是在推荐场景、策略引擎场景,这两部分场景都是面向线上的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 发布!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/642343.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

【方法】如何把Excel“只读方式”变成可直接编辑?

Excel在“只读方式”下,编辑后是无法直接保存原文件的,那如何可以直接编辑原文件呢?下面来一起看看看吧。 如果Excel设置的是无密码的“只读方式”,那在打开Excel后,会出现对话框,提示“是否以只读方式打开…

什么是甘特图?谁还不知道?做管理的来看看!

在现代商业社会,项目管理已成为不可或缺的技能。而甘特图作为一种强大的项目管理工具,正逐渐受到越来越多人的青睐。那么,什么是甘特图?又有什么工具可以绘制甘特图呢?本文将为你一一解答。 一、甘特图的定义 甘特图…

Unity - 简单音频视频

“Test_04” 音频 使用AudioTest脚本控制Audio Source组件,在脚本中声明"music"和"se"之后,在unity中需要将音频资源拖拽到对应位置。 AudioTest public class AudioTest : MonoBehaviour {// 声明音频// AudioClippublic AudioC…

Vulnhub-dc4

靶场下载 https://download.vulnhub.com/dc/DC-4.zip 信息收集 判断目标靶机的存活地址: # nmap -sT --min-rate 10000 -p- 192.168.1.91 -oN port.nmap Starting Nmap 7.94 ( https://nmap.org ) at 2024-01-21 16:36 CST Stats: 0:00:03 elapsed; 0 hosts completed (1 up…

三、MySQL之创建和管理表

一、基础知识 1.1 一条数据存储的过程 存储数据是处理数据的第一步 。只有正确地把数据存储起来,我们才能进行有效的处理和分析。否则,只 能是一团乱麻,无从下手。 在 MySQL 中, 一个完整的数据存储过程总共有 4 步,分别是创建数据库、确认字段、创建数据表、插入数据。 …

在字节5年被优化,太难了。。。

🍅 视频学习:文末有免费的配套视频可观看 🍅 点击文末小卡片,免费获取软件测试全套资料,资料在手,涨薪更快 先简单说下,涵哥是某不知名 985 的本硕,17 年毕业加入字节,以…

自学网安-DNS

01DNS Domain Name Service域名服务 作用:为客户机提供域名解析服务器 02域名组成 2.1域名组成概述 如"www.sina.com.cn"是一个域名,从严格意义上讲,"sina.com.cn"才被称为域名(全球唯一),而"www"…

layui 自定义日期选择器今日、昨日 、本周、本月、上个月等

1、layui 日期选择器 laydate日期选择器 <div class"layui-input-inline"><input class"layui-input" id"dateTime" placeholder"日期范围"> </div><script> layui.use([laydate], function () {laydate.ren…

QT upd测试

QT upd测试 本次测试将服务器和客户端写在了一个工程下&#xff0c;代码如下 widget.h #ifndef WIDGET_H #define WIDGET_H#include <QWidget> #include<QUdpSocket> #include<QTimer>QT_BEGIN_NAMESPACE namespace Ui { class Widget; } QT_END_NAMESPACE…

编程入门:五个你必须知道的编程常识

常识1&#xff1a;编程不仅仅是写代码 当我们谈论编程时&#xff0c;大多数人首先想到的是写代码。这是正确的&#xff0c;但并不完整。编程不仅仅是写代码&#xff0c;而是解决问题的一种方式。编程是一种工具&#xff0c;我们使用它来创建能够解决特定问题的产品和服务。 比…

qmt和ptrade有什么区别?国内免费量化交易软件精选:让你轻松上手量化交易!

QMT 和 PTrade 是两个不同的平台&#xff0c;具有不同的功能和特点。 QMT&#xff08;Quantitative Market Trading&#xff09;是一种量化交易平台&#xff0c;主要面向专业的量化交易员和机构交易员。它提供了一系列的工具和功能&#xff0c;帮助交易员进行定量分析、模型开…

C#用DateTime.Now静态属性返回日期的星期信息

目录 一、使用的方法 1.Now属性 2.ToString方法 二、示例 使用DateTime结构的Now静态属性&#xff0c;可以方便地获取系统日期信息。调用时间对象的ToString方法&#xff0c;在该方法的参数中添加适当的格式化字符串&#xff0c;将返回日期的星期信息。 一、使用的方法 1…

【Linux】安装n卡驱动,美化gnome

文章目录 1.换源以及更新&#xff08;十分重要不要跳过&#xff01;&#xff09;2.安装依赖&#xff08;十分重要不要跳过&#xff01;&#xff09;3. 安装n卡驱动独显与核显切换nvidia-settings消失忘记安装依赖无法进入图形化界面的急救命令行无响应办法 gnome美化安装-tweak…

【网络安全】-基本工具msf

secure 1、有此漏洞的目标主机2、无此漏洞的目标主机&#xff08;常用&#xff09; ps.本着兴趣爱好&#xff0c;加强电脑的安全防护能力&#xff0c;并严格遵守法律和道德规范。msf&#xff08;metasploit framework&#xff09;是一个开源的渗透测试框架&#xff0c;用于开发…

JAVA:OFD Reader Writer 开源库技术解析

1、简述 OFD Reader & Writer 是一个由开源社区推动的 OFD 文件处理库&#xff0c;它旨在提供对 OFD 格式文件的读取和写入功能。这一开源项目为开发者提供了强大而灵活的工具&#xff0c;使得在应用程序中处理和生成 OFD 文件变得更加容易和高效 开源地址&#xff1a;htt…

【RF FILTER 仿真】滤波器 Ansys Electronics not ADS

第一&#xff0c;声明 全网搜索&#xff0c;用这个HFSS继承的介绍非常少&#xff0c;并且没有什么指导意义。所以有必要写一下&#xff0c;就像之前的xpedition,总要挑战一下吧。本文仅仅和大家学习研究&#xff0c;对比ADS体会一下差别。 第二&#xff0c;记录直接开始&…

【服务器】安装Docker环境

目录 &#x1f33a;【前言】 &#x1f33c;1. 打开Xshell软件 &#x1f33b;2. 安装Docker环境 ①&#xff1a;下载docker.sh脚本 ②&#xff1a;列出下载的内容 ③&#xff1a;执行一下get-docker.sh文件&#xff0c;安装docker ④&#xff1a;运行docker服务 ⑤&…

openEuler操作系统安装+部署+配置

目录 一、下载 二、创建虚拟机实例 三、安装部署 四、配置OpenEuler22.03 1、登录账号 2、Xshell建立连接 3、关闭防火墙及SELinux 4、修改主机名修改root密码 5、配置yum源 6、查看网卡配置 7、用yum下载软件 8、网络配置 1&#xff09;nmtui --图形化界面配置 …

攸信UMS工业配送AMR F1引领智能物流发展,侨智大会瞩目焦点

近日&#xff0c;由中国侨联、福建省人民政府共同主办的第一届中国侨智发展大会在福州开幕。本次大会以“五洲聚‘福’汇侨智&#xff0c;同心共圆中国梦”为主题&#xff0c;立足福建、服务全国、面向海外&#xff0c;吸引了来自37个国家和地区的一千余名海内外嘉宾参会。 01|…

98.乐理基础-记号篇-装饰音记号(六)倚音

内容参考于&#xff1a;三分钟音乐社 上一个内容&#xff1a;97.乐理基础-记号篇-装饰音记号&#xff08;五&#xff09;颤音-CSDN博客 从历史的发展上来讲&#xff0c;倚音本质上是分为短倚音 和 长倚音这两种类型&#xff0c;但是长倚音确实是一个目前看上去没有什么意义的…