1

我使用 Spring Boot 和 Undertow 开发了一个微服务。我正在通过“在 200 个线程中进行负载测试”来测试服务的性能。

某些请求因 502 错误而失败:“到许多打开的文件”

我的超限:

[root@server-886d5f4f8-54494 java]# ulimit -n
1048576

例如,如果我对 150 个线程进行负载测试,则应用程序运行时不会出现错误并每秒提供 15,000 个吞吐量。

pod 设置:请求 2 个 CPU,没有限制

暗流设置:

server:
  undertow:
    threads:
      worker: 128
      io: 16

1 个实例是否应该接受更多并发请求?例如 1000 或 10000?

我需要提供大约 5000 个并发连接/请求。在这种情况下我应该水平扩展(5000/20 = 25 个副本)还是 1 个实例能够处理更多并且我配置不正确?

更新

lsof | 负载测试期间的 wc -l 输出:9791(此计数远小于容器 1048576 中的 ulimit)

更新 2 在 Kubernetes 中启动的应用程序

Limit                     Soft Limit           Hard Limit           Units     
Max cpu time              unlimited            unlimited            seconds   
Max file size             unlimited            unlimited            bytes     
Max data size             unlimited            unlimited            bytes     
Max stack size            8388608              unlimited            bytes     
Max core file size        unlimited            unlimited            bytes     
Max resident set          unlimited            unlimited            bytes     
Max processes             unlimited            unlimited            processes 
Max open files            1048576              1048576              files     
Max locked memory         65536                65536                bytes     
Max address space         unlimited            unlimited            bytes     
Max file locks            unlimited            unlimited            locks     
Max pending signals       2059511              2059511              signals   
Max msgqueue size         819200               819200               bytes     
Max nice priority         0                    0
Max realtime priority     0                    0
Max realtime timeout      unlimited            unlimited            us   

更新 3

所有请求都通过 NodePort

4

0 回答 0