图示的冲突过程,其实就是es的并发冲突问题,会导致数据不准确 当并发操作es的线程越多,或者读取一份数据,供用户查询和操作的时间越长,在这段时间里,如果数据被其他用户修改,那么我们拿到的就是旧数据,基于旧数据去操作,就会导致错误的结果1、悲观锁与乐观锁两种并发控制方案 悲观锁(Pessimistic Lock),,每次去拿数据的时候都认为别人会修改,所以每次在拿数据的时候都会上锁,这样别人想拿这个            
                
                    
                        
                                                            
                                                                        
                                                                                        转载
                                                                                    
                            2024-04-12 14:53:06
                            
                                59阅读
                            
                                                                             
                 
                
                                
                     
                                    
                             
         
            
            
            
            一直在面阿里,从提前批投蚂蚁中间件与阿里中间件,最后阿里中间件面完了hr,但是很遗憾最后没能进,被调到了盒马。不过最终还是拿到了盒马的offer。期间还面了EMC、网易、携程(水到不行)、美团、拼多多,目前出了美团跟拼多多没有出结果,其他几家公司也都顺利拿到意向,在此回馈一波大家。面经部分出自阿里,其他几家公司有少部分补充,内容是个人整理,如有不对,还请纠正,谢谢! 网络编程ISO模型与            
                
         
            
            
            
            概述性能优化是个涉及面非常广的问题,不同的环境,不同的业务场景可能会存在不同的优化方案,本文只对一些相关的知识点做简单的总结,具体方案可以根据场景自行尝试。配置文件调优通过elasticsearch.yml配置文件调优内存锁定允许 JVM 锁住内存,禁止操作系统交换出去由于JVM发生swap交换会导致极大降低ES的性能,为了防止ES发生内存交换,我们可以通过锁定内存来实现,这将极大提高查询性能,但            
                
                    
                        
                                                            
                                                                        
                                                                                        转载
                                                                                    
                            2024-05-24 14:43:05
                            
                                183阅读
                            
                                                                             
                 
                
                                
                     
                                    
                             
         
            
            
            
             内存使用和GC指标在运行Elasticsearch时,内存是您要密切监控的关键资源之一。 Elasticsearch和Lucene以两种方式利用节点上的所有可用RAM:JVM heap和文件系统缓存。 Elasticsearch运行在Java虚拟机(JVM)中,这意味着JVM垃圾回收的持续时间和频率将成为其他重要的监控领域。JVM heap: A Goldilocks tale&nbs            
                
         
            
            
            
            我们在OpenGL中大量使用缓冲来储存数据已经有很长时间了。操作缓冲其实还有更有意思的方式,而且使用纹理将大量数据传入着色器也有更有趣的方法。这一节中,我们将讨论一些更有意思的缓冲函数,以及我们该如何使用纹理对象来储存大量的数据(纹理的部分还没有完成)。OpenGL中的缓冲只是一个管理特定内存块的对象,没有其它更多的功能了。在我们将它绑定到一个缓冲目标(Buffer Target)时,我们才赋予了            
                
                    
                        
                                                            
                                                                        
                                                                                        转载
                                                                                    
                            2024-06-06 10:28:07
                            
                                61阅读
                            
                                                                             
                 
                
                             
         
            
            
            
            目录一、内存设置的概述二、Elasticsearch堆内存的分配的两个原则 一、内存设置的概述ES 默认安装后设置的内存是 1GB,如果是通过解压安装的 ES,则在 ES 安装文件中包含一个 jvm.option 文件,Xms 表示堆的初始大小,Xmx 表示可分配的最大内存,都是 1GB。确保 Xmx 和 Xms 的大小是相同的,其目的是为了能够在 Java 垃圾回收机制清理完堆区后不需要重新分            
                
                    
                        
                                                            
                                                                        
                                                                                        转载
                                                                                    
                            2024-06-18 19:37:10
                            
                                157阅读
                            
                                                                             
                 
                
                             
         
            
            
            
            文章目录内存设置总结 内存设置ES 默认安装后设置的内存是 1GB,对于任何一个现实业务来说,这个设置都太小了。如果是通过解压安装的 ES,则在 ES 安装文件中包含一个 jvm.option 文件,添加如下命令来设置 ES 的堆大小, Xms 表示堆的初始大小, Xmx 表示可分配的最大内存,都是 1GB。  确保 Xmx 和 Xms 的大小是相同的,其目的是为了能够在 Java 垃圾回收机制            
                
                    
                        
                                                            
                                                                        
                                                                                        转载
                                                                                    
                            2024-02-22 10:20:58
                            
                                98阅读
                            
                                                                             
                 
                
                             
         
            
            
            
            内存溢出 out of memory,是指程序在申请内存时,没有足够的内存空间供其使用,出现out of memory;
