1

我正在对 vespa 进行性能测试,容器看起来很慢,无法处理传入的更多请求。查看vespa.log,有很多GC分配失败的日志。但是,系统资源非常低(CPU<30%,mem<35%)。有什么配置可以优化吗?

顺便说一句,看起来 docprocservice 默认在内容节点上运行,如何为 docprocservice 调整 jvmargs?

1523361302.261056        24298   container       stdout  info    [GC (Allocation Failure)  3681916K->319796K(7969216K), 0.0521448 secs]
1523361302.772183        24301   docprocservice  stdout  info    [GC (Allocation Failure)  729622K->100400K(1494272K), 0.0058702 secs]
1523361306.478681        24301   docprocservice  stdout  info    [GC (Allocation Failure)  729648K->99337K(1494272K), 0.0071413 secs]
1523361308.275909        24298   container       stdout  info    [GC (Allocation Failure)  3675316K->325043K(7969216K), 0.0669859 secs]
1523361309.798619        24301   docprocservice  stdout  info    [GC (Allocation Failure)  728585K->100538K(1494272K), 0.0060528 secs]
1523361313.530767        24301   docprocservice  stdout  info    [GC (Allocation Failure)  729786K->100561K(1494272K), 0.0088941 secs]
1523361314.549254        24298   container       stdout  info    [GC (Allocation Failure)  3680563K->330211K(7969216K), 0.0531680 secs]
1523361317.571889        24301   docprocservice  stdout  info    [GC (Allocation Failure)  729809K->100551K(1494272K), 0.0062653 secs]
1523361320.736348        24298   container       stdout  info    [GC (Allocation Failure)  3685729K->316908K(7969216K), 0.0595787 secs]
1523361320.839502        24301   docprocservice  stdout  info    [GC (Allocation Failure)  729799K->99311K(1494272K), 0.0069882 secs]
1523361324.948995        24301   docprocservice  stdout  info    [GC (Allocation Failure)  728559K->99139K(1494272K), 0.0127939 secs]

services.xml:
<container id="container" version="1.0">                                                                                               
    <config name="container.handler.threadpool">                                                                                         
        <maxthreads>10000</maxthreads>                                                                                                   
    </config>                                                                                                                            

    <config name="config.docproc.docproc">                                                                                               
      <numthreads>500</numthreads>                                                                                                      
    </config>                                                                                                                            

    <config name="search.config.qr-start">                                                                                               
      <jvm>                                                                                                                              
        <heapSizeAsPercentageOfPhysicalMemory>60</heapSizeAsPercentageOfPhysicalMemory>                                                  
      </jvm>                                                                                                                             
    </config>                                                                                                                            
    <document-api />                                                                                                                     

    <search>                                                                                                                             
        <provider id="music" cluster="music" cachesize="64M" type="local" />                                                           
    </search>                                                                                                                            

    <nodes>                                                                                                                              
      <node hostalias="admin0" />                                                                                                        
      <node hostalias="node2" />                                                                                                         
    </nodes>                                                                                                                             
  </container>   

# free -lh
              total        used        free      shared  buff/cache   available
Mem:           125G         43G         18G        177M         63G         80G
Low:           125G        106G         18G
High:            0B          0B          0B
Swap:            0B          0B          0B                         
4

2 回答 2

2

这些 GC 消息来自 jvm,是正常的,而不是真正的故障。这只是 JVM 的工作方式,收集应用程序创建的垃圾,所有这些都是来自年轻代的次要收集。如果您开始看到 Full GC 消息,则需要进行调整。

'docprocservice' 也不参与搜索服务,因此您可以放心地忽略这些服务测试。您的瓶颈很可能是底层内容层。那里的资源使用情况如何?无论如何,以 10K maxthreads 运行似乎过多,默认的 500 已绰绰有余——您使用的是哪种基准测试客户端?

于 2018-04-11T07:26:53.283 回答
1

一般来说,如果你提供帮助会更容易

  • 设置和硬件配置(例如 services.xml 和文档模式)
  • 正在使用什么类型的查询/排名配置文件,搜索的字段等。文档总数以及如果您使用自定义排名配置文件,结果与使用内置的“未排名”排名配置文件相比如何。
  • 返回的平均点击数 (&hits=x) 参数和平均总点击数
  • 资源使用情况(例如,当延迟开始攀升超过您的目标延迟 SLA(达到瓶颈/最大吞吐量)时,来自容器和内容节点的 vmstat/top/network util
  • 与上面相同,但只有一个客户端(无并发)。如果您已经超过了目标延迟 SLA/预期而没有并发,您可能需要查看正在使用的功能(例如,将 rank:filter 添加到未排名的字段,将快速搜索添加到查询中涉及的属性等等)
  • 使用的基准测试客户端(例如使用的连接数和参数)。我们通常使用 vespa-fbench 工具。

一些关于基准测试和分析 Vespa 的一般资源

于 2018-04-11T10:03:59.573 回答