首页 文章 精选 留言 我的

精选列表

搜索[文本图像鉴伪],共10000篇文章
优秀的个人博客,低调大师

火眼金睛破局ES伪慢查询 | 京东物流技术团队

一、问题现象 服务现象 服务接口的TP99性能降低  ES现象 YGC:耗时极其不正常, 峰值200+次,耗时7s+ FULL GC:不正常,次数为1但是频繁,STW 5s 慢查询:存在慢查询5+ 二 解决过程 1、去除干扰因素 从现象上看应用是由于某种原因导致JVM内存使用率不断增长,触发了频繁的YGC进而触发FGC(此时只是大胆的猜测)。 此时ES的JVM配置是JVM内存40G,使用CMS垃圾回收器。40G的内存使用CMS垃圾回收器性能显然不如G1更合适 找ES运维同学垃圾回收器由CMS修改为G1 (tips:不是所有的ES都适合G1,针对很多大查询的G1的Full GC会导致GC模式退化为串行扫描整个堆,导致几十秒甚至是分钟级别的暂停。这种长时间的暂停不仅影响用户的查询,还容易造成节点间的通信超时,导致master、dataNode脱离集群,影响集群稳定性。) 修改为G1后的GC变化: YGC:耗时极正常, 峰值35+次,耗时800ms FULL GC:正常,次数为0 慢查询:存在慢查询10+  2、查找问题 ES的JVM垃圾回收器调整后,杰夫接口的服务接口的性能并没有因为GC问题的解决而解决。 通过和ES侧同学的沟通了解到,这个ES集群的refresh极其异常,refresh:2w+。  ES监控中的慢查询语句单独去执行并不慢  原因: 应用中和ES的交互使用的是3.1.9.RELEASE 版本的spring-data-elasticsearch的包,ES数据同步工作是通过该API的中的save方法进行保存数据的,如下图所示,该版本的save操作每次save后都会进行refresh操作 <groupId>org.springframework.data</groupId> <artifactId>spring-data-elasticsearch</artifactId> <version>3.1.9.RELEASE</version>  为什么每次refresh会对查询产生影响呢,今天咱们也赶个时髦,让GPT给咱们回复下试试:    3、修复方案 升级spring-data-elasticsearch 的版本到4.x以上,由于spring-data-elasticsearch高本版不兼容低版本改动成本较大,该项目中的所有涉及API操作的地方都需要改动 save操作改用operation进行操作(目前选择的该方案,改动较少)  慢查询已经消失 refresh的次数也降了下来 三、问题解决 最终的业务服务接口性能正常了。 教员常说我们总是被经验主意和投机主义左右我们的思想,破局这一问题的根本解决方式是只有实事求是,实践是真理的标准。  作者:京东物流王义杰 来源:京东云开发者社区 自猿其说Tech 转载请注明来源

优秀的个人博客,低调大师

Nginx核心教程之Nginx Rewrite语法规则和伪静态规则详解