内存泄露 memory leak,是指程序在申请内存后,无法释放已申请的内存空间,一次内存泄露危害可以忽略,但内存泄露堆积后果很严重,无论多少内存,迟早会被占光。
以发生的方式来分类,内存泄漏可以分为4类: 
    1. 常发性内存泄漏。发生内存泄漏的代码会被多次执行到,每次            
                
                    
                        
                                                            
                                                                        
                                                                                        转载
                                                                                    
                            2024-04-15 11:16:11
                            
                                78阅读
                            
                                                                             
                 
                
                             
         
            
            
            
            堆内存:大小和交换Elasticsearch 默认安装后设置的堆内存是 1 GB。对于任何一个业务部署来说,这个设置都太小了。如果你正在使用这些默认堆内存配置,您的集群可能会出现问题。这里有两种方式修改 Elasticsearch 的堆内存。最简单的一个方法就是指定 ES_HEAP_SIZE 环境变量。服务进程在启动时候会读取这个变量,并相应的设置堆的大小。比如,你可以用下面的            
                
                    
                        
                                                            
                                                                        
                                                                                        转载
                                                                                    
                            2024-03-07 10:59:11
                            
                                69阅读
                            
                                                                             
                 
                
                             
         
            
            
            
            首先,说明笔者的机器环境(不结合环境谈解决方案都是耍流氓): cpu 32核,内存128G,非固态硬盘:RAID0 (4T * 6),单节点,数据量在700G到1800G,索引15亿~21亿。敖丙大人,在蘑菇街,可多集群分片,固态硬盘,比不起啊。业务场景保存7天索引,每天有400G~500G。发现ES时不时的OOM(out of memory)和重启。当索引超过500G的时候,ES重启到加载所有分            
                
                    
                        
                                                            
                                                                        
                                                                                        转载
                                                                                    
                            2024-02-22 07:40:08
                            
                                294阅读
                            
                                                                             
                 
                
                                
                     
                                    
                             
         
            
            
            
            3.1、分片查询方式当前的图片中有5个主分片,5个副本;这对于es的集群来说,这种配置是非常常见的;但是问题来了,当我们的客户端做查询的时候,程序会向主分片发送请求还是副本发送请求?还是说直接去集群上随机找一台机器查询,还是在这个机器里面在随机的找到分片和副本查询?【注意】:默认情况下是随机查询的这种随机的方式其实效率并不高,1查询阶段(1):客户端发送一个检索请求给node3,此时node3会创            
                
                    
                        
                                                            
                                                                        
                                                                                        转载
                                                                                    
                            2024-05-15 17:41:59
                            
                                73阅读
                            
                                                                             
                 
                
                                
                     
                                    
                             
         
            
            
            
            1 冷热分离(Hot/Warm/Cold)Index Lifecircle Management Policy索引特点Hot: 索引被更新,大量被查询Warm: 索引不更新,偶尔被查询Cold: 索引不更新,很少被查询Delete: 索引不更新,不被查询参考:https://www.elastic.co/guide/en/elasticsearch/reference/7.0/index-life            
                
                    
                        
                                                            
                                                                        
                                                                                        转载
                                                                                    
                            2024-08-04 12:40:34
                            
                                120阅读
                            
                                                                             
                 
                
                             
         
            
            
            
            Android Lesson Seven: An Introduction to Vertex Buffer Objects (VBOs)在这节课中,我们将介绍如何定义和如何去使用 顶点缓冲对象(VBO)。下面是我们要讲到的几点:1.如何定义顶点缓冲区以及利用顶点缓冲区进行渲染。 2.使用单个缓冲区打包所有的数据(比如位置,颜色, 法线,纹理)与使用多个缓冲区分别保存数据的区别。 3.问题和陷阱,            
                
                    
                        
                                                            
                                                                        
                                                                                        转载
                                                                                    
                            2024-08-23 08:29:50
                            
                                42阅读
                            
                                                                             
                 
                
                                
                     
                                    
                             
         
            
            
            
            文章目录内存设置 内存设置ES 默认安装后设置的内存是 1GB,对于任何一个现实业务来说,这个设置都太小了。 如果是通过解压安装的 ES,则在 ES 安装文件中包含一个 jvm.option 文件,添加Xms Xmx命令来设置 ES 的堆大小,Xms 表示堆的初始大小,Xmx 表示可分配的最大内存,都是 1GB。确保 Xmx 和 Xms 的大小是相同的,其目的是为了能够在 Java 垃圾回收机制            
                
                    
                        
                                                            
                                                                        
                                                                                        转载
                                                                                    
                            2024-02-22 13:08:42
                            
                                135阅读
                            
                                                                             
                 
                
                             
         
            
            
            
            1. 系统层面的调优 
