根据官方的es文档,禁用交换是Elasticsearch可获得的最佳性能提升之一。
但是,事实证明配置起来很困难。我花了很多时间研究并尝试使用不同的方法来使用Kubernetes上的官方ES docker镜像禁用交换。
设置bootstrap.memory_lock: true
为环境变量时,映像无法启动,并显示错误:Unable to lock JVM Memory: error=12, reason=Cannot allocate memory. This can result in part of the JVM being swapped out. Increase RLIMIT_MEMLOCK, soft limit: 65536, hard limit: 65536
。正如文档所指出的那样,这是意料之中的。我什至/etc/security/limits.conf
用设置挂载了一个自定义,但是失败了。
在k8s上使用官方es映像时,建议的禁用交换的方法是什么?
而且,这是我的Yaml的相关部分
apiVersion: apps/v1beta1
kind: StatefulSet
metadata:
name: elastic-data
spec:
serviceName: elastic-data
replicas: 1
template:
spec:
securityContext:
runAsUser: 0
fsGroup: 0
containers:
- name: elastic-data
image: docker.elastic.co/elasticsearch/elasticsearch-oss:6.4.0
env:
- name: ES_JAVA_OPTS
value: "-Xms2g -Xmx2g"
- name: cluster.name
value: "elastic-devs"
- name: node.name
valueFrom:
fieldRef:
fieldPath: metadata.name
- name: discovery.zen.ping.unicast.hosts
value: "elastic-master.default.svc.cluster.local"
- name: node.master
value: "false"
- name: node.ingest
value: "false"
- name: node.data
value: "true"
- name: network.host
value: "0.0.0.0"
- name: path.data
value: /usr/share/elasticsearch/data
- name: indices.memory.index_buffer_size
value: "512MB"
- name: bootstrap.memory_lock
value: "true"
resources:
requests:
memory: "3Gi"
limits:
memory: "3Gi"
ports:
- containerPort: 9300
name: transport
- containerPort: 9200
name: http
volumeMounts:
- name: data-volume
mountPath: /usr/share/elasticsearch/data
- name: swappiness-config
mountPath: /etc/security/limits.conf
subPath: limits.conf
volumes:
- name: data-volume
persistentVolumeClaim:
claimName: pvc-es
- name: swappiness-config
configMap:
name: swappiness-config
items:
- key: limits.conf
path: limits.conf
limits.conf
elasticsearch soft memlock unlimited
elasticsearch hard memlock unlimited
elasticsearch hard nofile 65536
elasticsearch soft nofile 65536
我认为,yaml中的ulimit未被识别,因此我关注了这篇文章,并创建了一个带有用于设置设置的自定义入口点的图像。
问题内容: 我最近一直在使用sqlite4java库。我想我已经弄清楚了。唯一令我困扰的是,我不知道如何使用该库关闭自动提交。谁能帮忙吗?一个代码示例将不胜感激。 在此先感谢Boro 问题答案: Jefromi和king_nak是正确的-您只需要发出开始和结束事务的SQL语句即可。
问题内容: 我需要为索引禁用自动索引创建,但需要允许另一个索引。如何仅通过Elasticsearch禁用特定索引的自动索引创建?我试过了 在elasticsearch.yml文件中,但似乎禁用了所有的所有自动索引。有人可以帮我吗? 问题答案: 除了true / false值之外,“ action.auto_create_index”有点复杂。我们可以使用索引名称中出现的模式进行识别,并可以指定是否
我使用spring-data-elasticsearch框架从elasticsearch服务器获取查询结果,java代码如下: 我在服务器中获取原始查询日志,如下所示: 根据查询日志,spring data elasticsearch将为查询添加大小限制
问题内容: 如何在WildFly上完全禁用WELD。我不需要它,因为我使用了另一个DI框架。 异常0:javax.enterprise.inject.UnsatisfiedResolutionException:无法使用限定符[@ javax.enterprise.inject.Any(),@ javax.enterprise.inject来解析’org.springframework.data.
问题内容: 单击后,我编写了以下代码以禁用网站上的提交按钮: 不幸的是,它没有发送表格。我怎样才能解决这个问题? 编辑 我想绑定提交,而不是表格:) 问题答案: 做到: 发生的事情是您实际上在完全触发该提交事件之前禁用了该按钮。 您可能还应该考虑使用ID或CLASS来命名元素,因此不要在页面上选择所有提交类型的输入。 (请注意,我使用,因此该表单在示例中并未实际提交;请在使用时将其保留。)
问题内容: 默认情况下,在将对象发送到Elasticsearch进行索引时,NEST将使用驼峰箱对象和属性名称。如何在NEST中为Elasticsearch文档禁用骆驼框字段名称?我已经做了大量的研究,并且有一个关于该主题的邮件列表主题,但是由于某些方法已被重命名或不再存在,因此它似乎已经过时了。 邮件列表中的信息表明应添加此代码来处理字段名称,但似乎不存在客户端方法: 有人有更新的语法来处理吗?