小编dor*_*ony的帖子

Elasticsearch 7.x 断路器 - 数据过大 - 故障排除

问题:
自从从 ES-5.4 升级到 ES-7.2 后,当我尝试从我的多线程 Java 应用程序(使用elasticsearch-rest-high-level-client-7.2.0.jarjava 客户端)写入并发批量请求(或/和搜索请求)时,我开始收到“数据太大”错误到 2-4 个节点的 ES 集群。

我的ES配置:

Elasticsearch version: 7.2

custom configuration in elasticsearch.yml:   
    thread_pool.search.queue_size = 20000  
    thread_pool.write.queue_size = 500

I use only the default 7.x circuit-breaker values, such as:  
    indices.breaker.total.limit = 95%  
    indices.breaker.total.use_real_memory = true  
    network.breaker.inflight_requests.limit = 100%  
    network.breaker.inflight_requests.overhead = 2  
Run Code Online (Sandbox Code Playgroud)

来自 elasticsearch.log 的错误:

    {
      "error": {
        "root_cause": [
          {
            "type": "circuit_breaking_exception",
            "reason": "[parent] Data too large, data for [<http_request>] would be [3144831050/2.9gb], which is larger than the limit of …
Run Code Online (Sandbox Code Playgroud)

elasticsearch elasticsearch-java-api elasticsearch-7

8
推荐指数
2
解决办法
8181
查看次数

使用Comparator的ConcurrentSkipListSet不会添加新的唯一值

我想要并发的一组字符串值,按长度最长->最短排序。

这是我的代码(JAVA 8):

private ConcurrentSkipListSet<String> sortedSourceTypeNames = new ConcurrentSkipListSet<>(Comparator.comparing(String::length).reversed());
Run Code Online (Sandbox Code Playgroud)

这是Java 8文档:

    /**
     * Constructs a new, empty set that orders its elements according to
     * the specified comparator.
     *
     * @param comparator the comparator that will be used to order this set.
     *        If {@code null}, the {@linkplain Comparable natural
     *        ordering} of the elements will be used.
     */
    public ConcurrentSkipListSet(Comparator<? super E> comparator) {
        m = new ConcurrentSkipListMap<E,Object>(comparator);
    }
Run Code Online (Sandbox Code Playgroud)

现在这是奇怪的事情:

  1. 添加新值“ some_str”->确定
  2. 添加新值“ some_els”-> 未添加
  3. 添加新值“ some”->确定

调试此现象后,我看到ConcurrentSkipListSet拒绝了新的唯一字符串,这些字符串的长度与集合中现有字符串的长度相同。

我就像瓦阿特(Waaaattt)?!?!? …

java java.util.concurrent java-8

6
推荐指数
1
解决办法
727
查看次数

如何使用摇摇码生成动态假装basePath的URI参数?

我有一个很简单的问题:)

根据伪装文档,它们支持通过api函数传递URI参数来动态更改伪装客户端对象的basePath,如下所示

好例子:

interface MyClient {
    @RequestLine("GET /internal-service")
    String internalService(URI baseUrl);
}
Run Code Online (Sandbox Code Playgroud)

关键是我正在使用swagger,后者从yaml文件生成我的API,并将@Param注释添加到所有函数参数,这对我不利。

不良示例:

interface MyClient {
    @RequestLine("GET {baseUrl}/internal-service")
    String internalService(@Param("baseUrl") String host);
}
Run Code Online (Sandbox Code Playgroud)

有没有办法让摇摇欲坠的生成器生成带有URI参数的API,而无需@Param批注?

预期结果示例:

interface MyClient {
    @RequestLine("POST /internal-service")
    String internalService(URI baseUrl, @Param("someParam") String someParam);
}
Run Code Online (Sandbox Code Playgroud)

swagger swagger-2.0 netflix-feign feign swagger-codegen

4
推荐指数
1
解决办法
1135
查看次数

Fluentd SSL/TLS 保护 TCP 输出插件到通用接收器 (Logstash)?

我一直在寻找 tcp 的 fluentd 输出插件,它也是 ssl 安全的,不会强制我的接收器来自特定类型。就我而言,我的接收器是 logstash。

以下是一些接近的插件(接近但没有雪茄):

转发输出- 不支持 ssl 连接。

安全转发输出- 仅将数据发送到另一个流畅的接收器。

有些是 https 插件,有些是特定的服务插件(需要某种令牌/用户/密码)。

我可以使用任何其他插件吗?也许有一些解决方法?

ssl rubygems tcp logstash fluentd

0
推荐指数
1
解决办法
2694
查看次数