系统层面的调优主要是内存的设定与避免交换内存。 
ES 安装后默认设置的堆内存是 1GB,这很明显是不够的,那么接下来就会有一个问题出现:我们要设置多少内存给 ES 呢? 
其实这是要看我们集群节点的内存大小,还取决于我们是否在服务器节点上还是否要部署其他服务。 
 如果内存相对很大,如 64G 及以上,并且我们不在 ES            
                
                    
                        
                                                            
                                                                        
                                                                                        转载
                                                                                    
                            2024-03-18 00:06:22
                            
                                64阅读
                            
                                                                             
                 
                
                             
         
            
            
            
            elasticsearch堆内存的配置建议 1、将最小堆大小(Xms)和最大堆大小(Xmx)设置为彼此相等防止内存抖动 2:给多大的堆内存?给ES的内存配置不是越大越好,建议不能超过32GB,不同jdk版本最大边界值是不同的,对于32位小于32G JVM才采用内存对象指针压缩技术,不然对象指针需要占用很大的内存; 一旦你越过那个神奇的30-32G的边界,指针就会切回普通对象的指针,意味            
                
                    
                        
                                                            
                                                                        
                                                                                        转载
                                                                                    
                            2024-06-14 16:41:44
                            
                                64阅读
                            
                                                                             
                 
                
                             
         
            
            
            
            一. 版本与java客户端选择es当前的大版本有7.x,6.x,5.x,2.x,  其中2.x无法向上升级。7.x太新,不建议上项目。pg与es之间的数据同步插件amazonriver,对es的版本有要求,只支持5.x版本,所以这里选择了5.5.0版本。二. Es下载官网下载elasticsearch-5.5.0.tar.gz三. 硬盘与内存的要求1)建索引            
                
                    
                        
                                                            
                                                                        
                                                                                        转载
                                                                                    
                            2024-02-19 18:20:33
                            
                                184阅读
                            
                                                                             
                 
                
                                
                     
                                    
                             
         
            
            
            
            写在前面有一个问题被关注的比较少,就是ES对本地磁盘的占用情况。有人可能觉得这个问题的答案显而易见,不就是ES软件本身占用的空间,还有索引数据持久化占用的磁盘空间,另外就是一些日志了。事实上,关于ES占用磁盘空间的问题远比这个要复杂的多。本篇文章就想聚焦这个问题,深入ES的底层原理来分析磁盘的占用情况。正文是否执行分析首先对于一个索引,其中的字段在写入是,写入分析对磁盘是有影响的。那么什么是写入分            
                
                    
                        
                                                            
                                                                        
                                                                                        转载
                                                                                    
                            2024-03-15 05:31:37
                            
                                76阅读
                            
                                                                             
                 
                
                                
                     
                                    
                             
         
            
            
            
            Elasticsearch默认安装后设置的内存是1GB,对于任何一个业务部署来说,这个都太小了。如果你正在使用这些默认堆内存配置,你的集群配置可能有点问题。这里有两种方式修改Elasticsearch的堆内存(下面就说内存好了),最简单的一个方法就是指定ES_HEAP_SIZE环境变量。服务进程在启动时候会读取这个变量,并相应的设置堆的大小。举例,你可以用下面的命令设置它export ES_H            
                
                    
                        
                                                            
                                                                        
                                                                                        转载
                                                                                    
                            2024-02-23 22:41:30
                            
                                61阅读
                            
                                                                             
                 
                
                             
         
            
            
            
            一般来说,如果我们刚开始用es,都是先在自己的笔记本电脑上,或者是几个虚拟机组成的小集群上,安装一个es,然后开始学习和试用其中的功能。但是如果我们要将es部署到生产环境中,那么是由很多额外的事情要做的。需要考虑我们部署的机器的内存、CPU、磁盘、JVM等各种资源和配置。1、内存es是很吃内存的,es吃的主要不是你的jvm的内存,一般来说es用jvm heap(堆内存)还是用的比较少的,主要吃的是            
                
                    
                        
                                                            
                                                                        
                                                                                        转载
                                                                                    
                            2024-04-05 18:46:38
                            
                                419阅读