文件及目录匹配: -f 和 !-f 用来判断是否存在文件 -d 和 !-d 用来判断是否存在目录 -e 和 !-e 用来判断是否存在文件或目录 -x 和 !-x 用来判断文件是否可执行 正则表达式匹配: * ~ 为区分大小写匹配 * ~* 为不区分大小写匹配 * !~和!~*分别为区分大小写不匹配及不区分大小写不匹配 flag标记有: last 相当于Apache里的[L]标记,表示完成 rewrite break 终止匹配, 不再匹配后面的规则 redirect 返回302临时重定向 地址栏会显示跳转后的地址 permanent 返回301永久重定向 地址栏会显示跳转后的地址 一些可用的全局变量有,可以用做条件判断: ​ $args $content_length $content_type $document_root $document_uri $host $http_user_agent $http_cookie $limit_rate $request_body_file $request_method $remote_addr $remote_port $remote_user $request_filename $request_uri $query_string $scheme $server_protocol $server_addr $server_name $server_port $uri ​ nginx变量及功能含义: ​ $arg_PARAMETER 功能:如果在请求中设置了查询字符串,那么这个变量包含在查询字符串是GET请求PARAMETER中的值。 $args 功能:该变量的值是GET请求在请求行中的参数。 $binary_remote_addr 功能:二进制格式的客户端地址 $body_bytes_sent 功能:响应体的大小,即使发生了中断或者是放弃,也是一样的准确。 $content_length 功能:该变量的值等于请求头中的Content-length字段的值 $cookie_COOKIE 功能:该变量的值是cookie COOKIE的值 $document_root 功能:该变量的值为当前请求的location(http,server,location,location中的if)中root指令中指定的值。 $document_uri 功能:同$uri $host 功能:该变量的值等于请求头中Host的值。如果Host无效时,那么就是处理该请求的server的名称。 在下列情况中,$host变量的取值不同于$http_host变量。 当请求头中的Host字段未指定(使用默认值)或者为空值,那么$host等于server_name指令指定的值。 当Host字段包含端口是,$host并不包含端口号。另外,从0.8.17之后的nginx中,$host的值总是小写。 $hostname 功能:有gethostname返回值设置机器名。 $http_HEADER 功能:该变量的值为HTTP 请求头HEADER,具体使用时会转换为小写,并且将“——”(破折号)转换为"_"(下划线)。 $is_args 功能: 如果设置了$args,那么值为“?”,否则为“” $limit_rate 功能:该变量允许限制连接速率。 $nginx_version 功能: 当前运行的nginx的版本号 $query_string 功能:同$args $remote_addr 功能:客户端的IP地址 $remote_user 功能: 该变量等于用户的名字,基本身份验证模块使用。 $remote_port 功能: 客户端连接端口 $request_filename 功能:该变量等于当前请求文件的路径,有指令root或者alias和URI构成。 $request_body 功能:该变量包含了请求体的主要信息。该变量与proxy_pass或者fastcgi_pass相关。 $request_body_file 功能:客户端请求体的临时文件。 $request_completion 功能:如果请求成功完成,那么显示“OK”。如果请求没有完成或者请求不是该请求系列的最后一部分,那么它的值为空。 $request_method 功能:该变量的值通常是GET或者POST。 $request_uri 功能:该变量的值等于原始的URI请求,就是说从客户端收到的参数包括了原始请求的URI,该值是不可以被修改的,不包含主机名,例如“/foo/bar.php?arg=baz”。 $scheme 功能:该变量表示HTTP scheme(例如HTTP,HTTPS),根据实际使用情况来决定, 例如:rewrite ^ $scheme://example.com$uri redirect; $server_addr 功能:该变量的值等于服务器的地址。通常来说,在完成一次系统调用之后就会获取变量的值,为了避开系统钓鱼,那么必须在listen指令中使用bind参数。 $server_name 功能:该变量为server的名字。 $server_port 功能:该变量等于接收请求的端口。 $server_protocol 功能:该变量的值为请求协议的值,通常是HTTP/1.0或者HTTP/1.1 $uri 功能:该变量的值等于当前请求中的URI(没有参数,不包括$args)的值。它的值不同于request_uri,由浏览器客户端发送的request_uri的值。例如,可能会被内部重定向或者使用index。 另外需要注意:$uri不包含主机名,例如 "/foo/bar.html" 当前判断URL= $scheme://$server_name/$url ​ location 匹配的优先级(来自实践总结中) (location =) > (location 完整路径 >) >(location ^~ 路径) >(location ~* 正则) >(location 路径) 只要匹配到,其它的都会忽略,然后返回到改匹配。 往期文章 Nginx系列教程(1)nginx基本介绍和安装入门Nginx系列教程(2)nginx搭建静态资源web服务器Nginx系列教程(3)nginx缓存服务器上的静态文件Nginx系列教程(4)nginx处理web应用负载均衡问题以保证高并发Nginx系列教程(5)如何保障nginx的高可用性(keepalived)Nginx系列教程(6)nginx location 匹配规则详细解说Nginx系列教程(7)nginx rewrite配置规则详细说明Nginx系列教程(8)nginx配置安全证书SSLNginx系列教程(9)nginx 解决session一致性 ​

资源下载

更多资源
腾讯云软件源

腾讯云软件源

为解决软件依赖安装时官方源访问速度慢的问题,腾讯云为一些软件搭建了缓存服务。您可以通过使用腾讯云软件源站来提升依赖包的安装速度。为了方便用户自由搭建服务架构,目前腾讯云软件源站支持公网访问和内网访问。

Nacos

Nacos

Nacos /nɑ:kəʊs/ 是 Dynamic Naming and Configuration Service 的首字母简称,一个易于构建 AI Agent 应用的动态服务发现、配置管理和AI智能体管理平台。Nacos 致力于帮助您发现、配置和管理微服务及AI智能体应用。Nacos 提供了一组简单易用的特性集,帮助您快速实现动态服务发现、服务配置、服务元数据、流量管理。Nacos 帮助您更敏捷和容易地构建、交付和管理微服务平台。

Spring

Spring

Spring框架(Spring Framework)是由Rod Johnson于2002年提出的开源Java企业级应用框架,旨在通过使用JavaBean替代传统EJB实现方式降低企业级编程开发的复杂性。该框架基于简单性、可测试性和松耦合性设计理念,提供核心容器、应用上下文、数据访问集成等模块,支持整合Hibernate、Struts等第三方框架,其适用范围不仅限于服务器端开发,绝大多数Java应用均可从中受益。

Rocky Linux

Rocky Linux

Rocky Linux(中文名:洛基)是由Gregory Kurtzer于2020年12月发起的企业级Linux发行版,作为CentOS稳定版停止维护后与RHEL(Red Hat Enterprise Linux)完全兼容的开源替代方案,由社区拥有并管理,支持x86_64、aarch64等架构。其通过重新编译RHEL源代码提供长期稳定性,采用模块化包装和SELinux安全架构,默认包含GNOME桌面环境及XFS文件系统,支持十年生命周期更新。

用户登录
用户注册